Re: [Talk-de] postgresql (osmosis schema) liste von nodes -> Polygon?

2011-06-09 Thread Sarah Hoffmann
On Thu, Jun 09, 2011 at 06:48:54PM +, 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


Re: [Talk-de] postgresql (osmosis schema) liste von nodes -> Polygon?

2011-06-09 Thread Alexander Matheisen
Jetzt mal generell:
Warum kann man nicht wie bisher mit osm2pgsql eine hstore DB updaten?
Warum braucht man osmosis? Bei dem bisherigen Datenbankschema kann man
ja auch andere Tabellen herausfiltern und wir haben nicht die Probleme,
wie man dies oder jenes nun abfragt.


Alex


___
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de


Re: [Talk-de] postgresql (osmosis schema) liste von nodes -> Polygon?

2011-06-09 Thread Walter Nordmann
ganz einfach:

weil die mit osm2pgsql erzeugte datenbank besser zum rendern geeignet ist
und die mit osmosis im snapshot-schema gepflegte dafür vielseitiger ist.

beide haben ihre vor- und nachteile.

gruss
walter


-
Wenn du den Wald vor lauter Bäumen nicht siehst, fälle die Bäume und du wirst 
sehen, dass da kein Wald ist.
--
View this message in context: 
http://gis.638310.n2.nabble.com/postgresql-osmosis-schema-liste-von-nodes-Polygon-tp6459170p6459444.html
Sent from the Germany mailing list archive at Nabble.com.

___
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de


Re: [Talk-de] postgresql (osmosis schema) liste von nodes -> Polygon?

2011-06-09 Thread Walter Nordmann
st_centroid berechnet die Mittelpunkt des Polygons; dieser kann aber bei
bestimmten Formen des Polygons durchaus ausserhalb der Fläche liegen (z.B.
Bumerang oder U).

st_pointOnSurface garantiert, dass der Punkt innerhalb der Fläche liegt;
dieser kann aber nicht immer im Zentrum sein, wenn da ein Stück fehlt.


gruss
walter

p.s. das gilt übrigens für ALLE Datenbank-Schemata, die hier so benutzt
werden - auch das mit osm2pgsql erzeute. Wenn die Mapnik-Leute im Template
für das Rendern  den centroid gegen pointonsurface auswechseln würden, lägen
manche Ortsbezeichnungen nicht mehr auf fremden Stadtgebiet. (Eltville am
Rhein)

-
Wenn du den Wald vor lauter Bäumen nicht siehst, fälle die Bäume und du wirst 
sehen, dass da kein Wald ist.
--
View this message in context: 
http://gis.638310.n2.nabble.com/postgresql-osmosis-schema-liste-von-nodes-Polygon-tp6459170p6459492.html
Sent from the Germany mailing list archive at Nabble.com.

___
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de


Re: [Talk-de] postgresql (osmosis schema) liste von nodes -> Polygon?

2011-06-09 Thread Walter Nordmann

Alexander Matheisen wrote:
> 
> Warum kann man nicht wie bisher mit osm2pgsql eine hstore DB updaten?
Das mit osmosis erzeugte snapshot-schema enthält selbstverständlich auch
einen hstore.

Ausserdem haben "wir" keine Probleme damit - eventuell nur du?

Gruss
Walter

-
Wenn du den Wald vor lauter Bäumen nicht siehst, fälle die Bäume und du wirst 
sehen, dass da kein Wald ist.
--
View this message in context: 
http://gis.638310.n2.nabble.com/postgresql-osmosis-schema-liste-von-nodes-Polygon-tp6459170p6459514.html
Sent from the Germany mailing list archive at Nabble.com.

___
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de


Re: [Talk-de] postgresql (osmosis schema) liste von nodes -> Polygon?

2011-06-09 Thread Sven Geggus
Alexander Matheisen  wrote:

> Warum kann man nicht wie bisher mit osm2pgsql eine hstore DB updaten?

Weil es keinen Sinn ergibt wenn wir sowieso Spezialdatenbaken
erzeugen. Die osmosis Datenbank ist einfach universeller und hat
außerdem auch schon länger ebenfalls einen hstore.

Gruss

Sven

