I have two feature classes: One contains manholes (points) and the other contains sewer mains (polyline). I need to gather the Unit ID (text field) assigned to the manhole at the start of the sewer main and place it into a field ('StartID') in the sewer main table.
I'm trying to create an attribute rule that will do such a thing. Can anyone provide some insight as I'm not having any values returned? Thanks in advance.
Here's my code:
var manholeID = FeatureSetByName($datastore, 'Exported_Manholes', ['UNITID'], true)
var start_point = Geometry($feature).paths[0][0]
if(Intersects(start_point, $feature)){
return manholeID
}
return ERROR
I figured this out and thought I'd share.
For context:
Manholes (points) each have a UNITID. For example one manhole is A1-123 and another manhole is A1-456.
Sewer Mains have a start point and an end point. The start point is stored in a column called UNITID and the end point in another column called UNITID2 in the Sewer Mains attribute table.
To capture the UNITID from the "start" manhole, I created the following attribute rule for the UNITID field in the Sewer Mains attribute table:
var manhole = FeatureSetByName($datastore, 'Exported_Manholes', ['*'], true)
var start_point = Geometry($feature).paths[0][0]
var intersectLayer = Intersects(manhole, start_point)
for (var f in intersectLayer){
return f.UNITID
}
To capture the UNITID from the "end" manhole, I created the following attribute rule for the UNITID2 field in the Sewer Mains attribute table:
var manhole = FeatureSetByName($datastore, 'Exported_Manholes', ['*'], true)
var end_point = Geometry($feature).paths[-1][-1]
var intersectLayer = Intersects(manhole, end_point)
for (var f in intersectLayer){
return f.UNITID
}
I'm curious what others think of this/how they would do it. I guess if it works, it works though...
The previous reply worked but would not return <null> if the line segment end point was moved off the point. The following fixes that issue:
var manhole = FeatureSetByName($datastore, 'Exported_Manholes', ['*'], true)
var start_point = Geometry($feature).paths[0][0]
var intersectLayer = Intersects(manhole, start_point)
var startID = First(intersectLayer)
if (startID == null){
return null
}
return startID.UNITID