3 façons d'obtenir des données OpenStreetMap 【OSM】

OpenStreetMap est une carte du monde que tout le monde peut modifier. Cela signifie que vous pouvez corriger les erreurs, ajouter de nouveaux lieux et même contribuer vous-même à la carte ! C'est un projet communautaire avec des millions d'utilisateurs enregistrés. Il s'agit d'un projet communautaire visant à rendre toutes les données géographiques accessibles à tous sous une licence ouverte.

Les données OpenStreetMap sont la base de données spatiale la plus récente et la plus détaillée disponible. En conséquence, OSM est devenu une ressource populaire pour les développeurs qui cherchent à utiliser des données cartographiques dans leurs applications et sites Web. Cependant, convertir des données OpenStreetMap en objets OSM et les utiliser dans des projets nécessite de l'expérience et des connaissances spécifiques.

Dans cet article, nous couvrirons les bases de l'obtention de données OpenStreetMap et trois façons d'obtenir des données OSM.

insérez la description de l'image ici

Recommandation : Utilisez l'éditeur NSDT pour créer rapidement des scènes 3D programmables

0. Structure de données OpenStreetMap

Avant de discuter de l'extraction de données et des exemples d'interrogation, examinons les structures de données OpenStreetMap, car ces connaissances sont nécessaires pour mieux comprendre les exemples d'interrogation.

Chaque objet d'une base de données OSM se voit attribuer un type associé à sa table. Les objets sont divisés en trois types : nœuds, chemins et relations. Chaque objet a un identifiant unique. Ainsi, chaque objet dans OSM a un ID et un type. Par exemple, osm_type="way" et osm_id=67104773.

De plus, chaque objet peut avoir des étiquettes décrivant ses propriétés, telles que l'adresse, les heures d'ouverture, le type d'installation, la couleur, les références, la page Wikipedia ou d'autres informations.

0.1 nœud

Les nœuds sont des objets avec des positions (coordonnées). Les nœuds peuvent représenter des boîtes aux lettres, des arbres, des entrées de métro, des centres-villes, des numéros de bâtiments, etc.
insérez la description de l'image ici

Les nœuds peuvent être autonomes ou faire partie d'une relation. Par exemple, une bouche de métro peut faire partie d'une station de métro.

0.2 itinéraire

Un chemin est une ligne ou un polygone, tel qu'une rue, une rivière, un bâtiment ou une limite.
insérez la description de l'image ici

Comme les nœuds, les routes peuvent être autonomes ou faire partie d'une relation. En règle générale, les rues et les rivières sont représentées par un ensemble de voies, de sorte que chaque partie peut avoir ses propres étiquettes, telles que les limites de vitesse, le nombre de voies, les surfaces, etc.

0,3 relation

Une relation est un groupe de nœuds, de routes et éventuellement d'autres relations qui décrivent une structure dans le monde, par exemple la relation "piste cyclable" décrit la structure d'une piste cyclable à côté d'une route.
insérez la description de l'image ici

Les relations peuvent également avoir des étiquettes - celles-ci sont souvent appelées "étiquettes sur les relations" car elles s'appliquent directement à la relation, plutôt qu'aux membres individuels comme les étiquettes de nœud ou de chemin.

0,4 étiquette

