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

2011-06-14 Diskussionsfäden Alexander Matheisen
Am Sonntag, den 12.06.2011, 09:26 + schrieb Sven Geggus:
 Alexander Matheisen alexandermathei...@ish.de 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


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

2011-06-12 Diskussionsfäden Sven Geggus
Alexander Matheisen alexandermathei...@ish.de 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-11 Diskussionsfäden 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-10 Diskussionsfäden Sven Geggus
Alexander Matheisen alexandermathei...@ish.de 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 Diskussionsfäden Alexander Matheisen
Am Freitag, den 10.06.2011, 07:49 + schrieb Sven Geggus:
 Alexander Matheisen alexandermathei...@ish.de 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 Diskussionsfäden Sven Geggus
Alexander Matheisen alexandermathei...@ish.de 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 Diskussionsfäden Alexander Matheisen
Am Freitag, den 10.06.2011, 13:38 + schrieb Sven Geggus:
 Alexander Matheisen alexandermathei...@ish.de 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 Diskussionsfäden 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 Diskussionsfäden 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 Diskussionsfäden 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 Diskussionsfäden 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 Diskussionsfäden 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 Diskussionsfäden 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 Diskussionsfäden 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 Diskussionsfäden Sven Geggus
Walter Nordmann walter.nordm...@web.de 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 Diskussionsfäden 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 Diskussionsfäden 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 Diskussionsfäden 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 Diskussionsfäden 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 Diskussionsfäden 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 Diskussionsfäden Sven Geggus
Sarah Hoffmann lon...@denofr.de 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 Diskussionsfäden Sven Geggus
Walter Nordmann walter.nordm...@web.de 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 Diskussionsfäden 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-09 Diskussionsfäden 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 Diskussionsfäden 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 Diskussionsfäden 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 Diskussionsfäden 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 Diskussionsfäden 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 Diskussionsfäden Sven Geggus
Alexander Matheisen alexandermathei...@ish.de 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 Diskussionsfäden 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 Diskussionsfäden Sven Geggus
Sarah Hoffmann lon...@denofr.de 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=18mlat=48.22436155mlon=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 Diskussionsfäden 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 Diskussionsfäden Alexander Matheisen
Am Donnerstag, den 09.06.2011, 20:38 + schrieb Sven Geggus:
 Alexander Matheisen alexandermathei...@ish.de 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