[Gfoss] Grass v.out.ogr

Ciao,
utilizzo il comando in oggetto per esportare un layer di Grass in shapefile.
Se il layer è vuoto il comando segnala <0 elementi scritti in ....> ma sfortunatamente lo shapefile viene creato ugualmente (vuoto ovviamente).
Non mi pare ci siano degli switch per evitarlo.
Qualche suggeriumento?
grazie
marco g

Ciao Marco,

non si tratta di sfortuna, anzi. Una tavola vuota ha una struttura, una
proiezione, e un numero di righe pari a 0: un sacco di informazioni.
Generare una tavola vuota è il comportamento atteso in questo caso. Una
"non tavola" sarebbe un "non risultato".

Se vuoi cancellare lo shape nel caso in cui sia vuoto al termine
dell'esportazione, puoi provare con una combinazione di ogrinfo e bash,
come in questo script di esempio, al quale devi passare il nome di uno
shape nella directory corrente - senza estensione:

#! /bin/bash

NUMROWS=$(ogrinfo -al -so $1.shp | \
    grep -e "Feature Count" | \
    sed -s 's/[^0-9]//g')
if [ $NUMROWS -lt 1 ] ; then
        ogrinfo -sql "drop table $1" .
fi

Sig

Il giorno gio, 22/11/2012 alle 14.17 +0000, Marco Guiducci ha scritto:

Ciao,
utilizzo il comando in oggetto per esportare un layer di Grass in shapefile.
Se il layer è vuoto il comando segnala <0 elementi scritti in ....> ma sfortunatamente lo shapefile viene creato ugualmente (vuoto ovviamente).
Non mi pare ci siano degli switch per evitarlo.
Qualche suggeriumento?
grazie
marco g
_______________________________________________
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 -----

Da: Luca Sigfrido Percich <sigfrido@tiscali.it>
A: Marco Guiducci <marcoguiducci@ymail.com>
Cc: "gfoss@lists.gfoss.it" <gfoss@lists.gfoss.it>
Inviato: Giovedì 22 Novembre 2012 22:49
Oggetto: Re: [Gfoss] Grass v.out.ogr

Ciao Marco,

non si tratta di sfortuna, anzi. Una tavola vuota ha una struttura, una
proiezione, e un numero di righe pari a 0: un sacco di informazioni.
Generare una tavola vuota è il comportamento atteso in questo caso. Una
"non tavola" sarebbe un "non risultato".

Se vuoi cancellare lo shape nel caso in cui sia vuoto al termine
dell'esportazione, puoi provare con una combinazione di ogrinfo e bash,
come in questo script di esempio, al quale devi passare il nome di uno
shape nella directory corrente - senza estensione:

#! /bin/bash

NUMROWS=$(ogrinfo -al -so $1.shp | \
grep -e "Feature Count" | \
sed -s 's/[^0-9]//g')
if [ $NUMROWS -lt 1 ] ; then
ogrinfo -sql "drop table $1" .
fi

perfetto!
dovendo trattare decine, a volte centinaia di file in un colpo, lancio il batch che esporta, poi lo script che mi cancella quelli vuoti.
domani a mente fresca lo provo.
grazie
marco

2012/11/22 Marco Guiducci <marcoguiducci@ymail.com>:

Ciao,
utilizzo il comando in oggetto per esportare un layer di Grass in shapefile.
Se il layer è vuoto il comando segnala <0 elementi scritti in ....> ma sfortunatamente lo shapefile viene creato ugualmente (vuoto ovviamente).

Qual'è lo scopo esattamente?
La mappa non ha geometria ma degli attributi? Solo per capire...
(in caso c'è db.out.ogr).

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: Sabato 24 Novembre 2012 23:59
Oggetto: Re: [Gfoss] Grass v.out.ogr

2012/11/22 Marco Guiducci <marcoguiducci@ymail.com>:

Ciao,
utilizzo il comando in oggetto per esportare un layer di Grass in

shapefile.

Se il layer è vuoto il comando segnala <0 elementi scritti in ....>

ma sfortunatamente lo shapefile viene creato ugualmente (vuoto ovviamente).

Qual'è lo scopo esattamente?
La mappa non ha geometria ma degli attributi? Solo per capire...
(in caso c'è db.out.ogr).

ciao
Markus

E la continuazione di un processo, di cui avevo già scritto qui per chiedere alcune cose.
Il quadro è questo: devo estrarre da una mappa in formato shapefile sia le porzioni di poligoni che si sovrappongono, sia i vuoti, cioè porzioni della mappa che non sono coperti da nessun poligono.
Step:
1) importo: v.ogr.in dsn=mioshape output=miolayer -o
2) estraggo i poligoni del layer1 in overlay con layer2: v.overlay ainput=miolayer atype=area alayer=1 binput=miolayer btype=area blayer=2 output=layeroverlay operator=and
3) esporto: v.out.ogr input=layeroverlay type=area format=ESRI dsn=shapefilesovrapp.shp olayer=default -e
4) creo i centroidi dei vuoti: v.centroids input=miolayer output=miocentroide option=add cat=1 step=1 layer=0
5) esporto i poligoni vuoti: v.out.ogr input=miocentroide type=area layer=0 format=ESRI dsn=shapevuoti olayer=default -e -c

Se lo shape iniziale è corretto non presenta i layer 0 e 2.
Sto cercando di fare un if esiste layer=2 then esporta.... if esiste layer=0 then esporta
sto provando con v.info, però v.info con layer=0 o layer=2 o layer=1 non sorte alcune differenza,
quindi non è usabile.
devo fare una db.select e contare i record?

Non mi interessa la tabella vuota.
grazie
marco

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

Da: Marco Guiducci <marcoguiducci@ymail.com>
A: "gfoss@lists.gfoss.it" <gfoss@lists.gfoss.it>
Cc:
Inviato: Domenica 25 Novembre 2012 9:24
Oggetto: Re: [Gfoss] Grass v.out.ogr

Se lo shape iniziale è corretto non presenta i layer 0 e 2.
Sto cercando di fare un if esiste layer=2 then esporta.... if esiste layer=0
then esporta
sto provando con v.info, però v.info con layer=0 o layer=2 o layer=1 non sorte
alcune differenza,
quindi non è usabile.
devo fare una db.select e contare i record?

piccola, sostanziale, integrazione e correzione: se il layer 2 è vuoto non viene fatto lo shape, invece per il layer 0 ottengo sempre lo shape.
ciao
marco