OSM GIS DB / Waldfläche Deutschland

Moin,
soviel ich weiss habe hier doch einige Leute eine GIS DB mit OSM Daten
(PostGIS) ?

Gestern las ich was über die Waldfläche in Deutschland (31-32% der Staatsfläche).

Kann man in so einer GIS DB den Wert einfach abfragen ?

So in der Art:

select size(*) from areas where landuse=forest or natural=wood ?

Grüße
Chris

Jups, aber das geht IMHO auch schon mit einem einfachen GIS wie QGIS und den Shapefiles z.B. von der Geofabrik (so die Wald im Angebot hat :wink: )

Hi,

Im Grunde geht das - korrekt waere

select sum(st_area(way)) from planet_osm_polygons where landuse=‘forest’ or natural=‘wood’

  • allerdings bekommst Du damit, bei Verwendung des GEOMETRY-Datentyps, die Flaeche in den Einheiten der jeweiligen Projektion. Um eine korrekte Berechnung der Flaeche auf der Kugeloberflaeche zu haben, koennte man die interessierenden Polygone in einen GEOGRAPHY-Datentyp umwandeln; hier ergibt st_area dann immer eine korrekte Flaeche in Quadratmetern.

Bye
Frederik

Und ich dachte immer, korrekte Flächenberechnung erfolgt stets auf der Ellipsoidoberfläche :frowning:

Ich hab grad damit rumgespielt und bin gescheitert.

Funktioniert auch erst ab PostGIS 1.5, oder? Zumindest st_area(geography(way)) haut vorher nicht hin, weil geography() noch nicht erfunden wurde…

Für Traditionalisten mit Mercator-Daten in der DB bleibt als Quick&Dirty-Lösung für Kleinflächen die Multiplikation mit cos(Breitengrad)*cos(Breitengrad) oder das Umwandeln in irgendein SRID, das echte Meter verwendet, GK mit der jeweils passenden Zone z.B.: st_area(st_transform(way,31468))

Grüße, Max

in was für einer Einheit ist das Ergebnis? Für Europa bekomme ich
select sum(st_area(way)) from osm_polygon_view where landuse=‘forest’ or natural=‘wood’;
sum

162.938870500787
(1 Zeile)

Sieht nach “Quadratgrad” aus. Du importierst mit “osm2pgsql -l” oder “osm2pgsql --latlong”?

Grüße, Max

Das sieht ganz gut aus:


gis=> select st_area(st_transform(way,31468)) / 1E6,name,admin_level from planet_osm_polygon where name='Coesfeld' ;

     ?column?     |   name   | admin_level 
------------------+----------+-------------
 141.495362953125 | Coesfeld | 8
(1 Zeile)

Laut wikipedia ist die Fläche 141,05 qkm.

Edit: Mit EPSG32632 (UTM Zone 32N) kommt genau dieser Wert heraus.

Zurück zum Wald:

landuse forest in NRW: 10.590 km2.
laut Waldbericht NRW: 8.440 km2

natural=‘wood’ gibt bei mir einen Syntaxfehler !?

Chris

Natural” ist schon von postgres reserviert. Wenn eine Spalte so heisst, muss man das in Anführungszeichen setzen:

 select wood,name,"natural" from osm_polygon where landuse='forest' or "natural"='wood';

Grüße, Max

Ja, anscheinend.

http://postgis.refractions.net/documentation/manual-1.4/
http://postgis.refractions.net/documentation/manual-1.5/

Welche Version haben denn wir Leute mit dem Ubuntu-Tile-Server ?

$ dpkg -l | grep postgis
1.5.1-5

Das ist zwar Debian 6 (sqeeze) aber bei nicht zu alten Ubuntus düfte das ähnlich sein.

Ja, ist gleich:
postgresql-8.4-postgis 1.5.1-5 geographic objects support for PostgreSQL 8.4

so sollte es überall gehen:

gis=# SELECT postgis_full_version();
postgis_full_version

POSTGIS=“1.5.2” GEOS=“3.2.2-CAPI-1.6.2” PROJ=“Rel. 4.7.1, 23 September 2009” LIBXML=“2.7.7” USE_STATS
(1 Zeile)

gruss
walter

So geht’s:


gis=> select st_area(Geography(st_transform(way,4326))) / 1E6 as Flaeche,name,admin_level from planet_osm_polygon where name='Coesfeld';

     flaeche     |   name   | admin_level 
-----------------+----------+-------------
 141.11174783913 | Coesfeld | 8

Kurze Frage:

Wollte auch mal unter Windows mit PostGIS spielen.

Sehe ich das richtig, dass PostGIS dort nur für die 32-Bit Version von PostgreSQL verfügbar ist? :frowning:

Gruß,
ajoessen

Du siehst das ganz richtig und das ist der größte Nachteil der Windowsumgebung. Alles andere läuft ja auch dort schon sehr gut. Aber auf über 4 GB Speicher zu verzichten ist schon hart.