Suite

OpenStreetMap Style Editor en plus de Mapbox TileMill et CloudMade

OpenStreetMap Style Editor en plus de Mapbox TileMill et CloudMade


Je recherche un éditeur de style OSM en ligne qui me permette de styliser les voies et les nœuds OSM par balises. Je sais que l'éditeur de CloudMade n'est plus disponible, et Mapbox le fait mais a des limites de rendu de niveau de zoom (par exemple, ne rendra pas les bâtiments inférieurs au niveau de zoom 13).

Mon objectif est d'obtenir une carte des États-Unis (ou du monde si je peux) qui montre où chaque bâtiment OSM a été cartographié (façons avec building =). Et une deuxième carte qui montre où se trouve chaque bâtiment OSM + adresse (voies avec addr:housenumber=).

Voici un exemple de carte que j'ai fait en utilisant un extrait d'état OSM dans le Kentucky, traité avec Osmosis et QGIS pour le rendu :

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

Mais malheureusement, l'extrait d'Amérique du Nord est trop volumineux pour que je puisse travailler avec, et QGIS ne peut même pas ouvrir le gros fichier traité par Osmosis sur ma machine. J'ai également configuré les bases de données osm2pgsql et PostgreSQL/PostGIS, mais encore une fois, la taille des fichiers et les temps de traitement sont trop importants.

Existe-t-il un outil en ligne où je peux styliser des bâtiments avec un faible niveau de zoom ?


RÉSOLU

J'ai finalement obtenu l'image dont j'avais besoin de tous les bâtiments et bâtiments avec des adresses pour toute l'Amérique du Nord, en utilisant les informations dans la réponse ci-dessous.

J'ai essentiellement configuré postgres et utilisé pgAdmin3 pour le gérer, puis osm2pgsql dans la ligne de commande avec les options et les styles corrects pour charger l'export .pbf brut dans la base de données, puis je m'y connecte avec QGIS pour le visualiser.

Une fois que les données étaient dans postgres, elles étaient faciles et rapides à traiter, même en les affichant dans QGIS sur mon modeste ordinateur.

Bâtiments

Voici les statistiques et ce que j'ai fait pour la couche d'empreinte du bâtiment :

osm2pgsql -U mschnuerle -d mschnuerle --create --slim --flat-nodes nabuildings.bin --cache 18000 --number-processes 3 --style buildings.style north-america-latest.osm.pbf; Traitement : Node(794783k 1292,3k/s) Way(52669k 32,51k/s) Relation(471970 89,52/s) temps d'analyse : 7507s (2 heures) cache de nœud : stocké : 794783721 (100,00 %), efficacité de stockage : 66,31% ( blocs denses : 695842, nœuds clairsemés : 243029485), taux de réussite : 100,00 % Osm2pgsql a pris 88452 s au total (24 heures) Taille de la base de données de sauvegarde : 4 Go

avec seulement ceci dans le fichier buildings.style (tout le reste supprimé) :

chemin de construction de texte polygone chemin way_area réel linéaire

Adresses

Et voici ce que j'ai fait uniquement pour les bâtiments auxquels étaient rattachées des adresses postales :

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 north-america-latest.osm.pbf; Traitement : Node(794783k 1271,7k/s) Voie (52669k 31,67k/s) Relation(471970 37,13/s) Temps d'analyse : 14998s (4h) Osm2pgsql a pris 17455s au total (5h)

avec ceci dans le fichier address.style (tout le reste supprimé):

way addr: housenumber text polygon way way_area manière linéaire réelle construction de texte supprimer

Et les spécifications de ma machine sont les suivantes, pour ceux qui demandent :

Spécifications Mac

OS X El Capitan 10.11 Beta iMac 27" mi-2011 3,1 GHz Intel Core i5 (4 cœurs) 25 Go 1333 MHz DDR3 1 To SATA HD

C'est la seule carte en ligne qui montre les empreintes de bâtiments à ce niveau, pour autant que je sache. Si vous en trouvez d'autres, faites-le moi savoir ici.

Je prévois également de créer toutes les tuiles Mapbox nécessaires à l'aide de Tippecanoe et de publier la carte en ligne au cours des prochaines semaines.


La réponse courte est qu'il n'y a pas de moyen exceptionnel.

Options qui ne fonctionneront pas bien

Hadoop

