[OSM-dev] Determining if two linestrings are "similar"

Jochen Topf jochen at remote.org
Fri Jan 4 13:50:27 GMT 2013


On Fri, Jan 04, 2013 at 01:49:44PM +0100, Paweł Paprota wrote:
> Here's an interesting problem I'm trying to tackle now in OWL...
> 
> You have two linestrings and the task is to determine if they are
> "similar" or not. Similar means spatially "the same" as looked at by
> human eye at zoom level 18 on a slippy map :-)
> 
> Note that the two geometries are not equal in ST_Equals sense. They
> don't have to intersect but can intersect or even be almost the same
> save for one node slightly moved.
> 
> OWL right now shows some changes that in fact are non-changes - e.g.
> using simplify way feature of JOSM changes way nodes but preserves
> (or only very slightly changes) way geometry. It is not a change
> worth processing and showing to the user.

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.

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

> 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.

Jochen
-- 
Jochen Topf  jochen at remote.org  http://www.remote.org/jochen/  +49-721-388298



More information about the dev mailing list