FME Version
Files
Introduction
A common question when choosing a coordinate system is which spatial properties you wish to preserve. A projection may preserve a feature's shape (conformal), area (equal-area), length (equidistant), or direction (azimuthal); or it may be a combination that is a compromise of all these properties.
An additional consideration is that some coordinate systems only preserve a spatial property at a particular point or line, and that further away from the line that property becomes distorted.
When measuring features the most common question is which units of measurement you want to use, and this relates to the coordinate system. FME always measures using the units of the current coordinate system and you wouldn't, for example, be able to measure areas in square meters when the data is stored in a latitude/longitude system.
In this tutorial we will look at how to apply coordinate systems in FME while measuring the area of neighborhoods in the city of Vancouver, to get the required units and minimizing distortion.
Video
Source Data
The source data for these examples is a vector polygon dataset in Google KML format. In the FME Data Inspector it looks like this:
Each polygon represents a different neighborhood in the city of Vancouver. We wish to measure the area of each neighborhood in square meters.
Step-by-Step Instructions
1. Start FME Workbench and begin with an empty canvas. Select Readers > Add Reader from the menubar.
Set the data format to Google KML. Select the attached data as the source dataset. When prompted deselect all feature types and re-select only the Neighborhoods layer.
2. Add an AreaCalculator transformer to the workspace and connect it to the reader feature type:
This will calculate the area of each polygon in decimal degrees (not particularly useful).
3. Add a Reprojector transformer connected to a second connection from the reader feature type. Open the parameters and set the destination coordinate system to CANADA-ALBERS:
Add another AreaCalculator transformer, this time connected to the Reprojector:Reprojected output port.
CANADA-ALBERS is a coordinate system based on an equal-area projection. With this we should get results that are close to the correct size.
4. Add a second Reprojector transformer, again connected to a new connection from the reader feature type. Open the parameters and set this destination coordinate system to _AZMEA_
Now add yet another AreaCalculator transformer, this one connected to the new Reprojector's output port.
_AZMEA_ is an equal-area coordinate system in FME that is "dynamic" - each feature gets its own coordinate system with standard/origin lines based on that feature. That way distortion is minimized as much as possible. The equal-distance equivalent is called _AZMED_.
The workspace will now look like this:
5. Add a CoordinateSystemExtractor transformer to each of the AreaCalculator:Output ports:
This transformer will record the coordinate system being used as an attribute, something that will help us to differentiate the different results when we run this translation.
6. Add a final Reprojector transformer, this one connected to the CoordinateSystemExtractor:Output port. This time the Reprojector should be set up to transformer the features back to LL84:
This is important because quite often you'll want to reproject from LL84 to a coordinate system based on meters, but after the measurement, you want to the data back in LL84.
It's also important for this example so that all of the features display in the same geographic location in the Data Inspector.
7. Add an Inspector transformer after the final Reprojector transformer. Now run the translation.
The results (in the Table View window) will look like this:
You'll see that the LL84 result measures the area in decimal degrees.
The other two results are in meters and are very similar. The slight differences are because CANADA-ALBERS is centered around an origin point of -100 Longitude, 55 Latitude, whereas the dynamic _AZMEA_ coordinate system calculates origin points for each different feature (you can see the origin point in the coordinate system name). That means the _AZMEA_ result is more reliable because it is measured closer to the origin point and so has less distortion.
Comments
0 comments
Please sign in to leave a comment.