User Tools

Site Tools


batimetrielagunave:lineenavigazione

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
batimetrielagunave:lineenavigazione [2013/10/31 11:07]
alesarrett [Utilizzo in Windows]
batimetrielagunave:lineenavigazione [2015/09/11 08:57] (current)
Line 4: Line 4:
 Il codice che identifica nello shapefile le singole linee è composto di 24 caratteri. Il codice che identifica nello shapefile le singole linee è composto di 24 caratteri.
  
-===== Duplicazione ​shapefile in CARIS =====+===== Problema: duplicazione ​shapefile in CARIS =====
  
 Il problema è che (per qualche ragione a me sconosciuta) CARIS richiede di salvare 2 shapefiles, uno con il campo "//​Source"//​ contenente le prime 12 cifre dell'​identificativo della linea, e un secondo shapefile che nel campo "//​Source//"​ contiene le ultime 12 cifre. Il problema è che (per qualche ragione a me sconosciuta) CARIS richiede di salvare 2 shapefiles, uno con il campo "//​Source"//​ contenente le prime 12 cifre dell'​identificativo della linea, e un secondo shapefile che nel campo "//​Source//"​ contiene le ultime 12 cifre.
Line 10: Line 10:
 Se ho capito bene, la procedura attuale prevede di aprire i //dbf// dei due shapefiles, copiare il contenuto delle due colonne //Source// in un foglio di calcolo che in una terza colonna concatena le stringhe dei 2 campi nei 24 richiesti, ricopiare tale colonna in uno dei due file originali, cancellare l'​altro shapefile. Se ho capito bene, la procedura attuale prevede di aprire i //dbf// dei due shapefiles, copiare il contenuto delle due colonne //Source// in un foglio di calcolo che in una terza colonna concatena le stringhe dei 2 campi nei 24 richiesti, ricopiare tale colonna in uno dei due file originali, cancellare l'​altro shapefile.
  
