[Gfoss] GRASS esportare layer 0

Ciao,
abbiamo bisogno di esportare nel formato shapefile tramite v.out.ogr da linea di
comando, il layer 0 di un dato vettoriale, ottenuto tramite v.in.ogr da un
precedente shapefile.
In pratica vogliamo travare i vuoti di uno shapefile tramite GRASS e
riesportarli in shapefile.

Non riusciamo ad ottenere il risultato voluto perché, giocando sui flag, o non
viene esportato niente (flag -c) oppure viene esportato tutto il layer 1 più il
layer 0 (senza -c), ma senza attributi utili alla distinzione per una successiva
selezione.
Grazie per ogni suggerimento
marcog

2012/10/2 Marco Guiducci <marcoguiducci@ymail.com>:

Ciao,
abbiamo bisogno di esportare nel formato shapefile tramite v.out.ogr da linea di
comando, il layer 0 di un dato vettoriale, ottenuto tramite v.in.ogr da un
precedente shapefile.
In pratica vogliamo travare i vuoti di uno shapefile tramite GRASS e
riesportarli in shapefile.

Non conosco la parola "travare" :slight_smile: Se significa mantenere, sarebbe -c
di v.out.ogr.

Quale versione di GRASS usate?

ciao
Markus

----- Messaggio originale -----

Da: Markus Neteler <neteler@osgeo.org>
A: Marco Guiducci <marcoguiducci@ymail.com>
Cc: "gfoss@lists.gfoss.it" <gfoss@lists.gfoss.it>
Inviato: Martedì 2 Ottobre 2012 14:49
Oggetto: Re: [Gfoss] GRASS esportare layer 0

2012/10/2 Marco Guiducci <marcoguiducci@ymail.com>:

Ciao,
abbiamo bisogno di esportare nel formato shapefile tramite v.out.ogr da

linea di

comando, il layer 0 di un dato vettoriale, ottenuto tramite v.in.ogr da un
precedente shapefile.
In pratica vogliamo travare i vuoti di uno shapefile tramite GRASS e
riesportarli in shapefile.

Non conosco la parola "travare" :slight_smile: Se significa mantenere, sarebbe -c
di v.out.ogr.

Quale versione di GRASS usate?

"travare" forse deriva, per contrazione, dal predicato francese travailler, e tutto sommato rende bene l'idea se lo traduciamo in travagliare. E' proprio un travaglio!
Venendo al serio: con v.in di uno shapefile ottengo i layer 0, 1 e 2.
Mentre non ho trovato problemi a riesportare i poligoni del layer 1 in overlay con il 2, mantenendo quindi i codici che mi distinguono i poligoni, non riesco a farlo con i poligoni del layer 0.
Riporto qui:

-------------------------
GRASS 6.4.2 (grosseto)> v.out.ogr -c input=sez331090_poligoni layer=0 dsn="c:\po
l_00.shp"
ATTENZIONE: 699 centroid(s) found, but not requested to be exported. Verify
'type' parameter.
ATTENZIONE: 702 areas found, but not requested to be exported. Verify
'type' parameter.
ATTENZIONE: No lines found, but requested to be exported. Will skip this
geometry type.
Esportazione di 2475 geometrie in corso...
100%
ATTENZIONE: 1776 elementi trovati senza categoria non considerati
v.out.ogr completo. 0 elementi scritti in '<sez331090_poligoni>
(ESRI_Shapefile).

GRASS 6.4.2 (grosseto)>
--------------

ora si da il caso che i 699 centroidi siano esattamente quelli del layer 1, mentre il layer 0 ha tre record (699+3=702)

Se ometto -c, mi esporta tutto il layer 1.
Il problema è nel parametro type? (come ho dato il comando ha esportato le linee)
Se metto type=area

-----
GRASS 6.4.2 (grosseto)> v.out.ogr -c type=area input=sez331090_poligoni layer=0
dsn="c:\pol_0000.shp"
Exporting 702 areas (may take some time)...
100%
ATTENZIONE: 702 elementi trovati senza categoria non considerati
v.out.ogr completo. 0 elementi scritti in '<sez331090_poligoni>
(ESRI_Shapefile).
------

