Mehr

OpenStreetMap Style Editor neben Mapbox TileMill und CloudMade

OpenStreetMap Style Editor neben Mapbox TileMill und CloudMade


Ich suche nach einem Online-OSM-Style-Editor, mit dem ich OSM-Wege und -Knoten nach Tags stylen kann. Ich weiß, dass der Editor von CloudMade nicht mehr verfügbar ist, und der von Mapbox tut dies, hat jedoch Rendering-Beschränkungen für die Zoomstufe (z. B. werden Gebäude nicht unter der Zoomstufe 13 gerendert).

Mein Ziel ist es, eine Karte der USA (oder der Welt, wenn ich kann) zu bekommen, die zeigt, wo jedes OSM-Gebäude kartiert wurde (Wege mit building=). Und eine zweite Karte, die zeigt, wo sich jedes OSM-Gebäude + Straßenadresse befindet (Wege mit addr:housenumber=).

Hier ist eine Beispielkarte, die ich mit einem staatlichen OSM-Extrakt in Kentucky erstellt habe, der mit Osmosis und QGIS zum Rendern verarbeitet wurde:

https://twitter.com/CivicDataAlly/status/644963898463023108

Aber leider ist der Nordamerika-Extrakt für mich zu groß, um damit zu arbeiten, und QGIS kann nicht einmal die große Osmose-verarbeitete Datei auf meinem Computer öffnen. Ich habe auch osm2pgsql- und PostgreSQL/PostGIS-Datenbanken eingerichtet, aber auch hier sind die Dateigrößen und Verarbeitungszeiten zu groß.

Gibt es ein Online-Tool, mit dem ich Gebäude mit niedriger Zoomstufe stylen kann?


GELÖST

Ich habe endlich das Bild, das ich brauchte, von allen Gebäuden und Gebäuden mit Straßenadressen für ganz Nordamerika, indem ich die Informationen in der folgenden Antwort verwendet habe.

Ich habe grundsätzlich Postgres eingerichtet und pgAdmin3 verwendet, um es zu verwalten, und dann osm2pgsql in der Befehlszeile mit den richtigen Optionen und Stilen, um den rohen .pbf-Export in die Datenbank zu laden, und dann eine Verbindung mit QGIS herstellen, um ihn zu visualisieren.

Sobald die Daten in Postgres waren, war es einfach und schnell zu handhaben, sogar in QGIS auf meinem bescheidenen Computer anzuzeigen.

Gebäude

Hier sind die Statistiken und was ich für den Gebäude-Footprint-Layer gemacht habe:

osm2pgsql -U mschnuerle -d mschnuerle --create --slim --flat-nodes nabuildings.bin --cache 18000 --number-processes 3 --style buildings.style north-america-latest.osm.pbf; Verarbeitung: Node(794783k 1292,3k/s) Way(52669k 32,51k/s) Relation(471970 89,52/s) Parse-Zeit: 7507s (2 Stunden) Knotencache: gespeichert: 794783721(100,00%), Speichereffizienz: 66,31 % ( Dichte Blöcke: 695842, Sparse Nodes: 243029485), Trefferquote: 100,00 % Osm2pgsql benötigte insgesamt 88452 Sekunden (24 Stunden) Backup-DB-Größe: 4 GB

nur dies in der Datei "buildings.style" (alles andere gelöscht):

Weg Gebäudetext Polygon Weg Weg_Bereich echt linear

Adressen

Und hier ist, was ich nur für die Gebäude gemacht habe, die mit Straßenadressen versehen waren:

osm2pgsql -U mschnuerle -d mschnuerle --create --slim --drop --flat-nodes naaddress.bin --cache 6000 --number-processes 4 --verbose --exclude-invalid-polygon --prefix address -- style address.style nord-america-latest.osm.pbf; Verarbeitung: Knoten (794783k 1271,7k/s) Weg (52669k 31,67k/s) Relation (471970 37,13/s) Parse-Zeit: 14998s (4h) Osm2pgsql dauerte 17455s insgesamt (5h)

damit in der Datei address.style (alles andere gelöscht):

Way addr: Hausnummer Text Polygon Way_area Real Linear Way Gebäudetext löschen

Und meine Maschinenspezifikationen sind dies für diejenigen, die fragen:

Mac-Spezifikationen

OS X El Capitan 10.11 Beta iMac 27" Mitte 2011 3.1 GHz Intel Core i5 (4 Kerne) 25 GB 1333 MHz DDR3 1 TB SATA HD

Soweit ich weiß, ist dies die einzige Online-Karte, die Gebäude-Fußabdrücke auf dieser Ebene zeigt. Wenn Sie weitere finden, lassen Sie es mich bitte hier wissen.

Ich plane auch, alle benötigten Mapbox-Kacheln mit Tippecanoe zu erstellen und die Karte in den nächsten Wochen online zu stellen.


Die kurze Antwort ist, es gibt keinen hervorragenden Weg.

Optionen, die nicht gut funktionieren

Hadoop

