[postgis-users] Extract nodes in a Polygon Mosaic (Topology)
Andreas Neumann
a.neumann at carto.net
Thu Oct 18 08:43:55 PDT 2007
Thank you Carl for your example!
I am still trying to get this working. In your example, what is "taxpin"?
Is this a unique id for each tax parcel polygon? Also, is it intentional
that you have two times a.taxpin != b.taxpin ? or should the second time
be a.taxpin != c.taxpin ?
I tried to adopt your example to my table, but I don't get any records as
a result. Here is my query:
SELECT
AsText(ST_Intersection(ST_Intersection(a.the_geom,b.the_geom),c.the_geom)),
a.gid, b.gid, c.gid
FROM gemeinden a, gemeinden b, gemeinden c
WHERE
a.gid != b.gid AND b.gid != c.gid AND
ST_DWithin(a.the_geom,b.the_geom,0) AND
ST_DWithin(c.the_geom,ST_Intersection(a.the_geom,b.the_geom),0)
;
And here my table definition:
CREATE TABLE gemeinden
(
gid serial NOT NULL,
gmde smallint,
bezirk smallint,
kt smallint,
name character varying(40),
the_geom geometry,
CONSTRAINT gemeinden_pkey PRIMARY KEY (gid),
CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),
CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) =
'MULTIPOLYGON'::text OR the_geom IS NULL),
CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 21781)
)
WITH (OIDS=FALSE);
I am not sure I fully understand the query. I understand the first part
with the geometry intersection and the part where you want to make sure
that one gets neighbour polygons but I don't understand the rest of the
query and why it fails in my example given above.
Thanks for getting back about my problem.
Andreas
> You don't need to build topology.
>
> Have you tried something like:
>
> select intersection(intersection (a.shape,b.shape),c.shape) , a.taxpin,
> b.taxpin, c.taxpin
> from tax.parcel a, tax.parcel b, tax.parcel c
> where
> a.taxpin != b.taxpin and
> a.taxpin != b.taxpin and
> st_dwithin(a.shape,b.shape,0) and
> st_dwithin(c.shape,intersection (a.shape,b.shape),0)
> ;
>
>
> In human terms
> find the intersection of a tax parcel with the intersection of two
> other parcels that share an edge (they have an intersection)
> The intersection of an edge (line) and a no overlapping polygon would be
> a point.
>
> If your table has overlapping polygons this will return a slightly
> different result.
>
>
> You can order or group the results by
> astext(intersection(intersection (a.shape,b.shape),c.shape))
>
> To find nodes with more than three members.
>
> C.
>
>
> Andreas Neumann wrote:
>> Hello all,
>>
>> I have a polygon mosaic (lets say administrative units, municipalities)
>> and would like to get a list of nodes where 3 or more polygons meet or 2
>> polygons depart at the edge of the mosaic. Is there any straight forward
>> way to extract these nodes?
>>
>> I have read about topology support in Postgis and found this:
>> http://postgis.refractions.net/support/wiki/index.php?PostgisTopology -
>> whats the state of this project?
>>
>> Thanks for any hints on my two questions.
>>
>> Andreas
>>
>>
>>
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users
>
--
Andreas Neumann
Böschacherstrasse 6, CH-8624 Grüt/Gossau, Switzerland
Email: a.neumann at carto.net, Web:
* http://www.carto.net/ (Carto and SVG resources)
* http://www.carto.net/neumann/ (personal page)
* http://www.svgopen.org/ (SVG Open Conference)
* http://www.geofoto.ch/ (Georeferenced Photos of Switzerland)
More information about the postgis-users
mailing list