Da notare, infine, che il comando di QGis "Salva con nome" eseguito sullo 0_polygon lavora fine :wink:
Sono un po' disorientato. Forse è meglio se vado in Messico a trapanar....

Grazie e ciao
marco g.

2012/10/2 Marco Guiducci <marcoguiducci@ymail.com>:
...

Venendo al serio: con v.in di uno shapefile ottengo i layer 0, 1 e 2.

Questo mi sembra già strano.
Mi aspetterei un singolo layer.

...

GRASS 6.4.2 (grosseto)> v.out.ogr -c input=sez331090_poligoni layer=0 dsn="c:\po
l_00.shp"
ATTENZIONE: 699 centroid(s) found, but not requested to be exported. Verify
            'type' parameter.
ATTENZIONE: 702 areas found, but not requested to be exported. Verify
            'type' parameter.

...

come suggerisce il comando, manca
type=area

http://grass.osgeo.org/gdp/html_grass64/v.out.ogr.html
--> Export areas from GRASS vector map to Shapefile format, preserving islands:

v.out.ogr -c input=areas_islands type=area dsn=areas_islands.shp

Spero che sia utile,
Markus

----- Messaggio originale -----

Da: Markus Neteler <neteler@osgeo.org>

>> Venendo al serio: con v.in di uno shapefile ottengo i layer 0, 1 e 2.

Questo mi sembra già strano.
Mi aspetterei un singolo layer.

dal manuale di v.in.ogr
---
If the layerparameter is not given, all available layers are imported as separate GRASS layers into one GRASS vector map. If several OGR layer names are given, all these layers are imported as separate GRASS layers into one GRASS vector map.
---

...

GRASS 6.4.2 (grosseto)> v.out.ogr -c input=sez331090_poligoni layer=0

dsn="c:\po

l_00.shp"
ATTENZIONE: 699 centroid(s) found, but not requested to be exported. Verify
'type' parameter.
ATTENZIONE: 702 areas found, but not requested to be exported. Verify
'type' parameter.

...

come suggerisce il comando, manca
type=area

http://grass.osgeo.org/gdp/html_grass64/v.out.ogr.html
--> Export areas from GRASS vector map to Shapefile format, preserving
islands:

v.out.ogr -c input=areas_islands type=area dsn=areas_islands.shp

Spero che sia utile,
Markus

Se guardi più sotto nella mia precedente ho fatto anche quel tentativo. Dice che non hanno la categoria.
marco

On Tue, Oct 2, 2012 at 4:26 PM, Marco Guiducci <marcoguiducci@ymail.com> wrote:

----- Messaggio originale -----

Da: Markus Neteler <neteler@osgeo.org>

>> Venendo al serio: con v.in di uno shapefile ottengo i layer 0, 1 e 2.

Questo mi sembra già strano.
Mi aspetterei un singolo layer.

dal manuale di v.in.ogr
---
If the layerparameter is not given, all available layers are imported as separate GRASS layers into one GRASS vector map. If several OGR layer names are given, all these layers are imported as separate GRASS layers into one GRASS vector map.
---

Sì, lo conosco :slight_smile:
Ma senza avere i dati è difficile capire cosa succede.

...

GRASS 6.4.2 (grosseto)> v.out.ogr -c input=sez331090_poligoni layer=0

dsn="c:\po

l_00.shp"
ATTENZIONE: 699 centroid(s) found, but not requested to be exported. Verify
             'type' parameter.
ATTENZIONE: 702 areas found, but not requested to be exported. Verify
             'type' parameter.

...

come suggerisce il comando, manca
type=area

http://grass.osgeo.org/gdp/html_grass64/v.out.ogr.html
--> Export areas from GRASS vector map to Shapefile format, preserving
islands:

v.out.ogr -c input=areas_islands type=area dsn=areas_islands.shp

Spero che sia utile,
Markus

Se guardi più sotto nella mia precedente ho fatto anche quel tentativo. Dice che non hanno la categoria.

Ma hai messo layer=0, proverei senza.