Hadoop und ähnliche Tools sind nicht die Lösung, da diese Art von Analyse auf einem einigermaßen leistungsfähigen Server durchaus möglich ist. Möglicherweise haben Sie keinen einigermaßen leistungsstarken Server, in diesem Fall wäre Hadoop keine gute Option, da es einen Cluster benötigt.

Wenn Sie zufällig einen Hadoop-Cluster haben und ein Experte darin sind, ist dies vernünftig, aber ansonsten ist es mehr Entwicklungszeit ohne Gewinn.

Vektorkacheln

Vektorkacheln entfernen keine Verarbeitungsschritte, sie ermöglichen nur die gemeinsame Nutzung eines Teils der Arbeit durch mehrere Stile. Wie Sie beim Design von Mapbox Streets gesehen haben, befinden sich Gebäude nicht oft in Vektorkacheln mit niedrigem Zoom, sodass Sie sie selbst erstellen müssen.

Sie könnten Vektorkacheln mit niedrigem Zoom zusammenfügen, aber dafür müssten Sie Ihre eigene Rendering-Toolchain verwenden, und dies wäre komplex.

Vernünftige Optionen

OSM hat etwa 160 Millionen Aufbauwege, 35 Millionen Adressknoten und 21 Millionen Wege mit Adressen. Die meisten letzteren sind auch Gebäude.

Osm2pgsql

osm2pgsql kann dies auf vernünftiger Hardware bewältigen, wenn Sie darauf achten, andere Daten auszuschließen. Dazu benötigen Sie eine benutzerdefinierte .style-Datei, die nur Adress- und Gebäude-Tags enthält. Beginnend mit empty.style, dem vorgeschlagenen Ausgangspunkt, können wir bekommen

node,way addr:einheitstext linearer knoten,way addr:hausname text linearer knoten,way addr:hausnummer text linearer knoten,way addr:Straßentext linearer Weg Gebäudetextpolygon

Alles hier unten wird aus empty.style kopiert, wobei die Zeilen "building" und z_order entfernt wurden. Ersteres ist oben als tatsächliche Spalte, letzteres ist für diese Verwendung nicht relevant way_area ist enthalten, da es nützlich ist

weg aufgegeben: aeroway text phstore weg aufgegeben: amenity text phstore weg aufgegeben: gebäude text phstore weg aufgegeben: landuse text phstore weg aufgegeben: power text phstore weg bereich: autobahn text phstore knoten, weg aeroway text phstore knoten, weg amenity text phstore weg gebäude :Teiltext-Phstore-Knoten,Weg-Hafen-Text-Phstore-Knoten,Weg historischer Text-Phstore-Knoten,Weg Landnutzungs-Text-Phstore-Knoten,Weg Freizeittext-Phstore-Knoten,Weg künstlicher Text-Phstore-Knoten,Weg militärischer Text-Phstore-Knoten,Weg natürlicher Text-Phstore-Knoten,Weg Büro Text-Phstore-Knoten,Weg-Ort-Text-Phstore-Knoten,Weg-Strom-Text-Phstore-Knoten,Weg öffentlicher_Verkehrs-Text-Phstore-Knoten,Weg-Shop-Text-Phstore-Knoten,Weg-Sport-Text-Phstore-Knoten,Weg Tourismus Text-Phstore-Knoten,Weg Wasser Text-Phstore-Knoten,Weg Wasserstraße Text phstore node,way wetland text phstore way_area real linear # Dies wird beim Import berechnet

Speichern unterGebäude.Stil

Sie können dann den Planeten importieren, indem Sie etwas verwenden, das auf der vorgeschlagenen osm2pgsql-Befehlszeile für den Planeten basiertosm2pgsql -c -d Gebäude --style /path/to/buildings.style --slim --drop -C --flat-nodes /path/to/planet-latest.osm.pbf

wo

  • ist 24000 auf Computern mit 32 GiB oder mehr RAM oder etwa 75% des Arbeitsspeichers in MiB auf Computern mit weniger
  • ist ein Ort, an dem eine 24-GiB-Datei gespeichert werden kann.

Es gibt ein paar verschiedene Optionen, die verwendet werden

--fallenentfernt Tabellen, die nur während des Imports und während Updates verwendet werden, da ich davon ausgehe, dass Sie durch einen erneuten Import aktualisieren

--style /path/to/buildings.stylegibt an, den oben geschriebenen Stil zu verwenden

Dies dauert auf einem Server mit vernünftiger Leistung ein oder zwei Tage.

Sobald der Import abgeschlossen ist, können Sie einige Indizes hinzufügen, die die Leistung verbessern

INDEX ERSTELLEN planet_osm_polygon_area_18250_idx ON planet_osm_polygon USING gist (way) WHERE way_area > 18250; INDEX ERSTELLEN planet_osm_polygon_area_1140_idx ON planet_osm_polygon USING gist (way) WHERE way_area > 1140; INDEX ERSTELLEN planet_osm_polygon_area_71_idx ON planet_osm_polygon USING gist (way) WHERE way_area > 71;