-- 
How to prevent Java from forking? Use a spoon.
(Found on http://slashdot.org)

/me is giggls@ircnet, http://sven.gegg.us/ on the Web

___
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de


Re: [Talk-de] postgresql (osmosis schema) liste von nodes -> Polygon?

2011-06-09 Thread Sarah Hoffmann
On Thu, Jun 09, 2011 at 01:26:38PM -0700, Walter Nordmann wrote:
> st_centroid berechnet die Mittelpunkt des Polygons; dieser kann aber bei
> bestimmten Formen des Polygons durchaus ausserhalb der Fläche liegen (z.B.
> Bumerang oder U).
> 
> st_pointOnSurface garantiert, dass der Punkt innerhalb der Fläche liegt;
> dieser kann aber nicht immer im Zentrum sein, wenn da ein Stück fehlt.

Korrekt. Die Centroid-Methode hat aber den Vorteil, dass sie immer
funktioniert, selbst dann, wenn das Polygon gerade kaputt ist.
Es kommt halt auf den Anwendungsfall an.

Gruss

Sarah

___
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de


Re: [Talk-de] postgresql (osmosis schema) liste von nodes?->?Polygon?

2011-06-09 Thread Sven Geggus
Sarah Hoffmann  wrote:

> 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;

Danke! Das sieht doch schonmal gut aus:

http://www.openstreetmap.org/?zoom=18&mlat=48.22436155&mlon=8.58008285781844

900913 brauch ich dafür nicht. Soll ja kml werden.

Gruss

Sven

-- 
"Der wichtigste Aspekt, den Sie vor der Entscheidung für ein Open
Source-Betriebssystem bedenken sollten, ist, dass Sie kein
Windows-Betriebssystem erhalten." (von http://www.dell.de/ubuntu)
/me is giggls@ircnet, http://sven.gegg.us/ on the Web

___
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de


Re: [Talk-de] postgresql (osmosis schema) liste von nodes -> Polygon?

2011-06-09 Thread Alexander Matheisen
Am Donnerstag, den 09.06.2011, 13:32 -0700 schrieb Walter Nordmann:
> Alexander Matheisen wrote:
> > 
> > Warum kann man nicht wie bisher mit osm2pgsql eine hstore DB updaten?
> Das mit osmosis erzeugte snapshot-schema enthält selbstverständlich auch
> einen hstore.
> 
> Ausserdem haben "wir" keine Probleme damit - eventuell nur du?

Ich sicher nicht, aber wenn das neue System keinen nennenswerten Vorteil
bringen würde, dann muss man sich ja nicht unnötige Arbeit machen.

Waren auch nur Überlegungen eines Außenstehenden. Nun weiß ich ja auch,
warum die osmosis-Lösung besser ist.


Alex


___
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de


Re: [Talk-de] postgresql (osmosis schema) liste von nodes -> Polygon?

2011-06-09 Thread Alexander Matheisen
Am Donnerstag, den 09.06.2011, 20:38 + schrieb Sven Geggus:
> Alexander Matheisen  wrote:
> 
> > Warum kann man nicht wie bisher mit osm2pgsql eine hstore DB updaten?
> 
> Weil es keinen Sinn ergibt wenn wir sowieso Spezialdatenbaken
> erzeugen. Die osmosis Datenbank ist einfach universeller und hat
> außerdem auch schon länger ebenfalls einen hstore.

Wie werden die Spezialdatenbanken erzeugt? Ein simples INSERT/SELECT?


Alex


___
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de


Re: [Talk-de] postgresql (osmosis schema) liste von nodes -> Polygon?

2011-06-10 Thread Sven Geggus
Alexander Matheisen  wrote:

> Wie werden die Spezialdatenbanken erzeugt? Ein simples INSERT/SELECT?

/s/datenbanken/tabellen

Sorry

Sven

-- 
Den Rechtsstaat macht aus, dass Unschuldige wieder frei kommen
(Wolfgang Schäuble)

/me is giggls@ircnet, http://sven.gegg.us/ on the Web

___
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de


Re: [Talk-de] postgresql (osmosis schema) liste von nodes -> Polygon?

2011-06-10 Thread Alexander Matheisen
Am Freitag, den 10.06.2011, 07:49 + schrieb Sven Geggus:
> Alexander Matheisen  wrote:
> 
> > Wie werden die Spezialdatenbanken erzeugt? Ein simples INSERT/SELECT?
> 
> /s/datenbanken/tabellen

Statt hier so kleinlich die Fehler anderer zu verbessern, könntest du
mal direkt auf meine Frage antworten. Ich fasse deine Reaktion einfach
mal als "Ja" auf.


Alex



___
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de


Re: [Talk-de] postgresql (osmosis schema) liste von nodes -> Polygon?

2011-06-10 Thread Sven Geggus
Alexander Matheisen  wrote:

> Statt hier so kleinlich die Fehler anderer zu verbessern

Dir ist aber schon klar, dass ich einen Fehler von _mir_ selbst korrigiert
habe. Also nochmal zum mitschreiben: Ich habe fälschlicherweise Datenbanken
geschrieben anstatt Tabellen.

Die Idee ist, dass ich eine neue Datenbank mit osmosis schema aufsetze und
sich jeder für seine Anwendungen daraus per SQL script, shell, perl, python
oder was auch immer, einmal am Tag oder so Spezialtabellen für die eigene
Anwendung baut. 

Gruss

Sven

P.S.: Warum sind wir nicht längst auf der devserver Liste solche Details
interessieren hier doch keinen mehr.

-- 
Microsoft ist offenbar die einzige Firma, die in der Lage ist, ein mit
Office nicht kompatibles Bürosoftwarepaket einzuführen.
(Florian Weimer in de.alt.sysadmin.recovery)
/me is giggls@ircnet, http://sven.gegg.us/ on the Web

___
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de


Re: [Talk-de] postgresql (osmosis schema) liste von nodes -> Polygon?

2011-06-10 Thread Alexander Matheisen
Am Freitag, den 10.06.2011, 13:38 + schrieb Sven Geggus:
> Alexander Matheisen  wrote:
> 
> > Statt hier so kleinlich die Fehler anderer zu verbessern
> 
> Dir ist aber schon klar, dass ich einen Fehler von _mir_ selbst korrigiert
> habe. Also nochmal zum mitschreiben: Ich habe fälschlicherweise Datenbanken
> geschrieben anstatt Tabellen.

Weil du das als Antwort auf meine Frage geschrieben hattest, dachte ich,
das bezog sich nur auf das "Spezialdatenbanken" in meinem Text. Ich
glaube, jeder wusste trotzdem, was gemeint war.

> Die Idee ist, dass ich eine neue Datenbank mit osmosis schema aufsetze und
> sich jeder für seine Anwendungen daraus per SQL script, shell, perl, python
> oder was auch immer, einmal am Tag oder so Spezialtabellen für die eigene
> Anwendung baut. 

Meine Frage stellte sich mir, weil es in osmosis den Task --read-pgsql
gibt. Aber ist eigentlich von sich aus logisch, dass man eine Postgres
DB mit dem üblichen SQL abfragen kann.

> P.S.: Warum sind wir nicht längst auf der devserver Liste solche Details
> interessieren hier doch keinen mehr.

Dann wechseln wir eben rüber, bezieht sich eh nur noch auf den
Devserver.


Alex


___
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de


Re: [Talk-de] postgresql (osmosis schema) liste von?nodes?->?Polygon?

2011-06-10 Thread Sven Geggus
Moin,

Ich treibe die Frage mal noch weiter. Vielleciht geht es ja
tatsächlich mit einem einzigen query alle flächenhaften microbrewery
POI zu selektieren.

Momentan geht folgendes:

Ich selektiere mir alle id die mich interessieren:

SELECT id FROM ways WHERE (tags ? 'microbrewery') and 
(tags->'microbrewery'='yes');

Dann mache ich den folgenden request indem ich über alle id
iteriere:

SELECT astext(ST_PointOnSurface(ST_MakePolygon(ST_MakeLine(n.geom
FROM (SELECT unnest(nodes) FROM ways WHERE id = ...) as w, nodes n
WHERE w.unnest = n.id;

So funktioniert das zwar aber es geht bestimmt noch eleganter.

Mein Problem liegt konkret darin, dass ich das "WHERE id = ..." nicht
mit "WHERE (tags ?  'microbrewery')" ersetzen kann, weil ich ja die
einzelnen Gruppen von nodes mit ST_MakeLine bearbeiten möchte und
nicht alle nodes mit diesem tag.

Gruss

Sven

-- 
"Dynamische IP-Nummern sind Security-Homöopathie."
(Kristian Köhntopp)

/me is giggls@ircnet, http://sven.gegg.us/ on the Web

___
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de


Re: [Talk-de] postgresql (osmosis schema) liste von?nodes?->?Polygon?

2011-06-10 Thread Alexander Matheisen
> So funktioniert das zwar aber es geht bestimmt noch eleganter.
> 
> Mein Problem liegt konkret darin, dass ich das "WHERE id = ..." nicht
> mit "WHERE (tags ?  'microbrewery')" ersetzen kann, weil ich ja die
> einzelnen Gruppen von nodes mit ST_MakeLine bearbeiten möchte und
> nicht alle nodes mit diesem tag.

Ich bin mittlerweile beim gleichen Problem angelangt. Mich würde es auch
interessieren, wie es gemacht wird...

Wie machst du es denn jetzt? Ein Programm, in dem du dann die IDs
zwischenspeicherst und dann die zweite Abfrage laufen lässt?



Alex



___
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de


Re: [Talk-de] postgresql (osmosis schema) liste von?nodes?->?Polygon?

2011-06-10 Thread Walter Nordmann

Sven Geggus wrote:
> 
> Ich treibe die Frage mal noch weiter. Vielleicht geht es ja
> tatsächlich mit einem einzigen query alle flächenhaften microbrewery
> POI zu selektieren.
> 
hi Sven, manchmal hilt es mir und anderen, das Problem mal wirklich genau zu
beschreiben. 

Am Anfang (Thread-Start) wolltest du das Zentrum von Flächen finden; jetzt
suchst das was mit flächenhaften Objekten.
Ich sehe da schon einen gewissen Zusammenhang, aber was suchst du genau

Alle Brauereien, die als Area/Polygon eingetragen sind? 
Wie sind die getaggt?
Welches DB-Schema? osm2pgsql oder osmosis mit hstore? 

Und schick mal die ID eines Beispielbereiches rüber.

dann schau ich mir das mal an.

Gruss
Walter 


-
Wenn du den Wald vor lauter Bäumen nicht siehst, fälle die Bäume und du wirst 
sehen, dass da kein Wald ist.
--
View this message in context: 
http://gis.638310.n2.nabble.com/postgresql-osmosis-schema-liste-von-nodes-Polygon-tp6459170p6463555.html
Sent from the Germany mailing list archive at Nabble.com.

___
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de


Re: [Talk-de] postgresql (osmosis schema) liste von?nodes?->?Polygon?

2011-06-10 Thread Alexander Matheisen
> Am Anfang (Thread-Start) wolltest du das Zentrum von Flächen finden; jetzt
> suchst das was mit flächenhaften Objekten.
> Ich sehe da schon einen gewissen Zusammenhang, aber was suchst du genau
> 
> Alle Brauereien, die als Area/Polygon eingetragen sind? 
> Wie sind die getaggt?
> Welches DB-Schema? osm2pgsql oder osmosis mit hstore? 

Wenn ich das richtig verstanden habe, geht es darum, dass bei der
Abfrage von mehreren Objekten nach Tag der Mittelpunkt zwischen allen
Punkten berechnet wird und nicht nur zwischen den Punkten der jeweiligen
Einzelflächen. Es geht um das osmosis Schema.


Alex


___
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de


Re: [Talk-de] postgresql (osmosis schema) liste von?nodes?->?Polygon?

2011-06-10 Thread Walter Nordmann

Alexander Matheisen wrote:
> 
> Wenn ich das richtig verstanden habe, geht es darum, dass bei der
> Abfrage von mehreren Objekten nach Tag der Mittelpunkt zwischen allen
> Punkten berechnet wird und nicht nur zwischen den Punkten der jeweiligen
> Einzelflächen. Es geht um das osmosis Schema.
> 
Hi Alexander,

von mehreren Flächen, deren gemeinsamer Mittelpunkt bestimmt werden soll,
war -bisher- nicht die Rede.

Da es höchstwahrscheinlich um das Osmosis-Snapshot Schema handelt und Sven
verzweifelt versucht, aus Nodes Flächen zusammenzubauen, frage ich mich
langsam was das soll.
Ich vermute, Sven hat einfach vergessen, linestring und bbox als optionale
Spalten der Ways-Tabelle anzulegen.

@sven:  bitte   "\d ways" in psql eingeben und Ergebnis posten.

so sollte das aussehen:


gis=# \d ways
 Tabelle »public.ways«
Spalte| Typ | Attribute 
--+-+---
 id   | bigint  | not null
 version  | integer | not null
 user_id  | integer | not null
 tstamp   | timestamp without time zone | not null
 changeset_id | bigint  | not null
 tags | hstore  | 
 nodes| bigint[]| 
 bbox | geometry| 
 linestring   | geometry| 
Indexe:
"pk_ways" PRIMARY KEY, btree (id)
"idx_ways_bbox" gist (bbox)
"idx_ways_linestring" gist (linestring)

wenn alles ok ist, geht das so:

select id,
   tags->'name' "name", 
   st_Astext(linestring) "way", 
   st_Astext(st_PointOnSurface(linestring)) "Center" 
  from ways 
 where tags ? 'microbrewery'
limit 3;

id|name|

way 

|Center
--++--+--
 45360471 | Wirtschaftswunder  | LINESTRING(9.002598
48.7214827,9.0028258 48.7215596,9.002932 48.7214227,9.0027042
48.7213458,9.002598 48.7214827) 
  
| POINT(9.0028258 48.7215596)
 50241169 | Brauereigasthof Göller | LINESTRING(10.9715219
49.9409466,10.9715545 49.9408561,10.9716667 49.9408737,10.9717391
49.9408831,10.9717178 49.9409456,10.9717084 49.940973,10.9715219 49.9409466)
| POINT(10.9716667 49.9408737)
 50308663 | Enzensteiner Brauerei / Biergarten | LINESTRING(11.3679454
49.5623391,11.368205 49.5622779,11.3682603 49.5623704,11.3679972
49.5624301,11.3679454 49.5623391)
| POINT(11.368205 49.5622779)
(3 Zeilen)


Gruss
Walter


-
Wenn du den Wald vor lauter Bäumen nicht siehst, fälle die Bäume und du wirst 
sehen, dass da kein Wald ist.
--
View this message in context: 
http://gis.638310.n2.nabble.com/postgresql-osmosis-schema-liste-von-nodes-Polygon-tp6459170p6463654.html
Sent from the Germany mailing list archive at Nabble.com.

___
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de


Re: [Talk-de] postgresql (osmosis schema) liste von?nodes?->?Polygon?

2011-06-10 Thread Sarah Hoffmann
On Fri, Jun 10, 2011 at 06:13:06PM +, Sven Geggus wrote:
> Moin,
> 
> Ich treibe die Frage mal noch weiter. Vielleciht geht es ja
> tatsächlich mit einem einzigen query alle flächenhaften microbrewery
> POI zu selektieren.
> 
> Momentan geht folgendes:
> 
> Ich selektiere mir alle id die mich interessieren:
> 
> SELECT id FROM ways WHERE (tags ? 'microbrewery') and 
> (tags->'microbrewery'='yes');
> 
> Dann mache ich den folgenden request indem ich über alle id
> iteriere:
> 
> SELECT astext(ST_PointOnSurface(ST_MakePolygon(ST_MakeLine(n.geom
> FROM (SELECT unnest(nodes) FROM ways WHERE id = ...) as w, nodes n
> WHERE w.unnest = n.id;

Das geht mit etwas Gruppierungsmagie, aber irgendwie wird es dann
ineffizient. Die beste Methode ist, sich eine Funktion zu definieren:

CREATE FUNCTION make_way_geometry(id bigint) RETURNS geometry
   AS $$ SELECT ST_MakeLine(n.geom) 
FROM (SELECT unnest(nodes), id 

  FROM ways w WHERE id = $1) as w,
nodes n
WHERE w.unnest = n.id
   $$  LANGUAGE SQL;

Dann kannst du ganz bequem schreiben:

SELECT id, astext(ST_PointOnSurface(ST_MakePolygon(make_way_geometry(id
FROM ways WHERE

Sarah

___
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de


Re: [Talk-de] postgresql (osmosis schema) liste von?nodes?->?Polygon?

2011-06-10 Thread Sarah Hoffmann
On Fri, Jun 10, 2011 at 01:20:33PM -0700, Walter Nordmann wrote:
> 
> Alexander Matheisen wrote:
> > 
> > Wenn ich das richtig verstanden habe, geht es darum, dass bei der
> > Abfrage von mehreren Objekten nach Tag der Mittelpunkt zwischen allen
> > Punkten berechnet wird und nicht nur zwischen den Punkten der jeweiligen
> > Einzelflächen. Es geht um das osmosis Schema.
> > 
> Hi Alexander,
> 
> von mehreren Flächen, deren gemeinsamer Mittelpunkt bestimmt werden soll,
> war -bisher- nicht die Rede.
> 
> Da es höchstwahrscheinlich um das Osmosis-Snapshot Schema handelt und Sven
> verzweifelt versucht, aus Nodes Flächen zusammenzubauen, frage ich mich
> langsam was das soll.
> Ich vermute, Sven hat einfach vergessen, linestring und bbox als optionale
> Spalten der Ways-Tabelle anzulegen.

Kommt darauf an. Ich finde es ein bisschen uebertrieben, fuer 100 Mio. Wege
linestrings anzulegen, weil man fuer 171 Microbreweries die Flaechen
braucht. Insofern ist Sven's Ansatz, das beim Ableiten seiner Tabelle
zu machen, wesentlich effizienter.

Sarah

___
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de


Re: [Talk-de] postgresql (osmosis schema) liste?von?nodes?->?Polygon?

2011-06-10 Thread Sven Geggus
Walter Nordmann  wrote:

> hi Sven, manchmal hilt es mir und anderen, das Problem mal wirklich genau zu
> beschreiben. 

OK, noch mal von vorne...

Gegeben: DB im Osmosis schema, ganz analog zum osm Dateiformat

relevante Tabellen:

Tabelle »public.ways«
Spalte| Typ | Attribute 
--+-+---
 id   | bigint  | not null
 version  | integer | not null
 user_id  | integer | not null
 tstamp   | timestamp without time zone | not null
 changeset_id | bigint  | not null
 tags | hstore  | 
 nodes| bigint[]| 

 Tabelle »public.nodes«
Spalte| Typ | Attribute 
--+-+---
 id   | bigint  | not null
 version  | integer | not null
 user_id  | integer | not null
 tstamp   | timestamp without time zone | not null
 changeset_id | bigint  | not null
 tags | hstore  | 
 geom | geometry| 

Nun möchte ich daraus letztendlich wie bisher das kml für die Brewpub
Map erzeugen.  Nur ist das bisher halt erheblich einfacher weil in
der osm2pgsql DB ja schon flächenhafte Elemente drin sind.  Beim
osmosis Schema muss ich mir diese natürlich erst zusammenbauen.

Als Zwischenziel möchte ich dafür als erstes mal alle Flächen aus der
ways tabelle selektieren die ein "microbrewery"="yes" haben, deren
Schwerpunkt berechnen und das Ergebnis mit "astext" ausgeben.

Wenn ich die node id kenne geht das mit dem Lösungsvorschlag von
Sarah.  Ich kann allerdings statt einer einzelnen node-id nicht
einfache eine andere where Bedingung verwenden, die mehrere
Ergebnisse liefert, weil mir der unnest sonst alle nodes zu einer
Fläche machen will.

Gruss

Sven

-- 
Trotz der zunehmenden Verbreitung von Linux erfreut sich der Bär,
und - dank Knut - insbesondere der Eisbär, deutlich größerer
Beliebtheit als der Pinguin. (Gefunden bei http://telepolis.de/)
/me is giggls@ircnet, http://sven.gegg.us/ on the Web

___
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de


Re: [Talk-de] postgresql (osmosis schema) liste von?nodes?->?Polygon?

2011-06-10 Thread Alexander Matheisen
Am Freitag, den 10.06.2011, 13:20 -0700 schrieb Walter Nordmann:
> Alexander Matheisen wrote:
> > 
> > Wenn ich das richtig verstanden habe, geht es darum, dass bei der
> > Abfrage von mehreren Objekten nach Tag der Mittelpunkt zwischen allen
> > Punkten berechnet wird und nicht nur zwischen den Punkten der jeweiligen
> > Einzelflächen. Es geht um das osmosis Schema.

> von mehreren Flächen, deren gemeinsamer Mittelpunkt bestimmt werden soll,
> war -bisher- nicht die Rede.

Ich hätte es besser so ausdrücken sollen:
Wenn ich das richtig verstanden habe, geht es darum, dass bei der
Abfrage von mehreren Objekten nach Tag der Mittelpunkt zwischen allen
gefundenen Objekten  berechnet wird statt zwischen den Punkten der
jeweiligen Einzelflächen. Also konkret: Es bildet den Mittelpunkt
zwischen allen Brewpubs und nicht nur zwischen den Punkten eines
einzelnen Brewpub-Ways.

> Da es höchstwahrscheinlich um das Osmosis-Snapshot Schema handelt und Sven
> verzweifelt versucht, aus Nodes Flächen zusammenzubauen, frage ich mich
> langsam was das soll.
> Ich vermute, Sven hat einfach vergessen, linestring und bbox als optionale
> Spalten der Ways-Tabelle anzulegen.

Ich denke, man sollte die aber nur beim Erzeugen der Spezialtabellen
anlegen, also nur bei den Objekten erzeugen, bei denen das zur Zeit
nötig ist: Brewpubs, Briefkästen, Telefonzellen und den Objekten für
meine OLM. Ich denke das ist besser als das bei allen Objekten zu
erzeugen, die dann eh keiner nutzt. 

Ansonsten ist das natürlich praktischer bei der Abfrage.


Alex


___
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de


Re: [Talk-de] postgresql (osmosis schema) liste von?nodes?->?Polygon?

2011-06-10 Thread Alexander Matheisen
> > Da es höchstwahrscheinlich um das Osmosis-Snapshot Schema handelt und Sven
> > verzweifelt versucht, aus Nodes Flächen zusammenzubauen, frage ich mich
> > langsam was das soll.
> > Ich vermute, Sven hat einfach vergessen, linestring und bbox als optionale
> > Spalten der Ways-Tabelle anzulegen.
> 
> Kommt darauf an. Ich finde es ein bisschen uebertrieben, fuer 100 Mio. Wege
> linestrings anzulegen, weil man fuer 171 Microbreweries die Flaechen
> braucht. Insofern ist Sven's Ansatz, das beim Ableiten seiner Tabelle
> zu machen, wesentlich effizienter.

+1

Mit der Funktion, die du gepostet hattest, lässt sich das wohl auf die
Art einfach machen.


Alex


___
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de


Re: [Talk-de] postgresql (osmosis schema) liste von?nodes?->?Polygon?

2011-06-10 Thread Alexander Matheisen
> Das geht mit etwas Gruppierungsmagie, aber irgendwie wird es dann
> ineffizient. Die beste Methode ist, sich eine Funktion zu definieren:
> 
> CREATE FUNCTION make_way_geometry(id bigint) RETURNS geometry
>AS $$ SELECT ST_MakeLine(n.geom) 
> FROM (SELECT unnest(nodes), id 
>   
>   FROM ways w WHERE id = $1) as w,
>   nodes n
> WHERE w.unnest = n.id
>$$  LANGUAGE SQL;
> 
> Dann kannst du ganz bequem schreiben:
> 
> SELECT id, astext(ST_PointOnSurface(ST_MakePolygon(make_way_geometry(id
>   FROM ways WHERE


Hört sich gut an, muss ich dann morgen mal testen.
Macht die Abfragen etwas übersichtlicher, schade, dass ich meine jetzt
nochmal abändern kann...


Alex


___
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de


Re: [Talk-de] postgresql (osmosis schema) liste?von?nodes?->?Polygon?

2011-06-10 Thread Walter Nordmann

Sven Geggus wrote:
> 
> relevante Tabellen:
> 
> Tabelle »public.ways«
> Spalte| Typ | Attribute 
> --+-+---
>  id   | bigint  | not null
>  version  | integer | not null
>  user_id  | integer | not null
>  tstamp   | timestamp without time zone | not null
>  changeset_id | bigint  | not null
>  tags | hstore  | 
>  nodes| bigint[]| 
>  | 
> 

da fehlen die optionalen Spalten "linestring" und "bbox". Die kann/sollte
mal beim Anlegen der Tabellen unbedingt mit erzeugen. siehe:
scripts/pgsnapshot_schema_0.6_linestring.sql 
-- Add a postgis GEOMETRY column to the way table for the purpose of storing
the full linestring of the way.

SELECT AddGeometryColumn('ways', 'linestring', 4326, 'GEOMETRY', 2);
CREATE INDEX idx_ways_linestring ON ways USING gist (linestring);

und analoges für bbox. Dann erzeugt dir osmosis ganz automatisch linesting
(way, der die nodes verbindet als polygon) und gegebenenfalls auch die bbox.


> Nun möchte ich daraus letztendlich wie bisher das kml für die Brewpub
> Map erzeugen.  Nur ist das bisher halt erheblich einfacher weil in
> der osm2pgsql DB ja schon flächenhafte Elemente drin sind.  Beim
> osmosis Schema muss ich mir diese natürlich erst zusammenbauen.
NEIN NEIN NEIN, wenn du -endlich- das Feld "ways.linestring" anlegst hast du
die auch. 


> Als Zwischenziel möchte ich dafür als erstes mal alle Flächen aus der
> ways tabelle selektieren die ein "microbrewery"="yes" haben, deren
> Schwerpunkt berechnen und das Ergebnis mit "astext" ausgeben.
siehe mein Beispiel


> Wenn ich die node id kenne geht das mit dem Lösungsvorschlag von
> Sarah.  Ich kann allerdings statt einer einzelnen node-id nicht
> einfache eine andere where Bedingung verwenden, die mehrere
> Ergebnisse liefert, weil mir der unnest sonst alle nodes zu einer
> Fläche machen will.
> 
ich hoffe mal ganz stark, dass sich deine Antwort und meine vorigen Infos
überschnitten haben.

Gruss
walter


-
Wenn du den Wald vor lauter Bäumen nicht siehst, fälle die Bäume und du wirst 
sehen, dass da kein Wald ist.
--
View this message in context: 
http://gis.638310.n2.nabble.com/postgresql-osmosis-schema-liste-von-nodes-Polygon-tp6459170p6463852.html
Sent from the Germany mailing list archive at Nabble.com.

___
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de


Re: [Talk-de] postgresql (osmosis schema) liste von?nodes?->?Polygon?

2011-06-10 Thread Walter Nordmann

Alexander Matheisen wrote:
> 
> Wenn ich das richtig verstanden habe, geht es darum, dass bei der
> Abfrage von mehreren Objekten nach Tag der Mittelpunkt zwischen allen
> gefundenen Objekten  berechnet wird statt zwischen den Punkten der
> jeweiligen Einzelflächen. Also konkret: Es bildet den Mittelpunkt
> zwischen allen Brewpubs und nicht nur zwischen den Punkten eines
> einzelnen Brewpub-Ways.
Was soll das den?? Wofür soll das den gut sein?

 > Ich vermute, Sven hat einfach vergessen, linestring und bbox als
optionale
>> Spalten der Ways-Tabelle anzulegen.
> 
> Ich denke, man sollte die aber nur beim Erzeugen der Spezialtabellen
> anlegen, also nur bei den Objekten erzeugen, bei denen das zur Zeit
> nötig ist: Brewpubs, Briefkästen, Telefonzellen und den Objekten für
> meine OLM. Ich denke das ist besser als das bei allen Objekten zu
> erzeugen, die dann eh keiner nutzt. 
> 
total falscher Ansatz; hier wird am falschen Ende gespart. 
Etwas Plattenplatz gegenüber einem erheblichen Aufwand, sich "nur die
notwendigen" Sachen zusammenzubasteln. Morgen kann schon etwas fehlen, was
man vergessen hat - und dann geht die ganze Sache wieder von vorne los.
Das war für mich übrigens der Grund, vor ca 1 Jahr von osm2pgsql nach
osmosis zu wechseln weil immer wieder Daten fehlten, die man zwar nicht zum
Rendern braucht aber dennoch plötzlich dringend benötigt wurden.

Nochmal: Hier wird am falschen Ende gespart und unnötiger Stress erzeugt.

Gruss
Walter 



-
Wenn du den Wald vor lauter Bäumen nicht siehst, fälle die Bäume und du wirst 
sehen, dass da kein Wald ist.
--
View this message in context: 
http://gis.638310.n2.nabble.com/postgresql-osmosis-schema-liste-von-nodes-Polygon-tp6459170p6463877.html
Sent from the Germany mailing list archive at Nabble.com.

___
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de


Re: [Talk-de] postgresql (osmosis schema)?liste?von?nodes?->?Polygon?

2011-06-10 Thread Sven Geggus
Sarah Hoffmann  wrote:

> Das geht mit etwas Gruppierungsmagie, aber irgendwie wird es dann
> ineffizient. Die beste Methode ist, sich eine Funktion zu definieren:
> 
> CREATE FUNCTION make_way_geometry(id bigint) RETURNS geometry
>   AS $$ SELECT ST_MakeLine(n.geom) 
>FROM (SELECT unnest(nodes), id 
>   
>FROM ways w WHERE id = $1) as w,
>nodes n
>WHERE w.unnest = n.id
>   $$  LANGUAGE SQL;
> 
> Dann kannst du ganz bequem schreiben:
> 
> SELECT id, astext(ST_PointOnSurface(ST_MakePolygon(make_way_geometry(id
>FROM ways WHERE

OK ich seh schon, meine SQL Kenntnisse sind immer noch deutlich
ausbaufähig...

SELECT 
tags->'name',astext(ST_PointOnSurface(ST_MakePolygon(make_way_geometry(id 
FROM ways WHERE (tags ? 'microbrewery') and (tags->'microbrewery'='yes');

Sieht doch richtig gut aus. Jetzt muss ich eigentlich "nur noch" Datenbank und
Aktualisierung auf dem devserver aufsetzen.

Super, Danke!

Gruss

Sven

-- 
/* Fuck me gently with a chainsaw... */
(David S. Miller in /usr/src/linux/arch/sparc/kernel/ptrace.c)

/me is giggls@ircnet, http://sven.gegg.us/ on the Web

___
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de


Re: [Talk-de] postgresql (osmosis schema)?liste?von?nodes?->?Polygon?

2011-06-10 Thread Sven Geggus
Walter Nordmann  wrote:

>> Nun möchte ich daraus letztendlich wie bisher das kml für die Brewpub
>> Map erzeugen.  Nur ist das bisher halt erheblich einfacher weil in
>> der osm2pgsql DB ja schon flächenhafte Elemente drin sind.  Beim
>> osmosis Schema muss ich mir diese natürlich erst zusammenbauen.
> NEIN NEIN NEIN, wenn du -endlich- das Feld "ways.linestring" anlegst hast du
> die auch. 

Wenn man ohnehin Spezialtabellen erzeugt ist es erheblich effizienter
diese nur für die Spezialtabellen zu erzeugen und nicht global für
alle ways.

Gruss

Sven

-- 
"Dynamische IP-Nummern sind Security-Homöopathie."
(Kristian Köhntopp)

/me is giggls@ircnet, http://sven.gegg.us/ on the Web

___
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de


Re: [Talk-de] postgresql (osmosis schema)?liste?von?nodes?->?Polygon?

2011-06-10 Thread Walter Nordmann
deine Entscheidung - dein Problem

Gruss
Walter

-
Wenn du den Wald vor lauter Bäumen nicht siehst, fälle die Bäume und du wirst 
sehen, dass da kein Wald ist.
--
View this message in context: 
http://gis.638310.n2.nabble.com/postgresql-osmosis-schema-liste-von-nodes-Polygon-tp6459170p6464085.html
Sent from the Germany mailing list archive at Nabble.com.

___
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de


Re: [Talk-de] postgresql (osmosis schema)?liste?von?nodes?->?Polygon?

2011-06-11 Thread Alexander Matheisen
> SELECT 
> tags->'name',astext(ST_PointOnSurface(ST_MakePolygon(make_way_geometry(id 
> FROM ways WHERE (tags ? 'microbrewery') and (tags->'microbrewery'='yes');
> 
> Sieht doch richtig gut aus. Jetzt muss ich eigentlich "nur noch" Datenbank und
> Aktualisierung auf dem devserver aufsetzen.

OK, dann kann ich meine Abfragen jetzt noch verbessern und bis dahin
läuft vielleicht schon die DB.
Super, jetzt geht es vorwärts...

Welchen Namen wird die DB haben? Muss ich dann nämlich noch in meinen
Scripten anpassen.


Alex




___
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de


Re: [Talk-de] postgresql (osmosis schema)?liste?von?nodes?->?Polygon?

2011-06-12 Thread Sven Geggus
Alexander Matheisen  wrote:

> Welchen Namen wird die DB haben? Muss ich dann nämlich noch in meinen
> Scripten anpassen.

Keine Ahnung. Für mich steht jetzt erst mal ein Systemupdate an und
das muss ich jetzt erst mal aklären welche Option ich da wähle.

Wird also sicher noch nen Moment dauern.

Gruss

Sven

-- 
Kernel panic: I have no root and I want to scream
(Linux Kernel Error Message)

/me is giggls@ircnet, http://sven.gegg.us/ on the Web

___
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de


Re: [Talk-de] postgresql (osmosis schema)?liste?von?nodes?->?Polygon?

2011-06-14 Thread Alexander Matheisen
Am Sonntag, den 12.06.2011, 09:26 + schrieb Sven Geggus:
> Alexander Matheisen  wrote:
> 
> > Welchen Namen wird die DB haben? Muss ich dann nämlich noch in meinen
> > Scripten anpassen.
> 
> Keine Ahnung. Für mich steht jetzt erst mal ein Systemupdate an und
> das muss ich jetzt erst mal aklären welche Option ich da wähle.
> 
> Wird also sicher noch nen Moment dauern.

Gibt es irgendwelche Fortschritte zu verzeichnen?


Alex


___
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de