[QGIS-it-user] conversione file "atipico"!
aborruso
aborruso a gmail.com
Lun 19 Giu 2017 05:41:26 PDT
Ciao Daniele,
la risposta alle domande o è "42" o è GDAL/OGR :)
Daniele Bonaposta wrote
> Ciao a tutti,
> ho un problema di conversione di formati.
>
> Ho delle polilinee 3d, suddivise in 17 cartelle; ognuna così composta:
> - file csv con tutti i dati per la parte alfanumerica
> , tra cui un
> campo chiamato
>
>
>
> "ID_file_txt" in cui
> c'è scritto
> un numero intero progressivo.
> - cartella "txt" contenente:
>
> - file txt, uno per polilinea, nominati con un numero, tipo "1.txt",
> "2.txt", ecc..
>
> Questi file sono così strutturati:
>
> 1,646423.039800000,5124623.892100001,2471.5797394464962
>
> progressivo,coordinata est,coordinata nord,quota
>
> Ogni riga corrisponde ad un vertice della polilinea.
> Non ha header.
>
> Il collegamento tra la parte alfanumerica e vettoriale è dato dal numero
> progressivo nel campo
>
> "ID_file_txt" del csv ed il nome del file txt.
A parte gli scherzi, ti do solo un piccolo input. Se fai uno script (in bash
è cosa rapida), in cui fai il merge dei file txt, e poi aggiungi una riga di
intestazione, ha già un formato spaziale "standard". Grazie alla magica
GDAL/OGR.
Se ad esempio hai un file di merge come questo (l'ho chiamato input.csv):
way_id,x,y,z
1,2,49,10
1,3,50,10
2,-2,49,5
2,-3,50,5
3,2,40,30
3,3,50,30
3,3,52,30
Se lo leggi con ogrinfo:
ogrinfo input.csv -dialect SQLite -sql "SELECT way_id,
MakeLine(MakePointZ(CAST(x AS float),CAST(y AS float),CAST(z AS float)))
FROM input GROUP BY way_id"
Ottieni:
Feature Count: 3
Extent: (-3.000000, 40.000000) - (3.000000, 52.000000)
Geometry Column = MakeLine(MakePointZ(CAST(x AS float),CAST(y AS
float),CAST(z AS float)))
way_id: String (0.0)
OGRFeature(SELECT):0
way_id (String) = 1
LINESTRING Z (2 49 10,3 50 10)
OGRFeature(SELECT):1
way_id (String) = 2
LINESTRING Z (-2 49 5,-3 50 5)
OGRFeature(SELECT):2
way_id (String) = 3
LINESTRING Z (2 40 30,3 50 30,3 52 30)
Viene mantenuta la info 3D, come vedi da "LINESTRING Z".
E quindi lo puoi anche convertire con ogr2ogr in qualsiasi formato. Questo
il caso di default:
ogr2ogr -s_srs EPSG:4326 -t_srs EPSG:4326 output.shp input.csv -dialect
SQLite -sql "SELECT way_id, MakeLine(MakePointZ(CAST(x AS float),CAST(y AS
float),CAST(z AS float))) FROM input GROUP BY way_id"
Saluti
--
View this message in context: http://osgeo-org.1560.x6.nabble.com/conversione-file-atipico-tp5324391p5324672.html
Sent from the QGIS Italian User mailing list archive at Nabble.com.
Maggiori informazioni sulla lista
QGIS-it-user