You are not logged in.

#26 2013-07-23 20:02:49

wambacher
Member
From: Schlangenbad/Wambach, Germany
Registered: 2009-12-16
Posts: 16,489
Website

Re: Zugriff auf PostGIS-DB mittels QGIS

Lübeck wrote:

... da ist aber die Spalte hstore leer ... Ist das richtig ?

Kann ich mir irgendwie nicht vorstellen!

ich schon wink

Mach mal select id,tags from nodes where tags != '' limit 10    (bei != '' zwei einzelne ' , nicht ein ")

viele - genau gesagt die meisten - Nodes haben keine Tags. Aber alle Ways und Relationen sollten Tags haben.
übrigens gibt es keine Spalte mit dem Namen "hstore" in dem Snapshot-Schema. Die Spalte lautet "tags" und ist vom Typ hstore.

Gruss
walter

hab mal meine db gequält: 75.367.304 von 1.971.148.590 Nodes haben Tags. Macht 3,82 %

Last edited by wambacher (2013-07-23 21:06:26)

Offline

#27 2013-07-23 21:53:49

wambacher
Member
From: Schlangenbad/Wambach, Germany
Registered: 2009-12-16
Posts: 16,489
Website

Re: Zugriff auf PostGIS-DB mittels QGIS

brogo wrote:

Gibt es irgendwo eine Doku speziell für OSM (also nicht das Postgis-Handuch (englisch)), wie man nun aus den Linien (linestrings) am einfachsten Polygone und Multipolygone bastelt? Die Postgis-Funktionen sind ja doch sehr umfangreich.

Ich kenne keine und benutze das hier: http://postgis.refractions.net/docs/reference.html  Ist aber wohl genau das, was du nicht möchtest.

und dann geht das so:

planet=# select id,ST_AsText(st_makepolygon(linestring))
               from ways
               where ST_IsRing(linestring)
               limit 2;

    id     |                                                                                                                                                st_astext                                                                                                                                                
-----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 136116074 | POLYGON((19.1727922 51.9233661,19.1747387 51.9232839,19.1747669 51.9231656,19.1745256 51.9225005,19.1723834 51.9227344,19.1720995 51.9228839,19.1721618 51.9232932,19.1723243 51.9232932,19.1727922 51.9233661))
 136116075 | POLYGON((19.1710499 51.9217251,19.1721557 51.9216089,19.1725706 51.9216076,19.1739396 51.9214709,19.1739101 51.9209516,19.1736491 51.9207177,19.1736491 51.9206691,19.1730433 51.9205871,19.1708155 51.9208722,19.1707288 51.9211216,19.1708125 51.9213282,19.170847 51.9215043,19.1710499 51.9217251))
(2 rows)

auf deutsch: Suche 2 (limit=2) geschlossene und saubere (ST_IsRing) Ways, konvertiere die in Polygone (ST_MakePolygon) und gib diese als lesbaren Text aus (ST_AsText) - was will man mehr.

Multipolygone sind "etwas" schwieriger, gehen aber ähnlich. wink Wenn wirklich Bedarf besteht , kann ich mal meine Sachen durchforsten.

Hauptproblem ist wieder, dass die OSM-Objekte - ganz besonders die Multipolygone- nicht 100% dem GIS-Standard entsprechen. Daher ist es nicht trivial, solche Operationen mit GIS-Funktionen zu machen. Irgendwie beißt sich da die Katze in den Schwanz.

Was ich aber nicht verstehe: Jan hat ganz bewußt das Snapshot-Schema genommen weil eine fertige Anwendung eines Kollegen darauf aufbaut. Dort sollten all diese Sachen eigentlich geklärt sein. Dennoch begrüße ich seine Entscheidung und helfe ihm gerne weiter.
Allerdings braucht er wohl noch etwas Praxis - auch ich hab mich am Anfang schwer getan.

Gruss
walter

Nachtrag: Ansonsten kann ich noch die "PostGIS-Bibel" vorschlagen: http://www.manning.com/obe/ allerdings ohne OSM-Bezug. DAS Standardwerk an sich.

Last edited by wambacher (2013-07-23 22:14:17)

Offline

#28 2013-07-24 12:56:53

brogo
Member
From: 54,11 +-1°
Registered: 2009-06-02
Posts: 552

Re: Zugriff auf PostGIS-DB mittels QGIS

wambacher wrote:
brogo wrote:

wie man nun aus den Linien (linestrings) am einfachsten Polygone und Multipolygone bastelt?

und dann geht das so:

planet=# select id,ST_AsText(st_makepolygon(linestring))
               from ways
               where ST_IsRing(linestring)
               limit 2;

Danke! Das sieht ja übersichtlich aus.

wambacher wrote:

Multipolygone sind "etwas" schwieriger, gehen aber ähnlich. wink Wenn wirklich Bedarf besteht , kann ich mal meine Sachen durchforsten.

Das geht dann wohl in die Richtung wie in http://forum.openstreetmap.org/viewtopi … 52#p274152 beschrieben. Daran hatte ich zuerst immer gedacht. Ich hatte einfach nicht daran gedacht, daß die meisten Flächen in OSM durch EINZELNE geschlossene Wege beschrieben werden.

wambacher wrote:

Allerdings braucht er wohl noch etwas Praxis - auch ich hab mich am Anfang schwer getan.

Es ist gibt halt auch nicht so viele Infos im Wiki zum Thema Datenbankauswertungen. Und wenn man etwas findet, dann ist es zum osm2pgsql-Schema. Kein Wunder daß das snapshot-Schema so wenig verbreitet ist. Daher ist der Sprung von der OSM-Seite (ohne GIS-Vorkenntnisse) zu DB-Auswertungen äußert mühselig, obwohl das ganz eigentlich nicht so schwer ist.

Christian

Offline

#29 2013-07-24 14:11:16

wambacher
Member
From: Schlangenbad/Wambach, Germany
Registered: 2009-12-16
Posts: 16,489
Website

Re: Zugriff auf PostGIS-DB mittels QGIS

brogo wrote:

Das geht dann wohl in die Richtung wie in http://forum.openstreetmap.org/viewtopi … 52#p274152 beschrieben. Daran hatte ich zuerst immer gedacht. Ich hatte einfach nicht daran gedacht, daß die meisten Flächen in OSM durch EINZELNE geschlossene Wege beschrieben werden.

Jo stimmt. Den Thread hatte ich schon vergessen abgeheftet wink

select ST_Multi(ST_BuildArea(ST_Union(linestring))) geom
           from (
                   SELECT w.linestring 
                     from relations r, relation_members rm, ways w
                    WHERE r.id = 382443 
                      AND r.id = rm.relation_id
                      AND rm.member_id = w.id 
                ) www
;

Knackpunkt ist hier der ST_Union - der macht aus den Linestrings (Way-Member der Relation) etwas. Aus dem macht ST_BuildArea eine Fläche mit eventuellen Löchern und ST_Multi dann ein Multipolygon. Und zwar ein OGC/GIS-konformes!

Das hier ist die aktuelle Version: ST_Multi( ST_BuildArea(st_geometryFromText(st_astext(ST_Union(linestring)),4326))) geom

Ich habe aus Gründen, die mir gerade nicht parat sind, einmal nach Text und dann wieder nach Geometrie konvertiert. Nur warum?
Schlecht, wenn Dokumentation ein Fremdwort ist und sich wohl die ersten Anzeichen für Altersheimer blicken lassen wink

Gruss
walter

Offline

#30 2013-07-24 14:12:30

brogo
Member
From: 54,11 +-1°
Registered: 2009-06-02
Posts: 552

Re: Zugriff auf PostGIS-DB mittels QGIS

wambacher wrote:
planet=# select id,ST_AsText(st_makepolygon(linestring))
               from ways
               where ST_IsRing(linestring)
               limit 2;

Und wenn man das mal ausprobiert, wird man schnell zustimmen, daß OSM einen Flächendatentyp braucht. Man muß ja echt viel berücksichtigen, z.B. highways nicht nehmen, es sei denn es ist 'highway=pedestrian' oder hat ein 'area=yes' dran, leisure schon aber, nicht als track usw.

Gibt es eigentlich irgendwie eine schnelle Möglichkeit, mal eben eine einzelne PostGIS-Geometrie aus einer Abfrage zu visualisieren? Am besten als Plugin für pgAdmin oder halt mit copy&paste in den Webbrowser oder andere Anwendung.

Christian

Offline

#31 2013-07-24 15:36:33

wambacher
Member
From: Schlangenbad/Wambach, Germany
Registered: 2009-12-16
Posts: 16,489
Website

Re: Zugriff auf PostGIS-DB mittels QGIS

brogo wrote:

Und wenn man das mal ausprobiert, wird man schnell zustimmen, daß OSM einen Flächendatentyp braucht. Man muß ja echt viel berücksichtigen, z.B. highways nicht nehmen, es sei denn es ist 'highway=pedestrian' oder hat ein 'area=yes' dran, leisure schon aber, nicht als track usw.

Klaro. Das Filtern auf relevante Flächen hat die Auswertung natürlich vorher schon gemacht. Dies sollte ja nur ein knappes Beispiel sein.
Im Wiki für die API 0.7 ist übrigens Funkstille.

Gibt es eigentlich irgendwie eine schnelle Möglichkeit, mal eben eine einzelne PostGIS-Geometrie aus einer Abfrage zu visualisieren? Am besten als Plugin für pgAdmin oder halt mit copy&paste in den Webbrowser oder andere Anwendung.

Qgis wäre meine 1 Wahl - klappt aber nicht für ad-hoc queries sad
2. Wahl: openJump allerdings bin ich mit der Gui nicht so richtig warm geworden.
eventuell geht es damit.

Gruss
walter

Offline

#32 2013-07-25 05:07:21

Lübeck
Member
Registered: 2009-02-17
Posts: 2,655

Re: Zugriff auf PostGIS-DB mittels QGIS


Mi A1 mit Android 9 PC: Win10

Offline

#33 2013-07-25 19:37:39

brogo
Member
From: 54,11 +-1°
Registered: 2009-06-02
Posts: 552

Re: Zugriff auf PostGIS-DB mittels QGIS

brogo wrote:

Gibt es eigentlich irgendwie eine schnelle Möglichkeit, mal eben eine einzelne PostGIS-Geometrie aus einer Abfrage zu visualisieren? Am besten als Plugin für pgAdmin oder halt mit copy&paste in den Webbrowser oder andere Anwendung.

Unter [1] habe ich mit Netzwolfs Hilfe eine entsprechende Seite mit Openlayers gebastelt. Bitte die Hinweise unter [2] (Format, Projektion) beachten.

Christian

[1] http://osm.duschmarke.de/wkt.html
[2] http://wiki.openstreetmap.org/wiki/User … -Elementen

Offline

Board footer

Powered by FluxBB