Snap-rounding might help somewhat, to deal with very small slivers. But
(as usual in data cleaning issues) its usefulness is going to be
dependent on the nature of the errors in the dataset. In my experience,
snap-rounding is more of a technique for improving the robustness of
overlay computation, rather than a general technique for gap/sliver
elimination. If the only thing wrong with the data is due to some minor
jitter in the coordinate precision, then SR can work. But often
datasets have gaps/slivers which are relatively large, to the point
where you would have to snap to a very coarse grid to get rid of them
all. This would lose too much precision in the coordinates. At this
point more specific algorithms are required to remove slivers.
But SR would certainly be worth having in the toolbox, for use when
necessary.
One slight issue is that SR has to be performed globally on a dataset,
not on pairwise geometries. So it could be built in to the ST_union
aggregate, but I'm not sure how you'd provide it in a more granular way.
strk wrote:
I was having similar issues with unioning country boundaries
from the gadm dataset [1], and was thinking how would snaprounding
deal with the issue (ie: what brings in, what dangers introduces).
What do you think Martin ?
Maybe it'd be worth exposing the snapping version more, possibly
taking a tolerance explicitly.
[1] http://www.gadm.org/
--strk;
() Free GIS & Flash consultant/developer
/\ http://strk.keybit.net/services.html
On Tue, Apr 13, 2010 at 09:05:07AM -0700, Martin Davis wrote:
PostGIS (actually GEOS, which mirrors JTS) doesn't use a tolerance
during geometry union operations. It's possible that Arc does, which is
why you're seeing a difference.
What this indicates is that your data is not 100% cleanly noded. You
could try snapping all your data to a small-size grid - that can
sometimes fix problems of this sort. Although it may also introduce
gaps...
Lee wrote:
Hi all, First post but have been lurking for a long time.
In the process of migrating some geoprocessing procedures over to our open
source stack, I came across a difference in results from postgis' st_union
vs. arcgis' dissolve. From what I can tell these functions should be
synonymous in theory, despite their naming. (?)
It seems like st_union is not doing a "clean" union, some slivers are
remaining.
Original parcel fabric: http://quimby.ca/original.jpg
Dissolved by ArcGIS: http://quimby.ca/dissolved_by_arcgis.jpg
st_union by postgis: http://quimby.ca/dissolved_by_postgis.jpg
The input to both functions was the same table in postgis. I am defining
the geometry simply as select
st_union(current_assessment_parcel.the_geom) AS the_geom
Postgresql 8.4.1
Postgis 1.4
Is this simply a difference in tolerance? or am I seeing something else
here.
Thanks,
Lee.
--
Martin Davis
Senior Technical Architect
Refractions Research, Inc.
(250) 383-3022
_______________________________________________
postgis-users mailing list
[email protected]
http://postgis.refractions.net/mailman/listinfo/postgis-users