Markus

----- Messaggio originale -----

Ma hai messo layer=0, proverei senza.

Markus

provato senza:
---------------
GRASS 6.4.2 (grosseto)> v.out.ogr -c type=area input=sez331090_poligoni dsn="c:\
pol_0000000.shp"
Exporting 702 areas (may take some time)...
100%
ATTENZIONE: 3 elementi trovati senza categoria non considerati
v.out.ogr completo. 707 elementi scritti in '<sez331090_poligoni>
(ESRI_Shapefile).
--------------

in questo modo perdo proprio i tre che voglio.

Allora tolgo anche -c

-------
GRASS 6.4.2 (grosseto)> v.out.ogr type=area input=sez331090_poligoni dsn="c:\pol
_00000000.shp"
ATTENZIONE: The map contains islands. To preserve them in the output map,
use the -c flag
Exporting 702 areas (may take some time)...
100%
v.out.ogr completo. 713 elementi scritti in '<sez331090_poligoni>
(ESRI_Shapefile).
------

in questo modo mi porta fuori tutto e nello shape ho che i tre poligoni del layer 0 hanno cat=NULL
quindi riesco poi a gestirli, ma non dalla command line :frowning:
Avrei risolto, però non mi pare la strada migliore.
A mio parere il comando dovrebbe esportare il layer=0 direttamente.
grazie e ciao
marco

2012/10/2 Marco Guiducci <marcoguiducci@ymail.com>:

----- Messaggio originale -----

Ma hai messo layer=0, proverei senza.

Markus

provato senza:
---------------
GRASS 6.4.2 (grosseto)> v.out.ogr -c type=area input=sez331090_poligoni dsn="c:\
pol_0000000.shp"
Exporting 702 areas (may take some time)...
100%
ATTENZIONE: 3 elementi trovati senza categoria non considerati
v.out.ogr completo. 707 elementi scritti in '<sez331090_poligoni>
(ESRI_Shapefile).
--------------

in questo modo perdo proprio i tre che voglio.

Se sono isole non hanno centroidi, allora niente categoria.

Markus

Il giorno Tue, 2 Oct 2012 10:02:38 +0100 (BST)
Marco Guiducci <marcoguiducci@ymail.com> ha scritto:

Ciao,
abbiamo bisogno di esportare nel formato shapefile tramite v.out.ogr
da linea di comando, il layer 0 di un dato vettoriale, ottenuto
tramite v.in.ogr da un precedente shapefile.
In pratica vogliamo travare i vuoti di uno shapefile tramite GRASS e
riesportarli in shapefile.

Non riusciamo ad ottenere il risultato voluto perché, giocando sui
flag, o non viene esportato niente (flag -c) oppure viene esportato
tutto il layer 1 più il layer 0 (senza -c), ma senza attributi utili
alla distinzione per una successiva selezione.

Ciao,
forse prima bisogna fare un passaggio necessario. Aggiungere delle
categorie al tuo layer 0 che ne è privo (per definizione).

Quindi
v.category in=file_con_vuoti out=solo_vuoti opt=add type=area layer=0

Bene, ho detto la mia, spero possa aiutarvi...

Grazie per ogni suggerimento
marcog

ciao,
giovanni

_______________________________________________
Gfoss@lists.gfoss.it
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
Non inviate messaggi commerciali.
I messaggi di questa lista non hanno relazione diretta con le
posizioni dell'Associazione GFOSS.it. 605 iscritti al 10.7.2012

Il giorno Tue, 2 Oct 2012 16:54:24 +0200
Giovanni Pasini <jynxtor@gmail.com> ha scritto:

Il giorno Tue, 2 Oct 2012 10:02:38 +0100 (BST)
Marco Guiducci <marcoguiducci@ymail.com> ha scritto:

>
>
> Ciao,
> abbiamo bisogno di esportare nel formato shapefile tramite
> v.out.ogr da linea di comando, il layer 0 di un dato vettoriale,
> ottenuto tramite v.in.ogr da un precedente shapefile.
> In pratica vogliamo travare i vuoti di uno shapefile tramite GRASS
> e riesportarli in shapefile.
>
> Non riusciamo ad ottenere il risultato voluto perché, giocando sui
> flag, o non viene esportato niente (flag -c) oppure viene esportato
> tutto il layer 1 più il layer 0 (senza -c), ma senza attributi utili
> alla distinzione per una successiva selezione.