Hadoop et les outils similaires ne sont pas la solution, car il est tout à fait possible de faire ce type d'analyse sur un serveur raisonnablement puissant. Vous n'avez peut-être pas de serveur raisonnablement puissant, auquel cas Hadoop ne serait pas une bonne option car il a besoin d'un cluster.

S'il vous arrive d'avoir un cluster Hadoop et que vous êtes un expert dans son utilisation, c'est raisonnable, mais sinon c'est plus de temps de développement pour aucun gain.

Tuiles vectorielles

Les tuiles vectorielles ne suppriment aucune étape de traitement, elles permettent simplement de partager une partie du travail par plusieurs styles. Comme vous l'avez vu avec le style de Mapbox Streets, les bâtiments ne sont pas souvent dans des tuiles vectorielles à faible zoom, vous devrez donc les générer vous-même.

Vous pouvez assembler des tuiles vectorielles à faible zoom, mais vous devez utiliser votre propre chaîne d'outils de rendu pour cela, et ce serait complexe.

Options raisonnables

OSM compte environ 160 millions de voies de construction, 35 millions de nœuds d'adresses et 21 millions de voies avec adresses. La plupart des derniers sont aussi des bâtiments.

Osm2pgsql

osm2pgsql peut gérer cela sur du matériel raisonnable, si vous prenez soin d'exclure d'autres données. Pour ce faire, vous voulez un fichier .style personnalisé qui n'inclut que les balises d'adresse et de bâtiment. En commençant par empty.style, le point de départ suggéré, nous pouvons obtenir

node,way addr:unit text linear node,way addr:housename text linear node,way addr:housenumber text node linéaire,way addr: street text linear way building text polygon

Tout ce qui se trouve ci-dessous est copié de empty.style, avec les lignes "building" et z_order supprimées. Le premier est ci-dessus en tant que colonne réelle, le dernier n'est pas pertinent pour cette utilisation way_area est inclus, car il est utile

voie abandonnée:aeroway text phstore voie abandonnée:amenity text phstore voie abandonnée:construction text phstore voie abandonnée:landuse text phstore voie abandonnée:power text phstore voie zone:highway text phstore node,way aeroway text phstore node,way amenity text phstore way building : texte partiel nœud de phstore, nœud de phstore de texte de chemin, nœud de phstore de texte historique, nœud de phstore de texte d'utilisation des terres, nœud de phstore de texte de loisirs, nœud de phstore de texte man_made, nœud de phstore de texte militaire, nœud de phstore de texte naturel, bureau de chemin texte nœud phstore,way lieu texte nœud phstore,way power texte nœud phstore,way public_transport texte nœud phstore,way boutique texte nœud phstore,way sport texte nœud phstore,way tourisme texte nœud phstore,way water text nœud phstore,way waterway texte phstore node,way zone humide texte phstore way way_area real linear # Ceci est calculé lors de l'import

Enregistrez-le sousstyle.des.bâtiments

Vous pouvez ensuite importer la planète, en utilisant quelque chose basé sur la ligne de commande osm2pgsql suggérée pour la planèteosm2pgsql -c -d bâtiments --style /chemin/vers/bâtiments.style --slim --drop -C --flat-nodes /chemin/vers/planet-latest.osm.pbf

  • est de 24 000 sur les machines avec 32 Go ou plus de RAM ou environ 75 % de la mémoire en Mio sur les machines avec moins
  • est un emplacement où un fichier de 24 Go peut être enregistré.

Il y a quelques options différentes utilisées

--tomberse débarrasse des tables utilisées uniquement lors de l'importation et lors des mises à jour, car je suppose que vous mettrez à jour en réimportant

--style /chemin/vers/bâtiments.stylespécifie d'utiliser le style que nous avons écrit ci-dessus

Cela prendra un jour ou deux sur un serveur raisonnablement alimenté.

Une fois l'importation terminée, vous pouvez ajouter quelques index qui amélioreront les performances

CRÉER UN INDEX planet_osm_polygon_area_18250_idx ON planet_osm_polygon USING gist (way) WHERE way_area > 18250; CRÉER UN INDEX planet_osm_polygon_area_1140_idx ON planet_osm_polygon USING gist (way) WHERE way_area > 1140; CRÉER UN INDEX planet_osm_polygon_area_71_idx ON planet_osm_polygon USING gist (way) WHERE way_area > 71;

