3

Using ArcGIS 10.3 I have a dataset containing polylines of a pipe network, along which I have a polygon layer representing a burst every 50m. The burst layer contains a value (p) and a unique ID (the center-point x_y).

For each pipe in the dataset I want to join the max. p value that it intersects, but also take the unique ID so that I know which burst event is the worst for any of the pipes. A standard spatial join will output the max. p value but not the ID.

So, in the image below the highlighted section of pipe intersects 4 burst events, I can do a spatial join to link the max value of 9 to this pipe, but how do I also record the unique ID of X_Y - in this case 4,2?

Example

1

In addition to the One to One Spatial Join that you have done, I would also do a One To Many Spatial Join with the Segments as the Target to create all of the links of segments to your polygons. Then use my tool to convert a Multiple Field Key to a Single Field key with the summary Spatial Join as the Primary table and the One to Many Spatial Join as the Secondary Table. You would match up the fields in the two sources for the Segment ID and P (or Max P) number fields.

The output of my tool will create a CASE_ID field with a positive unique ID to each segment in the One to Many output that matches the Summary output. A value of -1 will be applied the CASE_ID field for all segments that do not match on the Max P value. You can extract the set of segments with positive CASE_ID numbers from the One to Many output. The result will contain the segment ID along with the Polygon ID and P value of just the polygon with the Maximum P value for the segment. Unless multiple polygons associated with a segment have the same Max P value there will only be one of each segment in the final result.

1

I have ended up using a solution outside of the Arc software:

The first step was to intersect the pipe layer with the bursts to get sections of pipes recording all of the individual burst properties. A unique ID was then added to identify each of these parts.

In excel a pivot table was created listing all of the pipe ID's along with the maximum P value. A VLOOKUP was then used in the raw data to check if the P value for each record matched the max value providing a true or false. This resulted in a list of pipe sections that intersected the max P value.

It was then possible to bring this back into the GIS and pipe geometry using the unique ID.

However, what I then wanted to do was link the pipe ID back to to the relevant burst layer - so essentially switch the geometry from the line to the polygon. Since there is no way of doing this in Arc the data was dropped into PostGIS (by a colleague).

In PostGIS the intersected layer was joined to the bursts using the burst X_Y, the bursts where the max P value was true were retained and the other records were dropped. Crucially duplicate records of the burst were created where the same burst had the max P value but intersected multiple pipe sections.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.