Ciao,
forse prima bisogna fare un passaggio necessario. Aggiungere delle
categorie al tuo layer 0 che ne è privo (per definizione).

Quindi
v.category in=file_con_vuoti out=solo_vuoti opt=add type=area layer=0

direi che però così non può funzionare, in quanto non c'è centroide a
cui assegnare una categoria. Prima bisognerà aggiungere un centroide...

v.centroids - Adds missing centroids to closed boundaries. ?

(magari impostando cat=integer Category number starting value su un
valore fuori da quelli già usati ?)

Bene, ho detto la mia, spero possa aiutarvi...

> Grazie per ogni suggerimento
> marcog

ciao,
giovanni

> _______________________________________________
> Gfoss@lists.gfoss.it
> http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
> Questa e' una lista di discussione pubblica aperta a tutti.
> Non inviate messaggi commerciali.
> I messaggi di questa lista non hanno relazione diretta con le
> posizioni dell'Associazione GFOSS.it. 605 iscritti al 10.7.2012

Il giorno Tue, 2 Oct 2012 17:22:04 +0200
Giovanni Pasini <jynxtor@gmail.com> ha scritto:

Il giorno Tue, 2 Oct 2012 16:54:24 +0200
Giovanni Pasini <jynxtor@gmail.com> ha scritto:

> Il giorno Tue, 2 Oct 2012 10:02:38 +0100 (BST)
> Marco Guiducci <marcoguiducci@ymail.com> ha scritto:
>
> >
> >
> > Ciao,
> > abbiamo bisogno di esportare nel formato shapefile tramite
> > v.out.ogr da linea di comando, il layer 0 di un dato vettoriale,
> > ottenuto tramite v.in.ogr da un precedente shapefile.
> > In pratica vogliamo travare i vuoti di uno shapefile tramite
> > GRASS e riesportarli in shapefile.
> >
> > Non riusciamo ad ottenere il risultato voluto perché, giocando
> > sui flag, o non viene esportato niente (flag -c) oppure viene
> > esportato tutto il layer 1 più il layer 0 (senza -c), ma senza
> > attributi utili alla distinzione per una successiva selezione.
>
> Ciao,
> forse prima bisogna fare un passaggio necessario. Aggiungere delle
> categorie al tuo layer 0 che ne è privo (per definizione).
>
> Quindi
> v.category in=file_con_vuoti out=solo_vuoti opt=add type=area
> layer=0
>

direi che però così non può funzionare, in quanto non c'è centroide a
cui assegnare una categoria. Prima bisognerà aggiungere un
centroide...

v.centroids - Adds missing centroids to closed boundaries. ?

(magari impostando cat=integer Category number starting value su un
valore fuori da quelli già usati ?)

altra possibilità da provare (poi non rompo più...):

v.build map=file_con_vuoti error=vuoti_e_altri_errori

la mappa degli errori conterrà i buchi (aree senza centroidi)

> Bene, ho detto la mia, spero possa aiutarvi...
>
> > Grazie per ogni suggerimento
> > marcog
>
> ciao,
> giovanni
>
> > _______________________________________________
> > Gfoss@lists.gfoss.it
> > http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
> > Questa e' una lista di discussione pubblica aperta a tutti.
> > Non inviate messaggi commerciali.
> > I messaggi di questa lista non hanno relazione diretta con le
> > posizioni dell'Associazione GFOSS.it. 605 iscritti al 10.7.2012

----- Messaggio originale -----

altra possibilità da provare (poi non rompo più...):

v.build map=file_con_vuoti error=vuoti_e_altri_errori

la mappa degli errori conterrà i buchi (aree senza centroidi)

l'ho fatto. Ma quel che ottengo è il solito dato che costruisce la v.in.ogr
ovvero ottengo lo 0_polygon identico a quello che produce appunto la v.in.ogr nella cui tabella c'è il campo cat ed i valori non sono NULL, ma 0

