Table of Contents

Linee di navigazione

Uno degli output previsti nel flusso di elaborazione dei dati multibeam in CARIS è l'esportazione delle linee di navigazione in shapefiles. Il codice che identifica nello shapefile le singole linee è composto di 24 caratteri.

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.

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 in Linux

Per automatizzare la procedura attraverso l'utilizzo di un solo comando ho utilizzato il pacchetto ogr2ogr (http://www.gdal.org/ogr2ogr.html).

Il seguente comando, lanciato da terminale (in ambiente Linux) all'interno della cartella contenente i due shapefile di input (file_first12 e file_last12), permette di ottenere in output un file (output.shp) contenente nel campo Source tutti il 24 caratteri richiesti.

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, 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*

Maggiori informazioni sul significato dei singoli comandi qui: Spiegazione dettagliata del comando

Utilizzo in Windows

Per eseguire in Windows il comando descritto è necessario installare il pacchetto (OSGeo4W).

Diversamente dalla procedura descritta sul sito (e per evitare di installare software non necessari allo scopo), consiglio di seguire le seguenti istruzioni:

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*

Spiegazione dettagliata del comando

Qui di seguito provo a descrivere nel dettaglio cosa fa il comando.

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”