-===== Soluzione con ogr2ogr =====+===== Soluzione con ogr2ogr ​in Linux =====
  
 Per automatizzare la procedura attraverso l'​utilizzo di un solo comando ho utilizzato il pacchetto **ogr2ogr **(http://​www.gdal.org/​ogr2ogr.html). Per automatizzare la procedura attraverso l'​utilizzo di un solo comando ho utilizzato il pacchetto **ogr2ogr **(http://​www.gdal.org/​ogr2ogr.html).
Line 18: Line 18:
 ==== Comando completo ==== ==== Comando completo ====
  
-''​ogr2ogr file_first12_FID.shp file_first12.shp -sql "​SELECT *, FID AS FID4JOIN FROM file_first12"​ && ogr2ogr file_last12_FID.shp file_last12.shp -sql "​SELECT *, FID AS FID4JOIN FROM file_last12"​ && ogr2ogr -f "ESRI Shapefile"​ -overwrite output.shp file_first12_FID.shp -sql "​SELECT Key, Feature, CONCAT(file_first12_FID.Source,​ file_last12_FID.Source) AS Source, Theme, Length, MinZ, MaxZ FROM file_first12_FID LEFT JOIN '​file_last12_FID.dbf'​.file_last12_FID ON file_first12_FID.FID4JOIN = file_last12_FID.FID4JOIN"​ && rm *_FID*''​+''​ogr2ogr file_first12_FID.shp file_first12.shp -sql "​SELECT *, FID AS FID4JOIN FROM file_first12"​ && ogr2ogr file_last12_FID.shp file_last12.shp -sql "​SELECT *, FID AS FID4JOIN FROM file_last12"​ && ogr2ogr -f "ESRI Shapefile"​ -overwrite output.shp file_first12_FID.shp -sql "​SELECT Key, Feature, CONCAT(file_first12_FID.Source, ​substr(file_last12_FID.Source,5)) AS Source, Theme, Length, MinZ, MaxZ FROM file_first12_FID LEFT JOIN '​file_last12_FID.dbf'​.file_last12_FID ON file_first12_FID.FID4JOIN = file_last12_FID.FID4JOIN"​ && rm *_FID*''​
  
-==== Spiegazione dettagliata del comando ====+Maggiori informazioni sul significato dei singoli comandi qui: [[batimetrielagunave:​lineenavigazione#​spiegazione_dettagliata_del_comando|Spiegazione dettagliata del comando]] 
 + 
 +===== Utilizzo in Windows ===== 
 + 
 +Per eseguire in Windows il comando descritto è necessario installare il pacchetto ([[http://​trac.osgeo.org/​osgeo4w/​|OSGeo4W]]). 
 + 
 +Diversamente dalla procedura descritta sul sito (e per evitare di installare software non necessari allo scopo), consiglio di seguire le seguenti istruzioni:​ 
 + 
 +  * dopo aver scaricato la versione a [[http://​download.osgeo.org/​osgeo4w/​osgeo4w-setup-x86.exe|32bit]] o [[http://​download.osgeo.org/​osgeo4w/​osgeo4w-setup-x86_64.exe|64bit]] 
 +  * lanciare il file .exe 
 +  * scegliere //Advanced Install// > Avanti 
 +  * //Install from Internet// > Avanti 
 +  * lasciare le impostazioni di Default > Avanti 
 +  * lasciare le impostazioni di Default > Avanti 
 +  * lasciare le impostazioni di Default > Avanti 
 +  * selezionare ''​http://​download.osgeo.org''​ > Avanti 
 +  * selezionare in **Libs** il pacchetto **gdal** come da immagine sottostante 
 +{{:​batimetrielagunave:​gdal.png?​800|}} 
 +  * Avanti 
 +  * Attendere il download e l'​installazione dei pacchetti 
 +  * per lanciare la shell cliccare sull'​icona **OSGeo4W Shell** che dovrebbe essere presente ora sul Desktop 
 +  * altrimenti, se non è presente alcuna icona sul desktop, basta lanciare **OSGeo4W.bat** da C:​\OSGeo4W64 
 +  * nella finestra del terminale è necessario spostarsi nella cartella contenente gli shapefile originali da unire, utilizzando il comando ''​cd''​ ([[http://​comandi-dos-e-altro.jimdo.com/​i-comandi-dos/​cd-o-chdir|qui]] alcune info in più) 
 +  * il comando è leggermente modificato rispetto a quello in Linux, modificando l'​ultima istruzione che rimuove i file di passaggio da ''​rm *_FID*''​ in ''​del *_FID*''​. Risulterà quindi il seguente: 
 + 
 +''​ogr2ogr NAV_XX_WEEK_first12_FID.shp NAV_XX_WEEK_first12.shp -sql "​SELECT *, FID AS FID4JOIN FROM NAV_XX_WEEK_first12"​ && ogr2ogr NAV_XX_WEEK_last12_FID.shp NAV_XX_WEEK_last12.shp -sql "​SELECT *, FID AS FID4JOIN FROM NAV_XX_WEEK_last12"​ && ogr2ogr -f "ESRI Shapefile"​ -overwrite NAV_XX_WEEK.shp NAV_XX_WEEK_first12_FID.shp -sql "​SELECT CONCAT(NAV_XX_WEEK_first12_FID.Source,​ SUBSTR(NAV_XX_WEEK_last12_FID.Source,​5)) AS Source, Length FROM NAV_XX_WEEK_first12_FID LEFT JOIN '​NAV_XX_WEEK_last12_FID.dbf'​.NAV_XX_WEEK_last12_FID ON NAV_XX_WEEK_first12_FID.FID4JOIN = NAV_XX_WEEK_last12_FID.FID4JOIN"​ && del *_FID*''​ 
 + 
 +  * in un editor di testo basterà sostituire nel comando le "​XX"​ con il numero di settimana corrispondente 
 +===== Spiegazione dettagliata del comando ​=====
  
 Qui di seguito provo a descrivere nel dettaglio cosa fa il comando. Qui di seguito provo a descrivere nel dettaglio cosa fa il comando.
Line 31: Line 59:
   * l'​istruzione seleziona (''​SELECT''​) e quindi restituisce in output, tutti i campi presente nel file originale (''​*''​) e in più anche il campo ''​FID'',​ che viene rinominato in ''​FID4JOIN''​ (perché sarà usato in funzione del JOIN successivo)   * l'​istruzione seleziona (''​SELECT''​) e quindi restituisce in output, tutti i campi presente nel file originale (''​*''​) e in più anche il campo ''​FID'',​ che viene rinominato in ''​FID4JOIN''​ (perché sarà usato in funzione del JOIN successivo)
   * a questo punto abbiamo due nuovi shapefile **file_first12_FID.shp** e **file_last12_FID.shp** che verranno usati nel comando successivo   * a questo punto abbiamo due nuovi shapefile **file_first12_FID.shp** e **file_last12_FID.shp** che verranno usati nel comando successivo
-  ''​ogr2ogr -f "ESRI Shapefile"​ -overwrite output.shp file_first12_FID.shp -sql "​SELECT Key, Feature, CONCAT(file_first12_FID.Source,​ file_last12_FID.Source) AS Source, Theme, Length, MinZ, MaxZ FROM file_first12_FID LEFT JOIN '​file_last12_FID.dbf'​.file_last12_FID ON file_first12_FID.FID4JOIN = file_last12_FID.FID4JOIN"''​+  ''​ogr2ogr -f "ESRI Shapefile"​ -overwrite output.shp file_first12_FID.shp -sql "​SELECT Key, Feature, CONCAT(file_first12_FID.Source, ​substr(file_last12_FID.Source,5)) AS Source, Theme, Length, MinZ, MaxZ FROM file_first12_FID LEFT JOIN '​file_last12_FID.dbf'​.file_last12_FID ON file_first12_FID.FID4JOIN = file_last12_FID.FID4JOIN"''​
   * di nuovo viene chiamato il comando ogr2ogr   * di nuovo viene chiamato il comando ogr2ogr
   * il parametro ''​-f "ESRI Shapefile"''​ dice che i successivi file in input sono di tipo //ESRI shapefile//   * il parametro ''​-f "ESRI Shapefile"''​ dice che i successivi file in input sono di tipo //ESRI shapefile//
Line 39: Line 67:
   * ''​-sql''​ dice nuovamente che la seguente espressione contenuta tra virgolette ''"''​ è un'​istruzione SQL   * ''​-sql''​ dice nuovamente che la seguente espressione contenuta tra virgolette ''"''​ è un'​istruzione SQL
   * l'​istruzione SQL fa un JOIN tra il file //​file_first12_FID.shp//​ e il file  //​file_last12_FID.dbf //usando il campo univoco //​FID4JOIN//​ presente in entrambi i file (istruzione ''​LEFT JOIN '​file_last12_FID.dbf'​.file_last12_FID ON file_first12_FID.FID4JOIN = file_last12_FID.FID4JOIN''​)   * l'​istruzione SQL fa un JOIN tra il file //​file_first12_FID.shp//​ e il file  //​file_last12_FID.dbf //usando il campo univoco //​FID4JOIN//​ presente in entrambi i file (istruzione ''​LEFT JOIN '​file_last12_FID.dbf'​.file_last12_FID ON file_first12_FID.FID4JOIN = file_last12_FID.FID4JOIN''​)
-  * il ''​SELECT''​ crea uno shapefile contenente tutti i campi originali (Key, Feature, Source, Theme, Length, MinZ, MaxZ) con //Source //che però contiene l la concatenazione (''​CONCAT''​) dei due campi //Source //​originari. +  * il ''​SELECT''​ crea uno shapefile contenente tutti i campi originali (Key, Feature, Source, Theme, Length, MinZ, MaxZ) con //Source //che però contiene l la concatenazione (''​CONCAT''​) dei due campi //Source //​originari. ​In realtà dal secondo campo viene estratta una stringa a partire dal 5° carattere tramite ​il comando ''​substr(nomeFile.campo,5)''​
- +
-==== Utilizzo in Windows ==== +
- +
-Per eseguire in Windows ​il comando ​descritto è necessario installare il pacchetto ([[http://​trac.osgeo.org/​osgeo4w/​|OSGeo4W]]). +
- +
-Diversamente dalla procedura descrittasul sito (e per evitare di installare software non necessari allo scopo), consiglio di seguirele seguenti istruzioni:​ +
- +
-  * dopo aver scaricato la versione a [[http://​download.osgeo.org/​osgeo4w/​osgeo4w-setup-x86.exe|32bit]] o [[http://​download.osgeo.org/​osgeo4w/​osgeo4w-setup-x86_64.exe|64bit]] +
-  * lanciare il file .exe +
-  * scegliere //Advanced Install// > Avanti +
-  * //Install from Internet// > Avanti +
-  * lasciare le impostazioni di Default > Avanti +
-  * lasciare le impostazioni di Default > Avanti +
-  * lasciare le impostazioni di Default > Avanti +
-  * selezionare ​''​http://​download.osgeo.org''​ > Avanti +
-  * selezionare il **Lib** il pacchetto **gdal** come da immagine sottostante +
-{{:​batimetrielagunave:​gdal.png?​800|}} +
-  * Avanti +
-  * Attendere il download e l'​installazione dei pacchetti +
-  * per lanciare la shell cliccare sull'​icona //OSGeo4W Shell// che dovrebbe essere presente ora sul Desktop +
-  * il comando va leggermente modificatomodificando l'ultima istruzione che rimuove i file di passaggio da ''rm *_FID*''​ in ''​del *_FID*''​. Risulterà quindi il seguente:+
  
-''​ogr2ogr file_first12_FID.shp file_first12.shp -sql "​SELECT *, FID AS FID4JOIN FROM file_first12"​ && ogr2ogr file_last12_FID.shp file_last12.shp -sql "​SELECT *, FID AS FID4JOIN FROM file_last12"​ && ogr2ogr -f "ESRI Shapefile"​ -overwrite output.shp file_first12_FID.shp -sql "​SELECT Key, Feature, CONCAT(file_first12_FID.Source,​ file_last12_FID.Source) AS Source, Theme, Length, MinZ, MaxZ FROM file_first12_FID LEFT JOIN '​file_last12_FID.dbf'​.file_last12_FID ON file_first12_FID.FID4JOIN = file_last12_FID.FID4JOIN"​ && del *_FID*''​ 
batimetrielagunave/lineenavigazione.1383214045.txt.gz · Last modified: 2015/09/11 08:57 (external edit)