[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