[QGIS-it-user] Formato ENC (S57)

Andrea Giudiceandrea andreaerdna a libero.it
Sab 15 Apr 2023 03:14:17 PDT


Il 14/04/2023 17:44, Emanuele ha scritto:
> La domanda e': il vostro software consente di 
> elaborare tutte e 250 celle in questo formato ed esportarlo 
> successivamente in formato GeoJson? (vedere prova sotto).C'e' modo di 
> automatizzare tale processo attraverso tool aggiuntivi al programma? In 
> seguito ogni mese circa, ci verrano forniti anche dei file di 
> aggiornamento, vi allego in copia entrambi i file per avere un esempio.
> La cella base ha un’estensione _000 e rappresenta una carta completa; 
> gli aggiornamenti, invece, hanno estensione _001, _002, … ecc, secondo 
> una sequenza progressiva, e contengono solo varianti alla cella base.

Ciao Emanuele,
questa è una mailing-list di utenti di QGIS. QGIS non è quindi il 
"nostro software". QGIS è un software con licenza GNU GPLv2 (Free e Open 
Source) ed è mantenuto da una comunità di sviluppatori e 
dall'associazione QGIS.ORG. Per maggiori info: https://www.qgis.org/

QGIS usa la libreria GDAL/OGR https://www.gdal.org/ per l'importazione, 
l'esportazione e la conversione della maggior parte dei formati di dati, 
tra cui i formati IHO S-57 (ENC) e GeoJSON.

In particolare, tutte le caratteristiche del supporto del formato S-57 
da parte della libreria GDAL/OGR sono indicate alla pagina 
https://gdal.org/drivers/vector/s57.html

Come indicato in tale pagina:
"The base files normally have the extension .000 while the update files 
have extensions like .001, .002 and so on. The S-57 reader will normally 
read and apply all updates files to the in memory version of the base 
file on the fly. The feature data provided to the application therefore 
includes all the updates."

Ciò significa che i file di aggiornamento .001, .002, ..., sono 
automaticamente letti (da QGIS tramite GDAL/OGR) se presenti nella 
stessa cartella del file .000.

Un modo efficace per automatizzare il processo di conversione di vari 
file dal formato S-57 al formato GeoJSON è quello di creare uno script 
in Python, utilizzando funzionalità della libreria GDAL/OGR, che può 
essere usato sia tramite l'interfaccia grafica di QGIS (Python console), 
sia direttamente.

Per esempio, il seguente semplice script Python converte i layer 
presenti nel file C:\\percorso\\s57\\IT50196C.000 (e relativo 
IT50196C.001, se presente nella stessa cartella) e li memorizza in 
formato GeoJSON e nella cartella C:\\percorso\\geojson\\


from osgeo import gdal, ogr

file_s57 = 'C:\\percorso\\s57\\IT50196C.000'
output_path = 'C:\\percorso\\geojson\\'

srcDS = ogr.Open(file_s57, False)
numLayers = srcDS.GetLayerCount()
for iLayer in range (numLayers):
     layerName = srcDS.GetLayer(iLayer).GetName()
     gdal.VectorTranslate(
         output_path + layerName + '.geojson',
         file_s57,
         layers=[layerName],
         format='GeoJSON')
del srcDS

Chiaramente lo script può essere facilmente modificato per effettuare la 
stessa operazione per qualsiasi numero di file di input.
Eventualmente può essere integrato in un apposito plugin o in un 
apposito algoritmo di processing da usare in QGIS.

Un altro modo è quello di usare i tool ogrinfo e ogr2ogr in uno script 
Windows Batch.

Comunque la libreria GDAL/OGR può essere usata anche in vari altri 
linguaggi di programmazione.

Per maggiori informazioni:

https://gdal.org/api/index.html
http://pcjericks.github.io/py-gdalogr-cookbook/index.html
https://docs.qgis.org/3.28/en/docs/pyqgis_developer_cookbook/index.html
https://docs.qgis.org/3.28/en/docs/user_manual/index.html
https://docs.qgis.org/3.28/en/docs/user_manual/plugins/python_console.html
https://docs.qgis.org/3.28/en/docs/pyqgis_developer_cookbook/plugins/index.html
https://docs.qgis.org/3.28/en/docs/user_manual/processing/scripts.html

A presto.

Andrea Giudiceandrea


Maggiori informazioni sulla lista QGIS-it-user