You are not logged in.
- Topics: Active | Unanswered
#26 2013-07-23 20:02:49
- wambacher
- Member
- From: Schlangenbad/Wambach, Germany
- Registered: 2009-12-16
- Posts: 16,733
- Website
Re: Zugriff auf PostGIS-DB mittels QGIS
... da ist aber die Spalte hstore leer ... Ist das richtig ?
Kann ich mir irgendwie nicht vorstellen!
ich schon
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,733
- Website
Re: Zugriff auf PostGIS-DB mittels QGIS
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. 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: 553
Re: Zugriff auf PostGIS-DB mittels QGIS
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.
Multipolygone sind "etwas" schwieriger, gehen aber ähnlich.
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.
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,733
- Website
Re: Zugriff auf PostGIS-DB mittels QGIS
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
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
Gruss
walter
Offline
#30 2013-07-24 14:12:30
- brogo
- Member
- From: 54,11 +-1°
- Registered: 2009-06-02
- Posts: 553
Re: Zugriff auf PostGIS-DB mittels QGIS
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,733
- Website
Re: Zugriff auf PostGIS-DB mittels QGIS
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
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,840
Re: Zugriff auf PostGIS-DB mittels QGIS
OpenDump-Tutorial: http://static.openjump.de/media/documen … DeEnXP.pdf
Gruß Jan :-)
Redmi Note 9 Pro mit Android 11, Tablet Android 8.1, PC: Win10
Offline
#33 2013-07-25 19:37:39
- brogo
- Member
- From: 54,11 +-1°
- Registered: 2009-06-02
- Posts: 553
Re: Zugriff auf PostGIS-DB mittels QGIS
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