Rimane il fatto che esportando da QGis con Salva con nome (clic destro), vengono correttamente esportati i poligoni del layer 0.
Dopocena ci riprovo.
Grazie

2012/10/2 Giovanni Pasini <jynxtor@gmail.com>:
...

altra possibilità da provare (poi non rompo più...):

v.build map=file_con_vuoti error=vuoti_e_altri_errori

la mappa degli errori conterrà i buchi (aree senza centroidi)

Magari sono confuso: ma che cosa volete ottenere?

ciao
Markus

----- Messaggio originale -----

Da: Markus Neteler <neteler@osgeo.org>
A: Giovanni Pasini <jynxtor@gmail.com>
Cc: gfoss@lists.gfoss.it
Inviato: Martedì 2 Ottobre 2012 22:40
Oggetto: Re: [Gfoss] GRASS esportare layer 0

2012/10/2 Giovanni Pasini <jynxtor@gmail.com>:
...

altra possibilità da provare (poi non rompo più...):

v.build map=file_con_vuoti error=vuoti_e_altri_errori

la mappa degli errori conterrà i buchi (aree senza centroidi)

Magari sono confuso: ma che cosa volete ottenere?

ho fatto un disegnino (da vedere con carattere monospazio)

shapefile con due poligoni A e B che si toccano in due punti e creano un vuoto tra loro.

___________________________
| /\ |
| A / \ B |
| 1 / 0 \ 1 |
| \ / |
| \ / |
|__________\/______________|

La v.in.ogr crea due record in layer 1 ed un record in layer 0
Voglio esportare il poligono 0, cioè il vuoto.
ciao,
marco

2012/10/3 Marco Guiducci <marcoguiducci@ymail.com>:

ho fatto un disegnino (da vedere con carattere monospazio)

shapefile con due poligoni A e B che si toccano in due punti e creano un vuoto tra loro.


| /\ |
| A / \ B |
| 1 / 0 \ 1 |
| \ / |
| \ / |
|__________/______________|

La v.in.ogr crea due record in layer 1 ed un record in layer 0
Voglio esportare il poligono 0, cioè il vuoto.

Visto che GRASS GIS è un GIS topologico [1], un vuoto resta un vuoto.

Soluzione:

  • creare una “box” rettangolare per esempio con v.in.region o digitizer
  • fare intersezione con v.overlay
  • esportare il ex-vuoto come area

ciao
Markus

[1] http://grass.osgeo.org/programming7/vlibTopology.html#vlibTopoExamples

On Wed, Oct 03, 2012 at 12:44:04PM +0200, Markus Neteler wrote:

2012/10/3 Marco Guiducci <marcoguiducci@ymail.com>:
> ho fatto un disegnino (da vedere con carattere monospazio)
>
> shapefile con due poligoni A e B che si toccano in due punti e creano un
vuoto tra loro.
>
> ___________________________
> | /\ |
> | A / \ B |
> | 1 / 0 \ 1 |
> | \ / |
> | \ / |
> |__________\/______________|
>
>
> La v.in.ogr crea due record in layer 1 ed un record in layer 0
> Voglio esportare il poligono 0, cioè il vuoto.

Visto che GRASS GIS è un GIS topologico [1], un vuoto resta un vuoto.

In PostGIS non ci sono vuoti o pieni, ma solo facce.
Nel caso riportato avresti 3 facce.

Quel che determina la presenza o assenza di qualcosa (in PostGIS) non
e' il centroide (A e B sopra?) ma l'esplicito riferimento alla tale
faccia da parte di una cosi' detta TopoGeometry.

Con una select potresti trovare le facce a cui nessuna TopoGeometry
fa riferimento (relation), e con un'altra potresti estrarre la geometria
della faccia (ST_GetFaceGeometry)

Se hai voglia di sperimentare sei il benvenuto :slight_smile:

--strk;

http://www.cartodb.com - Map, analyze and build applications with your data

                                       ~~ http://strk.keybit.net