Good Ideas

KML e KMZ: introduzione a questi sconosciuti

Posted by:

|

On:

|

tutorial kmzIn questo articolo parleremo del formato più popolare usato in Google Earth per segnalibri e quant’altro, il KMZ, e del suo fratello minore, il KML. Se apriamo un file KMZ ci rendiamo subito conto di quante informazioni esso riesca a contenere, a partire dai segnaposti (che si possono identificare con svariate icone) anche appositi layer, poligoni, percorsi e sovrapposizioni personalizzate. Ma non molti sanno che per creare un file siffatto non occorre necessariamente Google Earth, ma basta semplicemente un editor qualsiasi di testo; per capire il perché, descriviamo brevemente i due file:

KML : è un formato di file che deriva dall’ xml, il creatore di metalinguaggi per antonomasia; questo metalinguaggio è l’acronimo di  Keyhole Markup Language , appunto uno dei tanti metalinguaggi nati da xml per soddisfare le esigenze più svariate

KMZ : è un file binario che sembrerebbe ad un’ occhiata superficiale un formato proprietario come ne esistono tanti in giro, addirittura forse anche criptato; beh, niente di più sbagliato! In realtà esso è un semplice file KML, o anche numerosi file, insieme ad immagini, layer, icone, ecc. il tutto zippato con uno qualsiasi dei famosi zippatori (ne esistono sia per windows che per linux) e poi cambiato di nome da .zip a .kmz!

Soffermiamoci adesso sul KML, in questo tutorial impareremo i comandi più elementari (come mettere un segnaposto), anche perché per una referenza completa esiste già l’apposito sito. Se apriamo un kml con un semplice editor di testo vedremo una serie di comandi appositi, qualcosa simile, nella forma più semplice,  a questo listato:

 

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">

<Document>
     <Placemark>
          <name>Cari monti</name>
          <description><![CDATA[Buccheri è un piccolo paese di montagna e questa è una sua foto<img src="buccheri.jpg" width="200">]]></description>
         <Point>
              <coordinates>14.8463833,37.1254722,0 </coordinates>
         </Point>

         <LookAt>
              <longitude>-122.363</longitude>
              <latitude>37.81</latitude>
              <altitude>2000</altitude>
              <range>500</range>
              <tilt>45</tilt>
              <heading>0</heading>
              <altitudeMode>relativeToGround</altitudeMode>
         </LookAt>

    </Placemark>
</Document>

</kml>

La prima riga <?xml version="1.0" encoding="UTF-8"?> è molto comune non solo nel kml, ma in tutti i metalinguaggi derivati dal xml; essa serve ad istruire il parser (leggasi Google Earth) proprio del fatto che siamo in presenza di un metalinguaggio che deriva dall xml (<?xml ……. ?>); viene esplicitata anche la versione (nel caso ci siano cambiamenti tra una versione e l’altra), ed il tipo di codifica utilizzata (nel nostro caso o UTF-8 oppure ISO-8859-1).

Per i pochi che non conoscono l’HTML o altri metalinguaggi, solitamente essi condividono tutti la tipica struttura:

<tag1> […] </tag1> o ancora meglio <tag1 opzione1="valore1" opzione2="valore2" ……..> […] </tag> dove al posto di […] si può trovare del testo semplice o ancora sottostrutture simili a quelle di sopra. Detto questo iniziamo:

<kml xmlns="http://earth.google.com/kml/2.1"> […] </kml> indicano che tutto quello che sta fra loro due deve essere considerato come linee di codice kml. L’xmlns è invece un modo per precisare in che file (locale o remoto) si trovano le specifiche del linguaggio, il cosiddetto ‘namespace’, qualcosa di simile al DOCTYPE (anche se con talune differenze).

Il kml prevede inoltre altri tag di incapsulamento <Document> […] </Document> (occhio alle maiuscole e minuscole, sono sempre importanti in kml!).

kml kmz

Finalmente siamo arrivati al tag più semplice di tutti: i segnaposto; nella sua struttura base esso è definito con <Placemark> e all’interno dei tag coniugati possiamo:

  • Definire un nome con l’apposito tag <name>, usato al solito così <name> NomeCheVoglio</name>
  • Darne una descrizione (che apparirà nella finestrella quando cliccheremo) con il tag <description>, sempre come abbiamo fatto con name, però con una particolarità: se sappiamo scrivere in HTML possiamo inserire righe di codice all’interno usando questa struttura speciale <![CDATA[   […]    ]]> . In questo modo possiamo anche inserire immagini (come abbiamo fatto nel file di esempio iniziale.
  • Dare un punto con le coordinate, coi tag <Point> e, figlio di questo, <coordinates> , in cui le coordinate sono 3 separate da virgola: latitudine, longitudine ed elevazione.
  • Fare tanto altro con altrettanti sottotag che qui non trattiamo (esiste già il sito apposito per questo).

Infine abbiamo messo anche un tag <LookAt> che serve a definire da che angolazione si vuole guardare il mappamondo; essendo esso figlio di Placemark, si può avere un accoppiamento bizzarro di questi tag in cui un placemark è in una certa zona, e la vista ricade su un’altra zona completamente diversa. Vediamo le caratteristiche di questo tag e cosa esso può definire:

  • per quanto riguarda i tag <longitude>, <latitude>, <altitude> penso non ci siano problemi in quanto sono autoesplicativi.
  • <range> rappresenta la distanza dell’osservatore dal punto osservato
  • <tilt> angolo fra la perpendicolare alla superficie e l’osservatore
  • <heading> rappresenta la direzione della bussola, partendo da nord
  • <altitudeMode> può essere relativeToGround oppure absolute, in caso sia da considerarsi altitudine rispetto al livello del suolo o del mare

Abbiamo capito insomma che (anche se forse un po’ laborioso) è possibile editare i nostri file kml e creare quelli kmz con semplici programmi, avendo un controllo maggiore e più incisivo rispetto a quello donato dalle relativamente poche opzioni che Google Earth ci mette a disposizione. Nella reference, creata apposta per persone che già sanno più o meno quello che fanno,  vengono a galla tutte le potenzialità offerte da un editing ‘manuale’.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *