This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
batimetrielagunave:lineenavigazione [2013/10/31 11:02] 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 modificato, eliminando l'ultima istruzione che rimuove i file di passaggio. 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"'' | + | |
- | Poi bisognerà rimuovere manualmente i file non più utili. |