Septembre 2009
Objectif
Ce didacticiel présente les bases de la conversion de données vectorielles SIG au format KML à l'aide de la bibliothèque Open Source OGR. Bien que ces bibliothèques puissent être utilisées avec la plupart des fichiers SIG, ce tutoriel se concentre sur l'utilisation de fichiers de forme ESRI.
Introduction
Les données géographiques sont disponibles sous de nombreuses formes sur le Web. KML est l'un des formats de fichiers les plus courants, mais de nombreux autres types de fichiers sont également utilisés. Les grandes entreprises, les gouvernements et les ONG utilisent des systèmes d'informations géographiques pour créer leurs cartes, ainsi que des formats de fichiers spécialisés. Ces applications nécessitent souvent une formation spécialisée, ou au moins beaucoup de temps pour se former. Les propriétaires peuvent s'avérer coûteux. D'un autre côté, ils sont très puissants et offrent de nombreux outils de cartographie aux cartographes professionnels.
De nombreuses entités gouvernementales libèrent une partie de leurs données SIG à des fins publiques. Des portails comme Data.gov, le Massachusetts Geographic Information System et DataSF permettent de trouver facilement les données de leurs communautés. Cet article explique comment convertir des données vectorielles, c'est-à-dire des données composées de géométries simples telles que des points, des lignes et des polygones, en KML. Vous aurez ainsi accès à différents types de données, dont les suivants:
- Données cadastrales représentant les limites de la construction de parcelles
- Données sur les incidents, telles que les rapports de délit
- Données de délimitation pour les limites de municipalités, d'États, de comtés, de provinces, etc.
- Données routières, y compris les routes planifiées et existantes
- Permis de construction indiquant où des permis ont été émis
- Données de santé, comme l'emplacement des incidents d'épidémie de grippe
Il existe de nombreuses applications de qualité pour la conversion de données, telles que Google Earth Pro, shp2kml, KML2KML, Arc2Earth et bien d'autres encore. Cet article porte sur la conversion de données vectorielles au format KML en vue de leur utilisation dans Google Earth ou Google Maps, à l'aide des utilitaires Open Source Geospatial Data Abstraction Library(GDAL) à partir de la ligne de commande. Vous serez peut-être également invité à incorporer ces bibliothèques dans vos propres applications.
Remarque sur les types de fichiers
Cet article décrit la procédure de conversion des fichiers de formes ESRI au format KML, mais les utilitaires de la GDAL, en particulier OGR, permettent de convertir un grand nombre de types de fichiers, y compris des bases de données CSV et PostGRES/PostGIS, et de divers autres formats. La plupart des principaux formats de données sont compatibles. Si vous trouvez un format non compatible, vous pouvez écrire un pilote pour OGR, car il s'agit d'une bibliothèque Open Source.
Fichiers de forme
Le format de fichier de forme populaire d'ESRI est l'un des formats de données SIG les plus courants. Bien que, techniquement, le fichier de forme soit un fichier unique portant l'extension .shp, un fichier .shp ne peut pas être ouvert seul. Il nécessite au moins un fichier .dbf et .shx, ainsi que d'autres fichiers à d'autres fins. Ainsi, quand vous voyez une référence à un fichier de forme, cela signifie presque toujours une collection de fichiers, généralement dans une archive compressée d'un certain type pour les garder ensemble. C'est ainsi que nous utiliserons le terme fichier de forme pour le reste de cet article.
Les fichiers Shape contiennent de nombreuses informations sur les zones géographiques qu'ils décrivent. Elles décrivent les géométries réelles, les métadonnées sur les géométries et les informations sur le système de référence spatiale utilisé, ainsi que de nombreux autres aspects des données. Pour les besoins de cet article, nous nous intéresserons particulièrement à la géométrie, aux métadonnées et au système de référence spatiale.
Les géométries et les métadonnées sont des concepts simples. Les géométries sont des points, des lignes et des polygones, et elles peuvent facilement être exprimées au format KML. Les métadonnées sont des données souvent utilisées pour filtrer ou interroger des données. Par exemple, une ligne décrivant une route peut contenir des métadonnées sur le type de route (rue municipale, nationale, autoroute, etc.), les limites de vitesse, l'identité de la route, sa taille, etc.
Les systèmes de référence spatiales (SRS) permettent d'identifier les systèmes de coordonnées et les projections servant à créer les données vectorielles. En KML, la latitude et la longitude sont utilisées dans un système de coordonnées WGS84. Mais il existe d'autres moyens d'identifier des coordonnées sur une carte. Parmi les plus populaires figurent : Universal Transverse Mercator, le Grid National National et le State Plan. Pour convertir des données au format KML, vous devrez peut-être les identifier. KML n'est compatible qu'avec WGS84. En règle générale, les fichiers shapefile intègrent ces informations, souvent dans un fichier .prj, et le protocole OGR peut alors les détecter. Toutefois, il est parfois nécessaire d'identifier le SRS. Parfois, elles sont fournies par la source de données, soit sur la page depuis laquelle vous les téléchargez, soit dans un document Lisez-moi avec le téléchargement, ou dans un autre format. En général, cela suffit. Le site Référence spatiale contient plus d'informations sur la SRS. Il contient également une référence qui vous permet de rechercher des systèmes de référence individuels.
ogr2ogr
La GDAL fournit un ensemble puissant de bibliothèques pour travailler avec des données vectorielles. ogr2ogr
est particulièrement utile pour la conversion de données. De nombreuses applications intègrent la GDAL/OGR, y compris celles mentionnées ci-dessus.
Pour commencer, téléchargez et installez GDAL. Vous aurez ensuite besoin d'un fichier de forme. Pour les besoins de ce tutoriel, essayez d'en utiliser un à partir de DataSF. L'exemple ci-dessous utilise le fichier de forme realtor_neighborhoods
, qui peut être obtenu après avoir accepté sa licence (cliquez ici). Une fois le fichier téléchargé, décompressez-le dans un répertoire dont vous vous souviendrez. Ouvrez une ligne de commande et accédez au répertoire dans lequel vous avez placé les données. Passons maintenant à la partie la plus amusante :
ogr2ogr
est très facile à utiliser depuis la ligne de commande. Voici comment convertir realtor_neighborhoods
d'un fichier shapefile au format KML:
ogr2ogr -f "KML" -where "NBRHOOD='Telegraph Hill'" realtor_neighborhoods.kml realtor_neighborhoods.shp
Voici le détail de cette commande:
ogr2ogr
: il s'agit de la commande principale.-f "KML
: définit le format de sortie sur KML.-where "NBRHOOD='Telegraph Hill'"
: il s'agit d'une clausewhere
facultative, comme dans SQL. En fait, il vous permet d'interroger les données en fonction de métadonnées. Elle fonctionne avec les fichiers shapefile et d'autres types de fichiers compatibles avec l'interrogation. Dans ce cas, il s'agit d'une requête pour le champ NBRHOOD, et ne sélectionne que les caractéristiques qui ont une NBRHOOD de Telegraph Hill. Si vous laissez ce paramètre désactivé,ogr2ogr
vous donne le polygone de chaque quartier.realtor_neighborhoods.kml
: nom du fichier de sortie. Le nom du fichier de sortie apparaît en premier.realtor_neighborhoods.shp
: nom du fichier d'entrée. Le fichier .shp représente l'intégralité du fichier shapefile.
Voilà, c'est très simple. Cette commande écrit un fichier KML qui se présente comme suit:
<?xml version="1.0" encoding="utf-8" ?> <kml xmlns="http://www.opengis.net/kml/2.2"> <Document><Folder><name>realtor_neighborhoods</name> <Schema name="realtor_neighborhoods" id="realtor_neighborhoods"> <SimpleField name="Name" type="string"></SimpleField> <SimpleField name="Description" type="string"></SimpleField> <SimpleField name="OBJECTID" type="float"></SimpleField> <SimpleField name="NBRHOOD" type="string"></SimpleField> <SimpleField name="SFAR_DISTR" type="string"></SimpleField> </Schema> <Placemark> <ExtendedData><SchemaData schemaUrl="#realtor_neighborhoods"> <SimpleData name="OBJECTID">81</SimpleData> <SimpleData name="NBRHOOD">Telegraph Hill</SimpleData> <SimpleData name="SFAR_DISTR">District 8 - Northeast</SimpleData> </SchemaData></ExtendedData> <Polygon><outerBoundaryIs><LinearRing><coordinates>-122.41041847319012,37.805924016582715,0 -122.407203813674,37.806324902060979,0 -122.40667792852096,37.803710121958744,0 -122.40348255423899,37.804117462290641,0 -122.40237202127015,37.798540648764529,0 -122.40876046662795,37.797723222540775,0 -122.41041847319012,37.805924016582715,0</coordinates></LinearRing></outerBoundaryIs></Polygon> <Style><LineStyle><color>ff0000ff</color></LineStyle> <PolyStyle><fill>0</fill></PolyStyle></Style> </Placemark> </Folder></Document></kml>
Vous pouvez constater que les métadonnées du fichier de forme ont été conservées, dans les éléments Schema
et SimpleData
. Pour en savoir plus sur l'utilisation de ExtendedData et la conservation de données personnalisées, consultez la section Ajout de données personnalisées du guide du développeur KML.
Étape suivante
La GDAL/OGR vous offre une puissance incroyable. Dans la méthode la plus simple, vous pouvez désormais convertir toutes vos données au format KML pour les utiliser dans Google Earth, Google Maps ou tout autre navigateur utilisant KML. Mieux encore, vous pouvez intégrer les bibliothèques GDAL/OGR dans vos applications, ce qui vous permet d'automatiser la conversion des données SIG en KML et de contrôler les résultats de cette conversion. Essayez de l'associer à libkml pour encore plus de contrôle programmatique sur la génération de vos fichiers KML.