Combinazione di aree con linee

Questa esercitazione riguarda la combinazione di primitive vettoriali di tipo area e linea. Le operazioni effettuate sono:

Si vogliono selezionare le strade passanti per il terreno di D. Portillo#1, dapprima creando una mappa vettoriale che contiene le strade che passano per il terreno e poi creando una mappa che contiene i soli tratti di strade all'interno del terreno.

Si imposta la regione su quella di default con

> g.region -d

e si visualizza il terreno di D. Portillo#1

> d.erase

tutti i terreni in nero

> d.vect map=fields type=area,face display=shape icon=basic/x size=8 layer=1 color=black fcolor=gray

il terreno di D.Portillo#1 con contorno giallo ed etichetta rossa (a nord est)

> d.vect map=fields type=point,line,boundary,centroid,area,face display=shape,attr attrcol=label where="label='D. Portillo#1'" icon=basic/x size=8 layer=1 color=yellow fcolor=gray llayer=1 lcolor=red bgcolor=none bcolor=none lsize=8 font=romans xref=left yref=center

le strade in rosso

> d.vect map=roads color=red


Aree dello Spearfish da testare
Si crea una nuova mappa vettoriale fields_portillo1 con il solo terreno di D. Portillo#1, estrandolo dalla mappa fields

> v.extract input=fields@PERMANENT output=fields_portillo1 type=point,line,boundary,centroid,area,face layer=1 new=-1 'where=label='\''D. Portillo#1'\''' --overwrite

si visualizza la nuova mappa con sfondo giallo:

> d.vect map=fields_portillo1 type=point,line,boundary,centroid,area,face display=shape,attr attrcol=label icon=basic/x size=8 layer=1 color=black fcolor=yellow llayer=1 lcolor=red bgcolor=none bcolor=none lsize=8 font=romans xref=left yref=center

Le strade in rosso

> d.vect map=roads color=red


Il fondo di d. Portillo
come si vede, un tratto di strada è all'interno del terreno di D. Portillo#1: si cercerà di selezionare e successivamente ritagliare questo tratto di strada.

Selezione di linee sovrapposte ad aree

Questa prima applicazione crea una nuova mappa vettoriale roads_portillo_select che che continene la sola strada che interseca il terreno di D. Portillo#1:

> v.select ainput=roads@PERMANENT atype=point,line,boundary,centroid,area alayer=1 binput=fields_portillo1 btype=point,line,boundary,centroid,area blayer=1 output=roads_portillo_select operator=overlap --overwrite

e si visualizza il risultato:

> d.erase

tutti i terreni

> d.vect map=fields type=area,face display=shape icon=basic/x size=8 layer=1 color=black fcolor=gray

il terreno di D. Portillo#1 in giallo

> d.vect map=fields_portillo1 type=point,line,boundary,centroid,area,face display=shape,attr attrcol=label icon=basic/x size=8 layer=1 color=black fcolor=yellow llayer=1 lcolor=black bgcolor=none bcolor=none lsize=8 font=romans xref=left yref=center

le altre strade in nero

> d.vect map=roads

la strada selezionata in rosso

> d.vect map=roads_portillo_select color=red


La strada che passa sul fondo di Portillo
Si noti, ancora una volta, che l'intera strada è selezionata, non solo la parte che ricade all'interno dell'area del terreno di D. Portillo#1. La tabella relativa alla nuova linea è visualizzabile con:

> echo "select * from roads_portillo_select"|db.select

che fornisce:

cat|label
5|unimproved road

la nuova mappa vettoriale eredita quindi la tabella dalla mappa roads.

Ritaglio di linee sovrapposte ad aree

Questo esempio determina una nuova linea che che contiene il solo tratto di strada all'interno del campo di D. Portillo#1, creando la nuova mappa roads_portillo_overlay:

> v.overlay ainput=roads@PERMANENT atype=line alayer=1 binput=fields_portillo1 btype=area blayer=1 output=roads_portillo_overlay operator=and --overwrite

e si visualizza il risultato:

> d.erase

tutti i terreni

> d.vect map=fields type=area,face display=shape icon=basic/x size=8 layer=1 color=black fcolor=gray

il terreno di D. Portillo#1 in giallo

> d.vect map=fields_portillo1 type=point,line,boundary,centroid,area,face display=shape,attr attrcol=label icon=basic/x size=8 layer=1 color=black fcolor=yellow llayer=1 lcolor=black bgcolor=none bcolor=none lsize=8 font=romans xref=left yref=center

le altre strade in nero

> d.vect map=roads

la strada selezionata in rosso

> d.vect map=roads_portillo_overlay color=red


Tratto di strada sul fondo di Portillo
Si noti, questa volta, che la sola parte di strada che ricade all'interno dell'area del terreno di D. Portillo#1 è selezionata, la strada è stata quindi "ritagliata" sull'area del terreno di D. Portillo#1. La tabella relativa alla nuova linea è visualizzabile con:

> echo "select * from roads_portillo_overlay"|db.select

che fornisce:

cat|a_cat|a_label|b_cat|b_label
1|5|unimproved road|41|D. Portillo#1

la nuova mappa vettoriale eredita quindi entrambe le tabelle della mappa roads e della mappa fields_portillo1.

Lo script che realizza queste operazioni è geoprocessing_spearfish_aree_linee.sh.