I am mainly interested in why and how the Simplify Polygons tool in ArcGIS for Desktop handles the simplification process, including preventing and resolving topological errors better than the equivalent ST_SimplifyPreserveTopology in PostGIS destroys topology when trying to simplify to similar levels.

Use case scenario: PostGIS database queried for vectorr GeoJSON polygon overlay in Leaflet. One can pass the ST_SimplifyPreserveTopology to the geometry field but my tests have shown that preprocessing data in ArcGIS gives me smaller datasets and topological correctness.

Here is an example:

Case 1 - Original data

enter image description here

Case 2 - ST_SimplifyPreserveTopology(the_geom,0.001)the_geom

enter image description here note: querying from CartoDB

Further, when simplifying Case 1's data in ArcGIS for Desktop, there are no topology errors produced (ArcGIS for Desktop can resolve all errors).

  • 2
    "ST_SimplifyPreserveTopology(the_geom,001)" What are your units? Feb 17 '12 at 23:48
  • Sorry, typo! 0.001 in EPSG:4326 Feb 18 '12 at 0:08
  • Have you tried a smaller value? 0.001 degrees is quite big.
    – underdark
    Feb 18 '12 at 10:06

Both ArcGIS and PostGIS use the Douglas-Peucker algorithm for simplification. This performs what ESRI calls point-remove simplification. ESRI also does a bend simplify which uses shape recognition (Wang) and not Douglas-Peucker.

Therefore, assuming you are using point-remove for your simplification in Arc, there are two options to explain the differences I can think of:

  1. The tolerance has been set differently in Arc compared to PostGIS (possible if you are just accepting defaults)
  2. ESRI has an environment parameter for snapping vertices together, which may be resulting in the smaller final dataset by snapping a lot of vertices as a by-product of the process.

As for topological correctness, until recently I would have expected you to say that it was ESRI who were getting it wrong (because that was my experience of doing this sort of operation), but recent simplification work in Arc10 has given me no topological errors - so presumably they fixed something! I'm afraid, though, I don't know why PostGIS is breaking the topology.

[MORE INFO AS PER REQUEST] ArcGIS has a setting that determines the minimum allowable XY separation of vertices. If the vertices fall below this tolerance, they are automatically snapped. This tolerance masquerades under three names:

  1. XY Tolerance (settable as an environment parameter)
  2. 'Cluster Tolerance' (Settable as part of a topology definition)
  3. 'Fuzzy tolerance' in the good old days of Coverages (unless you use Coverages - ignore this... but it is essentially the same thing).

The first two are synonymous but ESRI likes to proliferate obfuscation. ArcGIS sets this automatically based on some magic formula it determines, which means it can change when you do operations on your data. However, you can also set this yourself - a trick I often use to automatically reduce the data density following all sorts of operations.

  • you can add to this that the underlying snapping grid may be different Feb 17 '12 at 16:29
  • @RagiYaserBurhum I've added an update to my question. Do you think the snapping grid is related to what is happening in my example? Feb 17 '12 at 18:56
  • @SylvesterSneekly Thank you for the answer, but could you please expand upon or reference vertices level snapping, as I believe it may be relavant to my problem. I've updated my question for you to take a look at the case study example. ArcGIS verifies the geometry ("check geometry") of the original data to have 0 errors. Feb 17 '12 at 18:58
  • 1
    @Michael More info on XY tolerance added. The PostGIS results look a lot like what used to happen in ArcGIS in earlier versions. Sometimes a self-integration of the data achieved an acceptable fix on the topology errors. Feb 18 '12 at 11:31

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.