Berücksichtigen Sie beim Definieren der Layer in Kosmtik, Tilemill oder einem anderen Kartendesignstudio die BedingungWO Weg_Bereich > 0.05*!pixel_width!::real*!pixel_height!::realauf beliebigen Polygon-Layern.

Einige Dinge, auf die Sie beim Visualisieren achten sollten

  • Das Rendern vieler kleiner Polygone funktioniert nicht gut. Aus diesem Grund gibt es neben der Leistung auch die Bereichsbegrenzung für Ebenen.
  • Es wird immer noch langsam sein, aber das Vor-Rendering der USA sollte völlig vernünftig sein
  • Zuerst auf einer kleinen Fläche testen

https://switch2osm.org/loading-osm-data/ enthält weitere Informationen zum Einrichten von PostgreSQL und zum Installieren von osm2pgsql

Libosmium

libosmium ist eine Bibliothek für die Arbeit mit OSM-Daten und wahrscheinlich die beste Option, um direkt mit der Planetendatei zu arbeiten.

QGIS oder ArcGIS

Wenn Sie so viele Daten in QGIS oder ArcGIS verwenden, möchten Sie wahrscheinlich ein Skript erstellen, aber Sie könnten eine komplexere Analyse durchführen.

Osm2pgsql Multi-Backend

Dies ist dem oben genannten sehr ähnlich, bietet jedoch ein flexibleres Backend, was dazu führen kann, dass Tabellen besser für den Export in ein anderes Format geeignet sind.


qa.poole.ch rendert OSM-Gebäude mit und ohne Adressen, Knoten mit Adressen und Wohngebiete ohne Adressen für die Welt seit fast Ewigkeiten auf nicht sehr hochwertiger HW. Die Fliesen können frei verwendet werden. Daran ist überhaupt nichts besonders Raffiniertes, natürlich ist das Rendern der Kacheln mit niedrigem Zoom langsam, aber sie sind nicht wirklich interessant genug, um sich darum zu bemühen.


Wie Sie festgestellt haben, ist der Versuch zu zahlen, Millionen zu verarbeiten und zu rendern, oder sogar Dutzende bis Hunderte, von Millionen von Objekten bei niedrigem Zoom. Irgendwann stoßen Sie an Grenzen oder müssen quälend lange Bearbeitungs- oder Zeichenzeiten aussitzen.

Leider haben viele weniger erfahrene GIS-Anwender Schwierigkeiten, dies zu begreifen, oder lehnen es sogar ab.

Ihre Frage kann daher unrealistisch sein, es sei denn, Sie leben in der Luxusposition, verteilte Big Data-Verarbeitungseinrichtungen im "wissenschaftlichen Stil" zur Verfügung zu haben, wie von Hadoop verwaltete Cluster und das zugehörige Ökosystem von Anwendungen wie (No SQL) verteilte Datenbanken, die eigentlich dafür ausgelegt sind, diese Art von Durchsatz zu handhaben und so riesige (Zehner bis Hunderte Millionen oder sogar Milliarden) von Objekten zeitnah zu analysieren.

Ein durchschnittlicher "Haushalts"-Laptop oder -Desktop oder sogar eine professionelle 12-Core-Workstation ist nicht gleichzusetzen...

Nicht umsonst hat OSM das Konzept der Landnutzungen wie "Wohngebiet", "Industriegebiet" usw. übernommen, um bebaute Gebiete mit geringem Zoom darzustellen.

Es gibt tatsächlich Tools, die entwickelt wurden, um Daten aus einem GIS in einem Big Data-Verarbeitungscluster zu platzieren. Z.B. ESRI hat eine Reihe von Open Source-Programmen entwickelt, die hier verfügbar sind: https://github.com/Esri/gis-tools-for-hadoop

Ein interessanter Blog von einem seiner Entwickler (Mansour Raad) ist hier: http://thunderheadxpler.blogspot.com/


Ich werde einigen anderen Antworten nicht zustimmen: Das Rollen eigener Vektorkacheln und das Rendern ist nicht besonders schwierig. Sie werden müssen einige Daten bei niedrigen Zoomstufen fallen lassen, damit das Rendern richtig funktioniert, aber es gibt Tools, die diese Vereinfachung automatisch für Sie erledigen.

Tippecanoe ist insbesondere ein großartiges Open-Source-Projekt, das verwendet wurde, um einige der informationsdichtesten Karten des Webs zu erstellen. Sie können Ihre eigenen minimalen und maximalen Zoomstufen und Vereinfachungen wählen. Hier ist ein Beispielskript, mit dem ich Vektorkacheln für die Karte auf openaddresses.io erstellt habe. Da gibt es eine Menge, aber es enthält die Schritte zum Erstellen von tippecanoe und zum Normalisieren des OpenAddresses-Datasets in GeoJSON. Der eigentliche tippecanoe-Aufruf ist eine einzelne Zeile.

Und hey, hier ist eine GL-Map, die mit dieser VT-Quelle gerendert wurde.


Schau das Video: Generating your own OpenMapTiles