Topic: Gestione file kml  (Letto 2602 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline protoss1976

  • python unicellularis
  • *
  • Post: 2
  • Punti reputazione: 0
    • Mostra profilo
Gestione file kml
« il: Maggio 28, 2012, 17:13 »
Ciao a tutti, passo subito al sodo e Vi chiedo la fattibilità di un'applicazione.

Parto dalla base:
Ci sono diversi utenti, ognuno dei quali ha una matricola ex. AA123, BB123 ecc.
questi utenti sono sparsi in tutto il territorio nazionale, l'arhivio in mio possesso è formato da varie cartelle, una per ogni regione, in queste cartelle sono situati dei file che al momento sono salvati in formato .gdb che è un formato leggibile con il programma della GARMIN mapsource, ma tranquillamente convertibili in file accessibili tramite google earth.
Nei file ci sono vari waypoint.
Esempio composizione del file:
Un Waypoint per la coordinata di residenza dell'utente
Vari Waypoint di zone che l'utente dovrà "perlustrare" (non stò qui a spegarvi il motivo top secret).
Ogni zona deve essere assegnata a, massimo 3 utenti, quindi posso anche avere delle zone che al momento sono assegnate a solo 2 utenti.
In aggiunta, ho un file generale dove sono presenti i waypoint di residenza di tutti gli utenti e i waypoint di tutte le zone, rinominati in questo modo:
file nome zona A1
i waypoint che si riferiscono a quella zona, sono rinominati A1001, A1002, A1003 ecc.
Ora passiamo al dunque.

Ogni utente ha comunicato a me la distanza massima che intende percorrere per raggiungere le zone, io tramite questo software, opportunamente inizializzato con la distanza massima di ogni utente, devo trovare le zone con posti liberi quindi minori di 3 e entro la distanza massima comunicatami.

Spero di essere stato chiaro (non credo), ma vorrei almeno una discussione costruttiva sulla fattibilità e sulle conoscenze specifiche per elaborare il tutto.

Il file generale è tranquillamente convertibile in un file .kml, girando in rete ho trovato questo http://it.wikipedia.org/wiki/Keyhole_Markup_Language

Ma ora il problema è la misura delle distanze.

Per finire aggiungo che non sò quasi niente di Python e stò cominciando a studiarlo ora. Ho letto in rete che per imparare un linguaggio bisogna porsi un obbiettivo finale, il mio obiettivo è quello sopra citato. Forse mi sono buttato troppo avanti, ma non credo sia impossibile, vorrei sapere da voi se per un principiante il progetto è troppo complicato da eseguire.

Grazie in anticipo sulle risposte che sicuramente mi darete e porgo cordiali saluti

Offline riko

  • python deus
  • *
  • moderatore
  • Post: 7.453
  • Punti reputazione: 12
    • Mostra profilo
    • RiK0 Tech Temple
Re: Gestione file kml
« Risposta #1 il: Maggio 28, 2012, 19:51 »
Per finire aggiungo che non sò quasi niente di Python e stò cominciando a studiarlo ora. Ho letto in rete che per imparare un linguaggio bisogna porsi un obbiettivo finale, il mio obiettivo è quello sopra citato. Forse mi sono buttato troppo avanti, ma non credo sia impossibile, vorrei sapere da voi se per un principiante il progetto è troppo complicato da eseguire.

Non sai quasi niente di Python o non sai quasi niente di programmazione?
Se hai esperienza "buona" (idealmente di tipo lavorativo) su un qualche linguaggio ad oggetti C++/Java et similia il progetto e' assolutamente fattibile.

Se non hai esperienza di programmazione, temo ti devi prima fare la trafila di esercizietti base. Un obiettivo e' importante, ma un minimo di basi sono necessarie.
Quello che vuoi fare non e' di base complicato, pero' comunque devi avere un po' di confidenza con alcuni concetti di partenza.

Se non hai esperienza di programmazione ad oggetti, anche li ti suggerirei di dare un'occhiatina all'argomento.

Per il tuo problema "algoritmico" e' standard: grafo etichettato + ricerca in ampiezza a profondita' massima. Potenzialmente potrebbe anche essere di tipo iterativo.
Ovviamente non ti so dire cosa mettere sulle etichette senza guardare i dati in tuo possesso... o chilometri "stradali", oppure una stima grezza della distanza in linea d'aria se non hai di meglio.
O query a google mappe... ma diventa *molto* lento.

Offline protoss1976

  • python unicellularis
  • *
  • Post: 2
  • Punti reputazione: 0
    • Mostra profilo
Re: Gestione file kml
« Risposta #2 il: Maggio 29, 2012, 10:18 »
Riassumo brevemente le mie conoscenze:

Ho fatto anni fà qualche programmino in VB6, gestione di un magazzino con connessione ad un database .mdb, con annessa ricerca modifica ed inserimento record su più tabelle.
Ora stò cercando da tempo di imparare quantomeno le cose basilari su un linguaggio OO, ho acquistato qualche mese fà 2 libri di Deitel & Deitel, uno C++ fondamenti di prgrammazione e un'altro Java fondamenti di programmazione, poi però, anche se l'apprendimento era buono e non ho riscontrato difficolta, leggendo sui forum ho capito che per uno come me che vuole imparare a programmare per hobby i linguaggi sopracitati non  davano soddisfazioni a breve termine.
Quindi la scelta ricadev o su un linguaggio .NET oppure su un linguaggio multipiattaforma come Python e dato che sono un amante del mondo Linux la mia scelta è caduta su Python.

Per quanto riguarda L'OO, conosco il concetto di variabile, tipi di dati, operazioni con le stringhe, sò cosè una funzione e i vari parametri e attributi, sò cos'è una classe e un'oggetto, sò cosè un dato membro e una funzione membro della classe, so anche cosè un costruttore, sò cosa sono i cicli, e sò quali sono le istruzioni condizionali, non stò prorpio a 0 insomma.

Ora mi serve di mettere tutto questo in pratica con Python.
Vi sarei grato se mi postasse qualche link da mettere in pratica sul mio progetto, per esempio, apro il file klm, lo scorro e trovo un tag, fine primo obbiettivo, poi passo al secondo e così via.

Diciamo che al momento mi basta realizzare la parte di ricerca e misura della distanza, per esempio, cerco il waypointe di residenza di un utente AA123 e controllo la zona più vicina a lui, il programma mi dovrebbe dare in output la distanza tra la residenza di AA123 e il Waypoint più vicino a lui.
Poi passo al resto.
Vi allego un esempio di file kml con tre residenze di utenti AA123, BB123, CC123 e tre zone A1001.....B1001.....C1001....

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"
   xmlns:gx="http://www.google.com/kml/ext/2.2">
  <Document>
    <name>GPS device</name>
    <snippet>Created 05/29/12 09:59:39</snippet>
    <LookAt>
      <gx:TimeSpan>
        <begin>2012-05-29T07:48:37Z</begin>
        <end>2012-05-29T07:53:37Z</end>
      </gx:TimeSpan>
      <longitude>13.162614</longitude>
      <latitude>42.297949</latitude>
      <range>122158.537042</range>
    </LookAt>
<!-- Normal waypoint style -->
    <Style id="waypoint_n">
      <IconStyle>
        <Icon>
          <href>http://maps.google.com/mapfiles/kml/pal4/icon61.png</href>
        </Icon>
      </IconStyle>
    </Style>
<!-- Highlighted waypoint style -->
    <Style id="waypoint_h">
      <IconStyle>
        <scale>1.2</scale>
        <Icon>
          <href>http://maps.google.com/mapfiles/kml/pal4/icon61.png</href>
        </Icon>
      </IconStyle>
    </Style>
    <StyleMap id="waypoint">
      <Pair>
        <key>normal</key>
        <styleUrl>#waypoint_n</styleUrl>
      </Pair>
      <Pair>
        <key>highlight</key>
        <styleUrl>#waypoint_h</styleUrl>
      </Pair>
    </StyleMap>
    <Folder>
      <name>Waypoints</name>
      <Placemark>
        <name>A1001</name>
        <description>Rocce Nude, Rupi</description>
        <TimeStamp><when>2012-05-29T07:49:51Z</when></TimeStamp>
        <styleUrl>#waypoint</styleUrl>
        <Point>
          <coordinates>12.723449,42.350501,1193.00</coordinates>
        </Point>
      </Placemark>
      <Placemark>
        <name>A1002</name>
        <description>Monte Macchia (1259m)</description>
        <TimeStamp><when>2012-05-29T07:50:52Z</when></TimeStamp>
        <styleUrl>#waypoint</styleUrl>
        <Point>
          <coordinates>12.723772,42.350734,1247.00</coordinates>
        </Point>
      </Placemark>
      <Placemark>
        <name>A1003</name>
        <description>Monte Macchia (1259m)</description>
        <TimeStamp><when>2012-05-29T07:51:11Z</when></TimeStamp>
        <styleUrl>#waypoint</styleUrl>
        <Point>
          <coordinates>12.723772,42.350734,1247.00</coordinates>
        </Point>
      </Placemark>
      <Placemark>
        <name>AA123</name>
        <TimeStamp><when>2012-05-29T07:48:37Z</when></TimeStamp>
        <styleUrl>#waypoint</styleUrl>
        <Point>
          <coordinates>12.791564,42.028454,235.00</coordinates>
        </Point>
      </Placemark>
      <Placemark>
        <name>B1001</name>
        <description>Boschi Di Latifoglie</description>
        <TimeStamp><when>2012-05-29T07:51:46Z</when></TimeStamp>
        <styleUrl>#waypoint</styleUrl>
        <Point>
          <coordinates>13.382316,42.410823,1191.00</coordinates>
        </Point>
      </Placemark>
      <Placemark>
        <name>B1002</name>
        <description>1220 m altezza</description>
        <TimeStamp><when>2012-05-29T07:52:22Z</when></TimeStamp>
        <styleUrl>#waypoint</styleUrl>
        <Point>
          <coordinates>13.382364,42.410488,1220.00</coordinates>
        </Point>
      </Placemark>
      <Placemark>
        <name>B1003</name>
        <description>1200</description>
        <TimeStamp><when>2012-05-29T07:52:35Z</when></TimeStamp>
        <styleUrl>#waypoint</styleUrl>
        <Point>
          <coordinates>13.381690,42.410777,1202.00</coordinates>
        </Point>
      </Placemark>
      <Placemark>
        <name>BB123</name>
        <description>Boschi Di Latifoglie</description>
        <TimeStamp><when>2012-05-29T07:49:11Z</when></TimeStamp>
        <styleUrl>#waypoint</styleUrl>
        <Point>
          <coordinates>12.796942,42.567444,607.00</coordinates>
        </Point>
      </Placemark>
      <Placemark>
        <name>C1001</name>
        <description>Boschi Misti</description>
        <TimeStamp><when>2012-05-29T07:53:20Z</when></TimeStamp>
        <styleUrl>#waypoint</styleUrl>
        <Point>
          <coordinates>12.865943,42.037770,842.00</coordinates>
        </Point>
      </Placemark>
      <Placemark>
        <name>C1002</name>
        <description>Boschi Misti</description>
        <TimeStamp><when>2012-05-29T07:53:37Z</when></TimeStamp>
        <styleUrl>#waypoint</styleUrl>
        <Point>
          <coordinates>12.874905,42.032380,757.00</coordinates>
        </Point>
      </Placemark>
      <Placemark>
        <name>CC123</name>
        <TimeStamp><when>2012-05-29T07:49:27Z</when></TimeStamp>
        <styleUrl>#waypoint</styleUrl>
        <Point>
          <coordinates>13.601780,42.350501,1371.00</coordinates>
        </Point>
      </Placemark>
    </Folder>
  </Document>
</kml>


Spero di non essere andato fuori topic e di non avervi annoiato

Grazie ancora
« Ultima modifica: Maggio 29, 2012, 10:22 da protoss1976 »

Offline Giornale di Sistema

  • python sapiens sapiens
  • ******
  • Post: 3.124
  • Punti reputazione: 4
    • Mostra profilo
    • Distillato di Python
Re: Gestione file kml
« Risposta #3 il: Maggio 29, 2012, 10:32 »
Vi allego un esempio di file kml con tre residenze di utenti AA123, BB123, CC123 e tre zone A1001.....B1001.....C1001....

Sii gentile, gli spezzoni di codice dopo averli inseriti selezionali e clicca sul pulsante # in alto.

Offline riko

  • python deus
  • *
  • moderatore
  • Post: 7.453
  • Punti reputazione: 12
    • Mostra profilo
    • RiK0 Tech Temple
Re: Gestione file kml
« Risposta #4 il: Maggio 29, 2012, 11:01 »
Ho fatto anni fà qualche programmino in VB6, gestione di un magazzino con connessione ad un database .mdb, con annessa ricerca modifica ed inserimento record su più tabelle.

Ok. Direi che allora le basi ci sono... fai giusto qualche piccolo programma per provare "a pezzi" le features di Python e va bene cosi'.

Citazione
Per quanto riguarda L'OO, conosco il concetto di variabile, tipi di dati, operazioni con le stringhe, sò cosè una funzione e i vari parametri e attributi, sò cos'è una classe e un'oggetto, sò cosè un dato membro e una funzione membro della classe, so anche cosè un costruttore, sò cosa sono i cicli, e sò quali sono le istruzioni condizionali, non stò prorpio a 0 insomma.

Quindi fondamenti di OOP si, OOD nulla. Io darei un'occhiatina all'argomento, come dicevo. E' piuttosto difficile programmare ad oggetti in modo sensato senza qualche idea di design ad oggetti.
Non e' strettamente necessario, ma scommetto che tempo 2 mesi farai alcune domande su come fare certe cose con le GUI che con un minimo di OOD sarebbero state automatiche (cft. MVC).

Citazione
Vi sarei grato se mi postasse qualche link da mettere in pratica sul mio progetto, per esempio, apro il file klm, lo scorro e trovo un tag, fine primo obbiettivo, poi passo al secondo e così via.

Python non e' basic. Pensare ad alto livello premia. Per esempio io non ti consiglierei di "pensare" di scorrere il file.
Prendi direttamente una libreria che gestisce XML (e.g., elementtree). A quel punto semplicemente fai le query che ti servono sul file.
Se il file e' piccolo ti conviene prenderlo e trasformarlo in una struttura ad oggetti in memoria. Fine.