Lors de la définition des couches dans Kosmtik, Tilemill ou un autre studio de conception de cartes, incluez la conditionWHERE way_area > 0.05*!pixel_width!::real*!pixel_height!::realsur toutes les couches de polygones.

Certaines choses à surveiller lors de la visualisation

  • Le rendu de beaucoup de petits polygones ne fonctionne pas bien. C'est pourquoi, ainsi que les performances, il existe une zone de coupure pour les couches.
  • Cela va toujours être lent, mais le pré-rendu des États-Unis devrait être tout à fait raisonnable
  • Testez d'abord sur une petite zone

https://switch2osm.org/loading-osm-data/ contient plus d'informations sur la configuration de PostgreSQL et l'installation d'osm2pgsql

Libosme

libosmium est une bibliothèque pour travailler avec des données OSM, et probablement la meilleure option pour opérer directement sur le fichier planète.

QGIS ou ArcGIS

Si vous utilisez autant de données dans QGIS ou ArcGIS, vous souhaiterez probablement les scripter, mais vous pouvez effectuer une analyse plus sophistiquée.

Multi-backend osm2pgsql

Ceci est très similaire à ce qui précède, mais présente un backend plus flexible, ce qui peut donner des tableaux mieux adaptés à l'exportation vers un autre format.


qa.poole.ch rend les bâtiments OSM avec et sans adresses, les nœuds avec adresses et les zones résidentielles sans adresses pour le monde depuis presque des siècles sur du HW pas très haut de gamme. Les tuiles peuvent être utilisées librement. Il n'y a rien de particulièrement raffiné à ce sujet, naturellement le rendu des tuiles à faible zoom est lent, mais ils ne sont pas vraiment assez intéressants pour y consacrer un effort.


Comme vous l'avez découvert, il y a un prix à payer pour essayer de traiter et de rendre des millions, voire des dizaines à des centaines, de millions d'objets à faible zoom. Vous atteindrez des limites à un moment donné, ou vous devrez peut-être vous asseoir sur des temps de traitement ou de dessin atrocement longs.

Malheureusement, de nombreux utilisateurs de SIG moins expérimentés ont du mal à comprendre cela, voire refusent de l'accepter.

Votre question peut donc être irréaliste, à moins que vous ne viviez dans la position de luxe d'avoir à portée de main des installations de traitement distribué de Big Data de "style de recherche scientifique", comme des clusters gérés par Hadoop et l'écosystème d'applications associé comme les bases de données distribuées (sans SQL), qui sont en fait conçus pour gérer ce type de débit et effectuer des analyses sur des objets aussi vastes (des dizaines à des centaines de millions, voire des milliards) en temps opportun.

Un ordinateur portable ou de bureau « ménager » moyen, ou même un poste de travail professionnel à 12 cœurs, n'est pas égal…

Ce n'est pas sans raisons que l'OSM a adopté le concept d'occupation du sol comme « résidentiel », « industriel », etc.

Il existe en effet des outils développés pour mettre les données d'un SIG dans un cluster de traitement Big Data. Par exemple. ESRI a développé un certain nombre d'Open Source disponibles ici : https://github.com/Esri/gis-tools-for-hadoop

Un blog intéressant de l'un de ses développeurs (Mansour Raad) est ici : http://thunderheadxpler.blogspot.com/


Je ne suis pas d'accord avec certaines des autres réponses : rouler vos propres tuiles vectorielles et les rendre n'est pas particulièrement difficile. Toi volonté devez supprimer certaines données à des niveaux de zoom faibles pour que le rendu fonctionne correctement, mais il existe des outils qui gèrent cette simplification automatiquement pour vous.

En particulier, tippecanoe est un excellent projet open source qui a été utilisé pour créer certaines des cartes les plus riches en informations du Web. Vous pouvez choisir vos propres niveaux de zoom et simplifications min et max. Voici un exemple de script que j'ai utilisé pour créer des tuiles vectorielles pour la carte sur openaddresses.io. Il y en a beaucoup, mais cela inclut les étapes de création de tippecanoe et de normalisation de l'ensemble de données OpenAddresses dans GeoJSON. L'invocation réelle de tippecanoe est une seule ligne.

Et bon, pour faire bonne mesure, voici une carte GL rendue à l'aide de cette source VT.


Voir la vidéo: Mapbox GL JS 01 Setup u0026 styles u0026 adding points