Hi Jochen,

On 01/04/2013 02:50 PM, Jochen Topf wrote:

You can create a buffer (with ST_Buffer) around one geometry and then see
whether the other geometry is inside this buffer or not. Unfortunately that
is a rather expensive operation, so it might be too slow for your use.


Yeah, Kompza on IRC suggested a similar solution with ST_Buffer. I will try that.

I came up with something else:

st_equals(
        st_snaptogrid(st_segmentize($1, 0.00002), 0.0002),              
        st_snaptogrid(st_segmentize($2, 0.00002), 0.0002)
);

Unfortunately this is slow for long linestrings, perhaps even slower than ST_Buffer.

If the number of nodes in a way didn't change you could optimize by just
comparing them coordinate by coordinate.


Yes, it's also easy to determine that they are NOT similar so that I can jump out early from further processing.

I tried ST_HausdorffDistance[1] from PostGIS but for now it does not
yield useful results or maybe I am misinterpreting them.

Any ideas?

http://www.postgis.org/docs/ST_HausdorffDistance.html

The documentation says "This is the Hausdorff distance restricted to discrete
points for one of the geometries." I am not sure what the consequences of
that are, but it might be too restrictive for your use.


Exactly, the most problematic cases are linestrings with different set of nodes. That's why I had to add the expensive ST_Segmentize in my solution above - to make snapping work.

I also found Frechet distance[1] which looks more interesting than Hausdorff for my use but it's not implemented in GEOS/PostGIS and it would probably need a similar operation to segmentization.

On the other hand, it was suggested on IRC that OWL should not really filter out such non-changes and show everything. I'm trying to filter them out to speed up processing, whether it makes sense to do it from user perspective I don't know... I personally don't care too much about ways that were simplified (without topology changes) or changed only very slightly. Other opinions are welcome...

[1] http://www.cim.mcgill.ca/~stephane/cs507/Project.html

Paweł


_______________________________________________
dev mailing list
[email protected]
http://lists.openstreetmap.org/listinfo/dev

Reply via email to