Skip to main content

I have two datasets, where one (a) is holding x/y/z coordinates and the other (b) contains a distance value.

 

I created a line, based on the coordinates from dataset a, and after densifying the line used a measure to get values I can compare to the distance values provided by dataset b.

 

The distance and measure values are not perfect matches, and I would like to accumulate the attributes from dataset b to dataset a based on an a rule like the following:

 

IF 'ref_length' >= 'start_length' AND 'ref_length' < 'end_length'

 

This is what I have so far

workflow 

Hi,

You may have solved this already, but I will attach a potential workflow for any future users who come across this.

I would suggest:

  • Joining all the feature ranges from Dataset B onto Dataset A using a FeatureMerger
    • Set Process Duplicate Suppliers = Yes
    • Set Generate list = Yes
    • Set List Name = 'attribute_list'
    • Set Add to List = All Attributes
  • Exploding the list of relationships using ListExploder
    • List Attribute = attribute_list{}
  • Testing the resulting relationships 'ref_length' >= 'start_length' AND 'ref_length' < 'end_length'
    • You could use In Range instead

imageIt's not the most efficient process, because the number of relationships will equal (Dataset A count)*(Dataset B count) which can get large quickly.

------------------------------------------------------------------------------------------------------------------------------------------

 

Alternatively, you could use an InlineQuerier with a custom SQL statement with the following configuration:

imagewhere the SQL Query is

SELECT Dataset_A.*, Dataset_B.*

 

FROM Dataset_A CROSS JOIN Dataset_B

 

WHERE Dataset_A.ref_length >= Dataset_B.start_length AND Dataset_A.ref_length < Dataset_B.end_length;

image 


Reply