ich will Europa in eine Postgresql Importieren. Ich habe gesehen das man bei geofabrik PBF Dateien runterladen kann und dann mit Osmosis verschiedene Daten extrahieren.
Und genau da komme ich jetzt nicht weiter. Ich habe z.B. mit erstmal nur Deutschland geladen: germany-latest.osm.pbf
Ich wĂŒrde jetzt gerne, ab BundeslĂ€nder bis StĂ€dte die in eine Postgresql Datenbank laden. Und zwar wĂŒrde ich gerne auch eine Hierarchy in der Datenbank aufbauen. Hier ein Beispiel:
Wichtig dabei ist admin_level und der rpath, So weiĂ ich dann per SQL das Bielefeld in Regierungsbezirk Detmold ist.
Also auf jeden Fall osm2pgsql statt osmosis fĂŒr den Import nehmen, wie toc-rox schon gesagt hat. Wenn Du nur die Grenzen brauchst und sonst nichts, dann kannst Du auch das âstyle-Fileâ von osm2pgsql anpassen, so dass nicht alle GebĂ€ude usw. auch importiert werden. Danach musst du mit Postgresql-Geometrieoperationen arbeiten, zum Beispiel könntest Du wie folgt erstmal die Grenzen in eine separate Tabelle ziehen:
SELECT osm_id,name,admin_level,way
INTO grenzen
FROM planet_osm_polygon
WHERE boundary='administrative';
Index erstellen, damit es keine drei Tage rechnet:
CREATE INDEX grenzen_geom ON grenzen USING GIST(way);
und unter der Annahme, dass Dein ârpathâ einfach eine durch Kommata getrennte Liste aller darĂŒberliegenden Verwaltungseinheiten ist
ALTER TABLE grenzen ADD COLUMN rpath VARCHAR(255);
UPDATE grenzen a
SET rpath = (
SELECT string_agg(b.name, ',' ORDER BY admin_level desc)
FROM grenzen b
WHERE st_contains(b.way, a.way)
AND a.admin_level::integer > b.admin_level::integer
);
Leider sind im rpath die Namen drin, ich brauche Komma separiert die Idâs. Und warum ist die osm_id negativ? Hat das ein Grund?
Des Weiteren zeigt er mir way als POLYGON. Ich brauche aber von der Stadt die Latitude und Longitude. Kriege ich diese auch irgendwie raus?
Wenn ein zusÀtzlicher Node gesetzt ist, wÀren das die gesuchten Wert. Ansonsten muss du eine fiktive Stadtmitte (wenn es das ist was du suchst) errechnen.
Trenne den Import der Rohdaten mittels osm2gpsql von deren weiteren Verwendung. D.h Àndere so wenig wie möglich am Style-File und mach alle Umwandlungen spÀter.
Du wirst immer wieder in die Situation kommen, dass dir Datenfelder in dem Import fehlen, da du sie vorher einfach nicht fĂŒr wichtig gehalten hast. Und dann du muĂt das Style-File Ă€ndern und von vorne anfangen (:
Muttu halt die PostGIS-Befehle anpassen.
Ja, alles hat hier seinen Grund
Beim Import mit osm2pgsql werden aus Ways (genauer gesagt, geschlossenen Ways) Polygone. Und aus Relationen, die geschlossene FlÀchen definieren (Z. B. Grenzen) werden auch Polygone. Um diese voneinander zu unterscheiden, werden die Ids von Polygonen, die aus Relationen stammen, negativ gesetzt.
Das ist erstmal ok, ich wĂŒrde aber noch was fĂŒr die Tags tun. Ich verwende da noch --hstore-all --extra-attributes
DafĂŒr musst du aber noch mit psql 1x âcreate extension hstore;â eingeben, damit die Hstores auch erstellt werden können.
Vielen Dank euch schon mal. Ich glaube ich komme langsam der Sache nÀher.
postgis ist ein Addon fĂŒr postgresql um die ganzen Maps Sachen Berechnungen zu machen.
Ich habe jetzt folgendes gemacht:
SELECT poly.osm_id,poly.name,poly.admin_level,
ST_X(ST_CENTROID(poly.way)) AS long,
ST_Y(ST_CENTROID(poly.way)) AS lat
FROM planet_osm_polygon poly
WHERE poly.boundary='administrative' and poly.name = 'Bielefeld';
Ich habe ja germany-latest.osm.pbf importiert. Wenn ich jetzt Europa importieren will, muss ich die vorhanden Tabelle leeren/löschen? Ich kann ich einfach Europa importieren und fĂŒr Deutschland sind die EintrĂ€ge dann nicht doppelt drin?
Und wie sieht es mit Mehrsprachigkeit aus was die StÀdte und LÀnder Namen angeht? Kriegt man irgendwie auch Informationen raus?