Ciao Daniele,
la risposta alle domande o è "42" o è GDAL/OGR ![:slight_smile: :slight_smile:](/images/emoji/twitter/slight_smile.png?v=12)
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.