Thursday, December 17, 2009

Flagging intersection points with elevation differences

Typical GIS applications have the capability to determine unbroken intersections but only from the perspective of a 2D plane i.e. as if the spatial intersection analysis is done only after the line work is projected entirely onto the 2D plane; if the line work has a elevation or Z component, then the Z component is ignored entirely in the analysis. In 3D GIS applications like terrain modeling, sometimes it is useful to be able to determine the elevation difference of the line work at the point of intersection. If one spatial feature represents a lake, then a river line feature flowing out of the lake should have the same elevation at the point of intersection. It would be useful to be able to flag the intersection points that have elevation differences.

In the example dataset below, there are a few line features with different elevation values - the values are labelled along the line work. All of them are at 0 elevation except for one, which is on 10 elevation.

We want to flag out the intersection point where there is a difference in elevation. One of the tools that can help us perform this is Safe FME. FME has some transformers that you can string together to perform the flagging of intersection points with elevation differences.

  1. Run FME Workbench. Add in a Source Dataset e.g. lines.shp. Add in a Destination Dataset e.g. flags.shp.

  2. Drag and drop the Intersector, Matcher, Counter Transformers onto the Main pane. Connect them up as shown in the figure below.


    Note: the Counter transformer is used to simply count the number of flags.

  3. Open up the Intersector transformer's Parameters. The settings should be set as shown below.


    Note: Duplicate Nodes as Each Elevation should be set to Yes. Then when an elevation difference is detected at the point of intersection, the Intersector transformer will output 2 nodess.

  4. Open up the Matcher transformer's Parameters.The settings should be set as shown below.


    Note: The Matcher will find(match) all duplicate nodes i.e. the nodes that have elevation differences. 

  5. Run the translation.

    The intersection points where there are elevation differences are flagged (shown as a red cross below).


1 comment:

Frustrated, but who cares said...

Identifying Z differences can be done in GeoMedia. Input a feature class into a Functional Attribute, convert the geometry to points and calculate the Z of each point (output example: River_points). Run a Spatial Intersection of the output points (River_points) that are coincident with the same points (River_points). Run an Attribute Query where the objectID <> objectID and the elevation of feature 1 is <> the elevation of feature 2.