[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