[postgis-users] Help with Query

Stephen Woodbridge woodbri at swoodbridge.com
Fri Jan 11 17:03:01 PST 2013


On 1/11/2013 7:20 PM, Clifford Snow wrote:
> First off, I'm a new at Postgis so please let me know if the right
> response to my question is RTFM.
>
> I have the NHD streams for my state that I want to import into
> OpenStreetMap. When I select just the streams that I'm interested in I
> find that there are numerous short linestrings (2 nodes) that I'd like
> to get rid of. These linestrings are only connected at one end.  It
> seems like ST_Touches() would find them. I did a simple query of
>
> SELECT s1.gid, s2.gid from flowlines s1, flowlines s2 WHERE
> ST_Touches(s1.geom,ST_PointN(s2.geom,1) and s2.pointcount = 2;
>
> It returns 0 rows. Changing the point on s2.geom to 0 makes no difference.
>
> Anyone have a suggestion of how I find 2 node streams that connect to
> another stream?

You might try creating a topology. I have not actually done this myself 
since I using pgRouting for a lot of stuff and it has its own topology 
tools for building graphs that I'm more familiar with.

You also might try using st_dwithin( geom1, geom2, tolerance )
where tolerance needs to be in the units of your data.

select s1.gid, s2.gid
   from flowlines s1, flowlines s2
  where s2.pointcount = 2
        and st_dwithin(s1.geom, s2.geom, 0.000001 )
        and s1.gid != s2.gid;

YMMV,
   -Steve


More information about the postgis-users mailing list