Chaque objet d'une base de données OSM peut avoir un ensemble de balises (tags) qui décrivent les caractéristiques et les propriétés de l'objet. Voici un exemple d'étiquetage d'un bâtiment :

  • Bâtiment=oui (cela nous indique que c'est un bâtiment)
  • name=Old Marylebone Town Hall (c'est le nom du bâtiment)
  • opérateur=Conseil municipal de Westminster (ceci nous indique qui exploite le bâtiment)
  • addr:street=Marylebone Road (cela nous indique où se trouve le bâtiment)

La communauté OpenStreetMap (OSM) a travaillé dur pour créer un moyen de garder les étiquettes équilibrées et compréhensibles. Le portail de documentation explique les balises.

La documentation explique non seulement ce que fait chaque étiquette, mais aussi pourquoi elle le fait afin que lorsque vous visualisez une carte sur le Web ou que vous utilisez une application créée à partir de données OSM, vous puissiez savoir ce que vous regardez et savoir où vous sont Ou quelques informations de fond sur l'itinéraire.

La communauté OSM a également créé une série de directives pour le marquage des routes et d'autres éléments sur les cartes. Ces directives sont appelées "guides de style" dans le jargon OSM, et elles expliquent comment étiqueter différents types de choses afin que vos données soient cohérentes avec les données d'autres personnes. Le guide de style est très important car il permet de s'assurer que toutes les cartes utilisant des données OSM se ressemblent !

Voyons comment récupérer des données d'un projet OSM et les utiliser pour créer une nouvelle application :

1. Utilisez l'instantané de données OSM d'origine

Les fichiers OpenStreetMap bruts utilisent un format basé sur XML. Le format XML est conçu pour ajouter de nouvelles informations sur les nœuds, les chemins et les relations, et pour suivre les modifications apportées à la carte.

Les formats alternatifs les plus adaptés à la lecture des données sont générés par des outils et extracteurs tiers.

Voici quelques-unes des méthodes les plus populaires pour obtenir des données brutes OSM :

1.1 Via le site Planet OSM

Planet OSM fournit des instantanés hebdomadaires des données OSM. Il contient tous les objets dans OSM à ce moment-là.

Les fichiers peuvent être convertis en différents formats ou bases de données à l'aide d'outils tiers. Par exemple, Osm2pgsql vous permet d'importer des données dans une base de données Postgis.

Après avoir obtenu les données de la base de données, vous pouvez utiliser des requêtes SQL pour les traiter. Par exemple, cette requête récupère tous les restaurants dans une zone de vue spécifique à Paris, France :

with filterGeom as (select ST_Transform(ST_SetSRID(st_geomfromgeojson('{"type":"Polygon","coordinates":[[[2.2795, 48.8810], [2.4142, 48.8810], [2.4142, 48.8325], [2.2795, 48.8325], [2.2795, 48.8810]]]}'), 4326), 3857) as w)
(select 
pop.osm_id,
pop.tags,
'node' as osm_type,
ST_AsGeoJSON(st_transform(way, 4326))::jsonb as geojson
from planet_osm_point pop, filterGeom
where pop.amenity = 'restaurant' and ST_Intersects(way, filtergeom.w))
union all
(select 
pol.osm_id,
pol.tags,
'polygon' as osm_type,
ST_AsGeoJSON(st_transform(way, 4326))::jsonb as geojson
from planet_osm_polygon pol, filterGeom
where pol.amenity = 'restaurant' and ST_Intersects(way, filtergeom.w))

Notez que certains restaurants sont mappés en tant que nœuds ( planet_osm_point ), tandis que d'autres sont mappés en tant que chemins ( planet_osm_polygon ). Vous devez donc interroger à partir de 2 tables.

1.2 Via le site Geofabrik

Geofabrik fournit quotidiennement des extractions de données OSM pour tous les continents au format PBF. Les données sont nettoyées des métadonnées (données personnelles, ID utilisateur, ensembles de modifications). Vous pouvez donc l'utiliser sans vous soucier des règles de protection des données.

1.3 Via le site BBBike

BBBike fournit des extraits OSM par ville et région. Les extraits ne font que 2 à 50 Mo et vous pouvez choisir des formats de données tels que PBF, XML, des fichiers de formes, des tuiles de carte vectorielle, etc.

2. Utiliser l'API Overpass comme API OSM

L'API Overpass vous permet d'interroger conditionnellement les données OpenStreetMap. Il est optimisé pour la lecture des données, et les requêtes peuvent être écrites en utilisant Overpass QL (ou Overpass XML comme alternative), ou des exemples de requêtes peuvent être trouvés sur la page de documentation Overpass QL.

Vous pouvez utiliser l'outil interactif Overpass Turbo pour exécuter de petites requêtes et tester vos requêtes. Overpass Turbo interactif vous permet de tester les demandes sur la carte en direct. Avec une interface simple et intuitive, vous pouvez facilement rechercher des adresses, utiliser des balises, modifier des objets ou simplement jouer avec la carte.

Voici un exemple de requête qui fait le même travail que l'exemple de la section précédente - interroger des restaurants à Paris :

nw
  [amenity=restaurant]
  (48.8330,2.2792,48.8800,2.4140);
out;

Notez que vous pouvez interroger les données de plusieurs tables en une seule requête. Pour obtenir des informations à partir d'une table, utilisez node, rel et way. Pour interroger simultanément les données de plusieurs tables, utilisez nw, nwr, wr ou nr.

Il existe une liste d'instances d'API Overpass ouvertes disponibles et utilisables gratuitement. Cependant, leur utilisation est limitée, vous ne pouvez donc pas les utiliser à des fins de production dans votre application.

Cependant, il convient de noter que même si l'API Overpass est idéale pour les petites requêtes simples, ce n'est pas le meilleur choix pour les requêtes plus complexes.

3. Utilisez l'API Geoapify pour obtenir des données OSM

L'API Geoapify Places facilite l'intégration des données OpenStreetMap (OSM) dans vos projets. Par exemple, si vous souhaitez des informations sur les restaurants d'une zone spécifique, il vous suffit de spécifier la catégorie du lieu souhaité et la zone à rechercher et d'exécuter la requête HTTP.

Voici l'URL pour obtenir le restaurant à Paris (inscrivez-vous sur MyProjects Geoapify et obtenez une clé API) :

https://api.geoapify.com/v2/places?categories=catering.restaurant&filter=rect:2.2792,48.8330,2.4140,48.8800&limit=100&apiKey=YOUR_API_KEY

Vous n'avez pas besoin d'utiliser l'API Places pour manipuler les nœuds, les chemins et les relations. Nous avons ce qu'il vous faut! De plus, l'API Places inclut des données traitées et vérifiées, vous n'avez donc pas à faire face à l'usure ou aux erreurs que vous pourriez trouver dans les données ouvertes.

Voici un exemple d'exécution d'une requête dans une application JS :

fetch('https://api.geoapify.com/v2/places?categories=catering.restaurant&filter=rect:2.2792,48.8330,2.4140,48.8800&limit=100&apiKey=YOUR_API_KEY')
.then(resp => resp.json())
.then((places) => {
	console.log(places);
});

L'API Geoapify Places prend en charge plus de 500 catégories - hébergement, affaires, restaurants et cafés, loisirs, divertissement, voyages et plus encore.

Vous pouvez essayer l'API Places sur la page Playground , aucune inscription requise.

4. Conclusion

La conclusion que nous pouvons tirer est qu'OSM change la donne. Si vous souhaitez développer des applications open source pour différentes plates-formes, OSM est la source que vous devriez commencer à rechercher. Les données sont disponibles gratuitement, mises à jour rapidement et de nombreux outils sont disponibles.

Vous connaissez maintenant au moins trois façons d'importer des données OSM dans un projet. Le choix de l'outil dépend du type de données que vous recherchez et des capacités dont vous disposez.


Lien d'origine : 3 façons d'obtenir des données OSM—BimAnt

Je suppose que tu aimes

Origine blog.csdn.net/shebao3333/article/details/132384219
conseillé
Classement