[postgis-users] Measure distance to nearest border

Andreas Forø Tollefsen andreasft at gmail.com
Wed Oct 13 01:49:15 PDT 2010


Hi all,

I have two datasets. On is a quadrate grid, and the other is the boundaries
of all countries.
What i want to do is to measure the distance from each centroid of the grid
cells to the nearest border, but not all borders. Only the international.

First i convert my country polygon dataset into line features:
select gwcode, gwsyear, gweyear, ST_Boundary(the_geom) AS line Into
cshapes_line from cshapes;

Next i calculate the distance from the centroid of each cell to the nearest
border where the gwcode (country code) of the cell is the same as the gwcode
in the line feature.
drop table if exists borddisttest;
select pgfinal2008.cell, pgfinal2008.gwcode,
ST_ShortestLine(pgfinal2008.centroid, st_boundary(cshapes.the_geom))
AS shortestline, ST_Distance(geography(pgfinal2008.centroid),
st_boundary(cshapes.the_geom))/1000 AS borddist
into borddisttest
from cshapes, pgfinal2008
where cshapes.gwcode = pgfinal2008.gwcode;

The problem here is that when using ST_Boundary, it converts all boundaries
into lines, while i only want to get the boundaries where two polygons with
different gwcodes meet.
The lines where two countries meet are overlapping, meaning these borders
have two gwcodes but in different line entries.

Is there a way to calculate the overlaps within one dataset? If i could do
this, then i could put a clause so the measurement only measures to lines
with 2 or more gwcodes.

Thanks.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20101013/5b52c5a9/attachment.html>


More information about the postgis-users mailing list