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 _______________________________________________ Talk-de mailing list Talk-de@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-de