settembre 2009
Obiettivo
Questo tutorial illustra le nozioni di base sulla conversione dei dati vettoriali GIS in KML utilizzando la libreria open source OGR. Anche se queste librerie possono essere utilizzate con la maggior parte dei file GIS, questo tutorial si concentrerà sull'utilizzo dei file di forma ESRI.
Introduzione
I dati geografici sono disponibili in molti formati sul Web. KML è uno dei formati di file più diffusi, ma vengono utilizzati anche molti altri tipi di file. Grandi aziende, amministrazioni pubbliche e ONG utilizzano i sistemi di informazione geografica per creare le proprie mappe, oltre a formati di file specializzati. Queste applicazioni spesso richiedono una formazione specializzata, o quanto meno importante. Quelli proprietari possono essere piuttosto costosi. D'altra parte, sono molto potenti e forniscono una vasta gamma di strumenti di mappatura per il mappatore professionista.
Molti enti governativi rilasciano una parte dei propri dati GIS per uso pubblico. Portali come Data.gov, Massachusetts Geographic Information System e DataSF semplificano la ricerca di dati per le loro comunità. Questo articolo descrive come convertire i dati vettoriali, ossia dati composti da semplici geometrie come punti, linee e poligoni, in KML. Questo ti consentirà di accedere a una varietà di tipi di dati, tra cui:
- Dati catastali che rappresentano i confini della costruzione di pacchi
- Dati sugli incidenti, ad esempio segnalazioni di reati
- Dati al limite per i confini di comuni, stati, contee, province e così via
- Dati stradali, incluse strade pianificate ed esistenti
- Permessi di costruzione, che indicano dove sono stati rilasciati
- Dati sanitari, ad esempio quando si verificano incidenti di epidemie influenzali
Esistono molte applicazioni eccellenti per eseguire la conversione dei dati, come Google Earth Pro, shp2placeholder, KML2 KML, Arc2 Earth e molte altre. Questo articolo si concentrerà sulla conversione dei dati vettoriali in formato KML per l'utilizzo in Google Earth o Google Maps, utilizzando le utilità open source Geospatial Data Abstraction Library(GDAL) dalla riga di comando e potrebbe ispirarti a integrare queste librerie nelle tue applicazioni.
Una nota sui tipi di file
Anche se in questo articolo vengono illustrati i passaggi da seguire per la conversione di file Shapefile di ESRI in formato KML, le utilità GDAL, in particolare OGR, possono essere utilizzate per la conversione da un'ampia gamma di tipi di file, tra cui CSV, database PostGRES/PostGIS e diversi altri formati. Sono supportati la maggior parte dei principali formati di dati. Se trovi un formato non supportato, puoi scrivere un driver per OGR, poiché è una libreria open source.
Shapefile
Il popolare formato file ESRI è uno dei formati di dati GIS più comuni. Anche se tecnicamente il file di forma è un singolo file con estensione .shp, un file .shp non può essere aperto da solo. Richiede almeno un file .dbf e .shx ed è richiesta una varietà di altri file per vari scopi. Quando vedi un riferimento a un file di forma, significa quasi sempre che si tratta di una raccolta di file, di solito in un archivio compresso di qualche tipo per mantenerlo unito. Questo è il modo in cui utilizzeremo il termine Shapefile per il resto di questo articolo.
I file di forma contengono una grande quantità di informazioni sulle regioni che descrivono. Descrivono le geometrie effettive, i metadati sulle geometrie e le informazioni sul sistema di riferimento spaziale utilizzato, nonché molti altri aspetti dei dati. Ai fini di questo articolo, ci occuperemo soprattutto di geometrie, metadati e sistema di riferimento spaziale.
Geometrie e metadati sono concetti semplici. Le geometrie sono punti, linee e poligoni e possono essere facilmente espresse in KML. I metadati sono dati relativi ai dati, spesso utilizzati per scopi di filtro o di esecuzione di query. Ad esempio, una riga che descrive una strada potrebbe avere metadati relativi al tipo di strada (strada municipale, autostrada nazionale, autostrada e così via), i limiti di velocità, a chi la finanzia, le sue dimensioni e così via.
I sistemi di riferimento spaziale (SRS) vengono utilizzati per identificare i sistemi di coordinate e le proiezioni utilizzati per creare i dati vettoriali. In KML utilizza la latitudine e la longitudine in un sistema di coordinate WGS84. Tuttavia, esistono altri modi per identificare le coordinate su una mappa. I servizi più diffusi includono: Universal Transverse Mercator, British National Grid e State Plane. Per convertire i dati in KML, potrebbe essere necessario identificare queste informazioni. KML supporta solo WGS84. In genere, le informazioni verranno aggiunte tramite i file di forma, spesso in un file .prj, e OGR può rilevarle da lì. A volte, però, è necessario identificare l'SRS. A volte viene fornito in una qualche forma dall'origine dati, nella pagina da cui lo scarichi, in un documento readme con il download o in un altro formato. Generalmente è sufficiente. Il sito Spatial Reference contiene ulteriori informazioni su SRS e contiene un riferimento che ti consente di cercare singoli sistemi di riferimento.
ogr2ogr
GDAL offre un potente set di librerie per lavorare con i dati vettoriali. In particolare, ogr2ogr
è una potente utilità per la conversione dei dati. Molte applicazioni, comprese alcune menzionate sopra, incorporano GDAL/OGR.
Per iniziare, scarica e installa GDAL. Avrai quindi bisogno di un file di forma. Ai fini di questo tutorial, prova a utilizzarne uno di DataSF. L'esempio riportato di seguito utilizza il file di forma realtor_neighborhoods
, che può essere ottenuto dopo aver accettato la licenza, qui. Dopo aver scaricato il file, decomprimilo in una directory che potrai ricordare. Apri una riga di comando e vai alla directory in cui hai inserito i dati. Ora la parte divertente.
ogr2ogr
può essere utilizzato dalla riga di comando in tutta semplicità. Ecco come puoi convertire realtor_neighborhoods
da un file di forma in KML:
ogr2ogr -f "KML" -where "NBRHOOD='Telegraph Hill'" realtor_neighborhoods.kml realtor_neighborhoods.shp
Ecco un'analisi dettagliata di ciò che fa questo comando:
ogr2ogr
: questo è il comando principale.-f "KML
: imposta il formato di output su KML.-where "NBRHOOD='Telegraph Hill'"
: si tratta di una clausolawhere
facoltativa, ad esempio in SQL. Fondamentalmente, consente di eseguire query sui dati in base ai metadati. Funziona con i file di forma e con altri tipi di file che supportano l'esecuzione di query. In questo caso, viene eseguita una query per il campo NBRHOOD e si selezionano soltanto le funzionalità che hanno un NBRHOOD di Telegraph Hill. Se lasci questo parametro disattivato,ogr2ogr
ti fornisce ogni poligono di quartiere.realtor_neighborhoods.kml
: questo è il nome del file di output. Il nome del file di output viene prima di tutto.realtor_neighborhoods.shp
: questo è il nome del file di input. Il file .shp rappresenta l'intero file di forma.
Questo è tutto, è molto semplice. Il comando seguente scrive un file KML simile al seguente:
<?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>
Come puoi vedere, i metadati del file di forma sono stati conservati negli elementi Schema
e SimpleData
. Per saperne di più sull'utilizzo di ExtendedData e sulla conservazione dei dati personalizzati, consulta la sezione KML Developer's Guide su Add Custom Data (Aggiunta di dati personalizzati).
Passaggi successivi
GDAL/OGR ti dà una straordinaria potenza. Nell'implementazione più semplice, ora puoi convertire tutti i dati in KML per utilizzarli in Google Earth, Maps o in qualsiasi altro browser geografico che supporta KML. Ancora meglio, puoi incorporare le librerie GDAL/OGR nelle tue applicazioni, offrendoti la possibilità di automatizzare la conversione dei dati GIS in KML e controllando l'output della conversione. Prova a combinarlo con lib\"> per avere un controllo ancora maggiore sulla generazione dei file KML.