[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