[Talk-de] postgresql (osmosis schema) liste von nodes -> Polygon?
Sarah Hoffmann
lonvia at denofr.de
Do Jun 9 19:05:35 UTC 2011
On Thu, Jun 09, 2011 at 06:48:54PM +0000, Sven Geggus wrote:
> Hallo zusammen,
>
> vielleicht kann ja jemand von euch ein wenig helfen.
>
> Ich versuche einen SQL Befehl zu basteln, der Mittelpunkt einer
> Fläche ausgibt (ST_PointOnSurface).
>
> Dazu muss man wohl zuerst aus Punkten eine Fläche machen und dann mit
> hilfe von ST_PointOnSurface den Mittelpunkt der Fläche zu ermitteln.
>
>
> osmdb=> select nodes from ways where id=99382824;
> nodes
> ----------------------------------------------------------
> {1149487195,1149487106,1149487674,1149487557,1149487195}
> (1 Zeile)
>
> Da fängt jetzt mein Problem schon an. "nodes" ist ein bigint[]
>
> Wie mache ich jetzt ein select für alle diese nodes in der Liste?
>
> Also folgendes hätte ich gerne:
>
> * liste der nodes aus Tabelle ways
> * geometrien aller dieser nodes aus Tabelle nodes
> * Polygon aus disen Geometrien (ST_????)
> * ST_PointOnSurface(Polygon)
SELECT ST_PointOnSurface(ST_MakePolygon(ST_MakeLine(n.geom)))
FROM (SELECT unnest(nodes)
FROM ways WHERE id = 99382824) as w, nodes n
WHERE w.unnest = n.id;
aber ich wuerde es eher damit versuchen (geht schneller):
SELECT ST_Centroid(ST_Collect(n.geom))
FROM (SELECT unnest(nodes)
FROM ways WHERE id = 99382824) as w, nodes n
WHERE w.unnest = n.id;
Und vermutlich willst du auch noch in 900913 transformieren.
Sarah
Mehr Informationen über die Mailingliste Talk-de