[GRASS-Italia] come esportare un file ascii "X Y Z" da un file di curve di livello

Massimo Di Stefano massimodisasha a yahoo.it
Sab 24 Feb 2007 12:17:48 CET


Ciao,

ho una questione da risolvere, vi spiego:


il mio obbiettivo  di ricavare un file di testo tipo :

X	Y	Z
..
..
a partire da un file di curve di livello.

io sto provando con :

a partire dal file di curve di livello, lo trasformo in punti
tramite "vector to vector"

generico d.what.vect sul file di punti generato mi da :

East: 2524748.55219
North: 4509851.42641
Map: out
Mapset: cdl2
Point

Layer: 1
Category: 657
driver: dbf
database: /Users/epifanio/Documents/grassdata/salerno/cdl2/dbf/
table: out_1
key column: cat
cat : 657
FID_ :
Entity : Polyline
Handle : 2960B
Layer : 05.01-Curva dir.
Color : 4
Linetype : Continuous
Elevation : 725
Thickness : 0
Text :
Layer: 2
Category: 6415
driver: dbf
database: /Users/epifanio/Documents/grassdata/salerno/cdl2/dbf/
table: out_2
key column: cat
cat : 6415
lcat : 657
along : 3967.424662

esportaro il file di punti con:
v.out.ascii


il file di export  del tipo :

2524464.205 4510655.961 1
2524459.58400078 4510657.39162497 1
2524455.06343952 4510658.51987919 1
2524454.4559001 4510662.2213528 1
2524458.4969279 4510663.26737144 1
2524462.17553609 4510660.29479857 1
2524464.205 4510655.961 1
2523634.473 4510605.156 2
2523636.36678512 4510609.62505364 2
2523638.93617648 4510613.75929112 2
2523641.48038258 4510617.90730795 2
...
...
2523837.081489 4508421.86860594 913
2523841.77492321 4508423.51461687 913
2523846.45768689 4508425.19030463 913
2523850.96811371 4508427.25524908 913
2523855.46731962 4508429.36566738 913
2523860.02059782 4508431.36683469 913
2523864.53819442 4508433.44750418 913
2523869.16988716 4508435.23216124 913
2523873.9152734 4508436.72185049 913
2523878.84059243 4508437.33824915 913
2523883.80484724 4508437.20891746 913
2523888.71571044 4508436.45537197 913
2523893.59133563 4508435.47244594 913
2523898.546 4508435.162 913


  come associare l'attributo "elevation"
al file ascii che ho generato.....

  tramite il comando :
  v.to.db -p map=nome_vettore type=line layer=1 qlayer=1 option=query  
column=elevation qcolumn=elevation > text.file

mi genero un file come questo :

cat|query
1|            680
2|            600
3|            640
4|            550
5|            590
6|           1010
7|           1015
8|            955
9|            955
10|            935
11|            950
12|            955
...
...
...
900|            585
901|            580
902|            570
903|            565
904|            560
905|            555
906|            530
907|            545
908|            540
909|            535
910|            530
911|            540
912|            545
913|            535



avete un idea su come usare sed-awk-gawk-perl o altro ... per :
associare ad ogni punto la giusta altezza ?


al cat presente nell'export di v.out.ascii corrisponde l'altezza  
individuata da  v.to.db
come posso creare una colonna delle altezze...(che consideri tutti i  
punti)?

  es: primo valore della colonna "elevation" replicato tante volte  
quante volte viene replicato il cat=1
nel file generato da v.out.ascii
.....secondo valore "elevation" replicato tante volte quante vole  
viene relplicato il cat=2 nel file  "v.out.ascii"
e cosi via fino all'ultimo valore di cat...

avete una soluzione?


a me basterebbe un file di testo con  una colonna delle altezze per  
ciascun punto
del file esportato con v.out.ascii.

una volta ottenuta la colonna delle altezze per ciascun punto
potrei risolvere con :

gawk '{if(ARGIND==1){one[i++]=$1" "$2}else if(ARGIND==2 && $0 !~ /^#/) 
{two[j++]=$1}} END{for(i in one)print one[i],two[i]}' file1 file2

per fare il merge dei due file...X Y presi da v.out.ascii  e Z la  
colonna delle altezze



Massimo.





Maggiori informazioni sulla lista GRASS-Italia