Come da titolo, supponendo di avere un edificio con attributo "quota_base"
pari all'altezza s.l.m. del suo piede, è possibile estrarre (col Calcolatore
Campi) anche la quota del suo tetto?
Mi sono disperatamente inventato una sintassi tipo:
*geomFromWKT($z)*
ma non funziona, e neppure in Rete pare ci sia letteratura in merito...
Allego una shape di prova:
polygonz.zip
<http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/file/n7588551/polygonz.zip>
Grazie in anticipo!
--
View this message in context: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/Estrazione-altezza-da-shape-di-tipo-PolygonZ-tp7588551.html
Sent from the Gfoss -- Geographic Free and Open Source Software - Italian mailing list mailing list archive at Nabble.com.
Il giorno Mon, 30 Jun 2014 01:12:40 -0700 (PDT)
Sieradz <antonio@amicocad.it> ha scritto:
ariciao Antonio,
Come da titolo, supponendo di avere un edificio con attributo
"quota_base" pari all'altezza s.l.m. del suo piede, è possibile
estrarre (col Calcolatore Campi) anche la quota del suo tetto?
Mi sono disperatamente inventato una sintassi tipo:
*geomFromWKT($z)*
ma non funziona, e neppure in Rete pare ci sia letteratura in
merito...
Allego una shape di prova:
polygonz.zip
<http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/file/n7588551/polygonz.zip>
forse ho capito male il problema, ma l'altezza dell'edificio la puoi
ricavare come differenza quota_tetto - quota_base; la seconda ce l'hai
nell'attributo, la prima?
Grazie in anticipo!
per così poco? ciao 
giuliano
/
giulianc51 wrote
l'altezza dell'edificio la puoi ricavare come differenza quota_tetto -
quota_base; la seconda ce l'hai nell'attributo, la prima?
/
Ciao caro, è proprio quella che manca: la quota-tetto è integrata nel file
.SHP di geometria (come in tutte le shape di classe PolygonZ) mentre io
vorrei "trasmetterla" al file .DBF di attributi...
È da stamattina che setaccio invano il Web: pare che nessuno al mondo abbia
mai avuto l'esigenza di estrapolare la quota Z da una shape siffatta, almeno
con sw di pubblico dominio....
--
View this message in context: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/Estrazione-altezza-da-shape-di-tipo-PolygonZ-tp7588551p7588559.html
Sent from the Gfoss -- Geographic Free and Open Source Software - Italian mailing list mailing list archive at Nabble.com.
Il 30/06/2014 14:54, Sieradz ha scritto:
/
giulianc51 wrote
l'altezza dell'edificio la puoi ricavare come differenza quota_tetto -
quota_base; la seconda ce l'hai nell'attributo, la prima?
/
Ciao caro, è proprio quella che manca: la quota-tetto è integrata nel file
.SHP di geometria (come in tutte le shape di classe PolygonZ) mentre io
vorrei "trasmetterla" al file .DBF di attributi...
È da stamattina che setaccio invano il Web: pare che nessuno al mondo abbia
mai avuto l'esigenza di estrapolare la quota Z da una shape siffatta, almeno
con sw di pubblico dominio....
mmm mi sa che con poligon avrai problemi
per estrarre una cordinata z da punto 3d in uno shape si possono usare le api ogr o shapelib
io preferisco le ogr
data una feature di uno shape
geom = feature.geometry()
wkb = geom.asWkb()
punto3d = ogr.CreateGeometryFromWkb(wkb)
self.z = punto3d.GetZ()
self.feat = feature
nelle linestring dovrebbe funzionare infatti c'è la getZ nelle api
http://www.gdal.org/classOGRLineString.html
per i poligoni non mi sembra di aver trovato nulla nella ogr puoi vedere nella documentazione della shapelib se c'è qualcosa
ciao
Il giorno Mon, 30 Jun 2014 05:54:50 -0700 (PDT)
Sieradz <antonio@amicocad.it> ha scritto:
/
giulianc51 wrote
> l'altezza dell'edificio la puoi ricavare come differenza
> quota_tetto - quota_base; la seconda ce l'hai nell'attributo, la
> prima?
/
Ciao caro,
ciao Antonio,
..... è proprio quella che manca: la quota-tetto è integrata nel
file .SHP di geometria (come in tutte le shape di classe PolygonZ)
mentre io vorrei "trasmetterla" al file .DBF di attributi...
È da stamattina che setaccio invano il Web: pare che nessuno al mondo
abbia mai avuto l'esigenza di estrapolare la quota Z da una shape
siffatta, almeno con sw di pubblico dominio....
con il comando
$ ogrinfo -ro -al (path)/polygonz.shp
ottengo:
INFO: Open of (path)/polygonz.shp'
using driver `ESRI Shapefile' successful.
Layer name: polygonz
Geometry: 3D Polygon
Feature Count: 1
Extent: (8.713623, 38.925486) - (8.713864, 38.925606)
Layer SRS WKT:
(unknown)
quota_base: String (254.0)
OGRFeature(polygonz):0
quota_base (String) = 14
POLYGON ((8.713623356757918 38.925496189771991 123,8.713644604540052
38.925606155477183 123,8.713864308741204 38.925590794604112
123,8.713849586419242 38.925486453050652 123,8.713707139093028
38.925496294786541 123,8.71367569630933 38.925486241311773
123,8.713623356757918 38.925496189771991 123))
quindi direi che il tuo edificio ha sommità 123 e quindi altezza 123-14
= 109m: possibile?
quindi la tua domanda diventa: quale libreria GDAL/OGR compliant vede
la coordinata Z? so che è solo una parafrasi della tua domanda
originaria, però ti devi al momento accontentare

ciao,
giuliano
/
giulianc51 wrote
il tuo edificio ha sommità 123 e quindi altezza 123-14 = 109m: possibile?
/
Non e' solo possibile, e' perfetto: bravissimo!
Il problema e' se tu hai un'intera citta' con migliaia di edifici, ossia
popolare automaticamente il campo Z della tabella attributi di tutti gli N
poligoni.
Grazie lo stesso, almeno si e' accesa una lucina in fondo al tunnel...
--
View this message in context: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/Estrazione-altezza-da-shape-di-tipo-PolygonZ-tp7588551p7588570.html
Sent from the Gfoss -- Geographic Free and Open Source Software - Italian mailing list mailing list archive at Nabble.com.
Non sono su un PC provvisto degli strumenti necessari, per cui non posso dettagliare la procedera, ma io procederei così:
- trasformazione dello shape in layer Spatialite
- creo la colonna altezza
- popolo la colonna con qualcosa tipo:
update altezza set (quota_base - Z( GeometryN(ExteriorRing(geom, 0))))
ovvero prendendo semplicemente la z del primo punto del ring esterno del poligono, assumendo che tutti i vertici abbiano la stessa z.
giovanni
Il 30/giu/2014 17:47 “Sieradz” <antonio@amicocad.it> ha scritto:
/
giulianc51 wrote
il tuo edificio ha sommità 123 e quindi altezza 123-14 = 109m: possibile?
/
Non e’ solo possibile, e’ perfetto: bravissimo!
Il problema e’ se tu hai un’intera citta’ con migliaia di edifici, ossia
popolare automaticamente il campo Z della tabella attributi di tutti gli N
poligoni.
Grazie lo stesso, almeno si e’ accesa una lucina in fondo al tunnel…
–
View this message in context: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/Estrazione-altezza-da-shape-di-tipo-PolygonZ-tp7588551p7588570.html
Sent from the Gfoss – Geographic Free and Open Source Software - Italian mailing list mailing list archive at Nabble.com.
Gfoss@lists.gfoss.it
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e’ una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell’Associazione GFOSS.it.
666+40 iscritti al 5.6.2014
Il giorno Mon, 30 Jun 2014 18:07:07 +0200
"G. Allegri" <giohappy@gmail.com> ha scritto:
Non sono su un PC provvisto degli strumenti necessari, per cui non
posso dettagliare la procedera, ma io procederei così:
- trasformazione dello shape in layer Spatialite
ok e confermo che Spatialite vede le tre coordinate;
.....
- popolo la colonna con qualcosa tipo:
update altezza set (quota_base - Z( GeometryN(ExteriorRing(geom, 0))))
quì invece no perchè:
a) GeometryN agisce su GeometryCollection non su Polygon (almeno così
succede a me 
b) la porzione "....ExteriorRing(geom, 0))..." va sostituita con
"...ExteriorRing(geom), 0)..." altrimenti dice che il numero di
parametri di ExteriorRing è sbagliato e comunque lo 0 dovrebbe
essere un parametro di GeometryN (se funzionasse 
grazie, comunque mi hai fatto imparare qualcosa in più di
Spatialite 
giovanni
ciao,
giuliano
Il 30 giugno 2014 19:07, giulianc51 <giulianc51@gmail.com> ha scritto:
quì invece no perchè:
a) GeometryN agisce su GeometryCollection non su Polygon (almeno così
succede a me 
b) la porzione "....ExteriorRing(geom, 0))..." va sostituita con
"...ExteriorRing(geom), 0)..." altrimenti dice che il numero di
parametri di ExteriorRing è sbagliato e comunque lo 0 dovrebbe
essere un parametro di GeometryN (se funzionasse 
Ciao,
credo che convenga usare le funzioni MaxZ / MinZ.
Saluti
Luca
Giusto Luca, al volo non mi era venuto in mente MaxZ/MinZ.
Un piccolo video per eseguire l’intera operazione, senza uscire da QGIS: http://youtu.be/I3zD6w_iQ9Q
giovanni
···
Il giorno 30 giugno 2014 19:20, luca.casagrande@gmail.com <luca.casagrande@gmail.com> ha scritto:
Il 30 giugno 2014 19:07, giulianc51 <giulianc51@gmail.com> ha scritto:
quì invece no perchè:
a) GeometryN agisce su GeometryCollection non su Polygon (almeno così
succede a me 
b) la porzione “…ExteriorRing(geom, 0))…” va sostituita con
“…ExteriorRing(geom), 0)…” altrimenti dice che il numero di
parametri di ExteriorRing è sbagliato e comunque lo 0 dovrebbe
essere un parametro di GeometryN (se funzionasse 
Ciao,
credo che convenga usare le funzioni MaxZ / MinZ.
Saluti
Luca
Gfoss@lists.gfoss.it
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e’ una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell’Associazione GFOSS.it.
666+40 iscritti al 5.6.2014
–
Giovanni Allegri
http://about.me/giovanniallegri
Twitter: https://twitter.com/giohappy
blog: http://blog.spaziogis.it
GEO+ geomatica in Italia http://bit.ly/GEOplus
/
giohappy wrote
Un piccolo video per eseguire l'intera operazione, senza uscire da QGIS
/
...che vale più di 1000 parole: funziona meravigliosamente.
Ringrazio tutti per l'attenzione, in particolare Luca per l'assist MaxZ, e
Giovanni che ha incornato in gol.
Per gli appassionati che vogliano cimentarsi con dati concreti, allego la
shape 3D di Cortina d'Ampezzo, coi suoi 3000 edifici.
shape3d.zip
<http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/file/n7588595/shape3d.zip>
Ogni oggetto è situato alla sua propria quota Z (intesa come altezza di
gronda) e l'unico campo esistente viene popolato all'istante con la sintassi
SQL:
*update cortina3d set z_gronda = (ST_MaxZ(geom))*
Giusto per completezza d'esposizione, l'esigenza era nata dal fatto che in
Google Earth è possibile vettorizzare gli edifici, applicando loro l'altezza
di gronda (assoluta s.l.m. oppure relativa al suolo) che poi verrà
proiettata fino a terra.
Se si salva un simile .KML e lo si importa in Qgis salvandolo come .SHP, il
risultato è proprio una shape di classe PolygonZ, composta da N "tetti" di
case.
--
View this message in context: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/Estrazione-altezza-da-shape-di-tipo-PolygonZ-tp7588551p7588595.html
Sent from the Gfoss -- Geographic Free and Open Source Software - Italian mailing list mailing list archive at Nabble.com.
Il 01/07/2014 10:37, Sieradz ha scritto:
/
giohappy wrote
Un piccolo video per eseguire l'intera operazione, senza uscire da QGIS
/
Peccato solo che non si possa fare senza uscire da GDAL al momento! 
>gdalinfo --version
GDAL 1.11.0, released 2014/04/16
>ogrinfo cortina3d.shp -dialect SQLite -sql "SELECT spatialite_version()"
INFO: Open of `cortina3d.shp'
using driver `ESRI Shapefile' successful.
Layer name: SELECT
Geometry: None
Feature Count: 1
Layer SRS WKT:
(unknown)
spatialite_version(): String (0.0)
OGRFeature(SELECT):0
spatialite_version() (String) = 3.0.0-stable
>ogrinfo cortina3d.shp cortina3d -dialect SQLite -sql "update cortina3d set z_gronda = ST_MaxZ(geometry)"
INFO: Open of `cortina3d.shp'
using driver `ESRI Shapefile' successful.
layer names ignored in combination with -sql.
ERROR 1: In ExecuteSQL(): sqlite3_prepare(update cortina3d set z_gronda = ST_Max
Z(geometry)):
no such function: ST_MaxZ
In alternativa si puo' fare anche nella SpatiaLite GUI.
ciao
Antonio
--
Antonio Falciano
http://www.linkedin.com/in/antoniofalciano
Il 01/07/2014 11:09, Antonio Falciano ha scritto:
Il 01/07/2014 10:37, Sieradz ha scritto:
/
giohappy wrote
Un piccolo video per eseguire l'intera operazione, senza uscire da QGIS
/
Peccato solo che non si possa fare senza uscire da GDAL al momento! 
>gdalinfo --version
GDAL 1.11.0, released 2014/04/16
>ogrinfo cortina3d.shp -dialect SQLite -sql "SELECT spatialite_version()"
INFO: Open of `cortina3d.shp'
using driver `ESRI Shapefile' successful.
Layer name: SELECT
Geometry: None
Feature Count: 1
Layer SRS WKT:
(unknown)
spatialite_version(): String (0.0)
OGRFeature(SELECT):0
spatialite_version() (String) = 3.0.0-stable
>ogrinfo cortina3d.shp cortina3d -dialect SQLite -sql "update cortina3d
set z_gronda = ST_MaxZ(geometry)"
INFO: Open of `cortina3d.shp'
using driver `ESRI Shapefile' successful.
layer names ignored in combination with -sql.
ERROR 1: In ExecuteSQL(): sqlite3_prepare(update cortina3d set z_gronda
= ST_Max
Z(geometry)):
no such function: ST_MaxZ
Piccola correzione qui (scusate):
>ogrinfo cortina3d.shp -dialect SQLite -sql "update cortina3d set z_gronda = ST_MaxZ(geometry)"
INFO: Open of `cortina3d.shp'
using driver `ESRI Shapefile' successful.
ERROR 1: In ExecuteSQL(): sqlite3_prepare(update cortina3d set z_gronda = ST_Max
Z(geometry)):
no such function: ST_MaxZ
In alternativa si puo' fare anche nella SpatiaLite GUI.
ciao
Antonio
--
Antonio Falciano
http://www.linkedin.com/in/antoniofalciano
Il giorno Tue, 01 Jul 2014 11:19:40 +0200
Antonio Falciano <afalciano@yahoo.it> ha scritto:
ciao a tutti,
chiedo scusa, ma approffittando di questo interessante thread per
imparare qualcosa, mi sono accorto che l'esecuzione della query
proposta fa Giovanni A. mi dà l'errore:
> no such function: ST_MaxZ
sia in QGIS (2.30. Master) che in Spatialite (1.4.0): è dovuto alle mie
versioni un pò datate o a qualche pezzo mancante?
grazie, ciao,
giuliano
Il 01 luglio 2014 21:58, giulianc51 <giulianc51@gmail.com> ha scritto:
ciao a tutti,
chiedo scusa, ma approffittando di questo interessante thread per
imparare qualcosa, mi sono accorto che l'esecuzione della query
proposta fa Giovanni A. mi dà l'errore:
> no such function: ST_MaxZ
sia in QGIS (2.30. Master) che in Spatialite (1.4.0): è dovuto alle mie
versioni un pò datate o a qualche pezzo mancante?
grazie, ciao,
giuliano
Ciao Giuliano,
nella finestra Help > About di QGIS, che versione di Spatialite ti da?
Sicuro sia la 1.4.0?
Luca
Il 01 luglio 2014 22:17, luca.casagrande@gmail.com
<luca.casagrande@gmail.com> ha scritto:
Il 01 luglio 2014 21:58, giulianc51 <giulianc51@gmail.com> ha scritto:
ciao a tutti,
chiedo scusa, ma approffittando di questo interessante thread per
imparare qualcosa, mi sono accorto che l'esecuzione della query
proposta fa Giovanni A. mi dà l'errore:
> no such function: ST_MaxZ
sia in QGIS (2.30. Master) che in Spatialite (1.4.0): è dovuto alle mie
versioni un pò datate o a qualche pezzo mancante?
grazie, ciao,
giuliano
Ciao Giuliano,
nella finestra Help > About di QGIS, che versione di Spatialite ti da?
Sicuro sia la 1.4.0?
Ah, se ti riferisci alla 1.4.0 della Spatialite-GUI, anche li puoi
verificare la versione di Spatialite utilizzata.
Ciao
L.
Il giorno Tue, 1 Jul 2014 22:37:05 +0200
"luca.casagrande@gmail.com" <luca.casagrande@gmail.com> ha scritto:
ciao Luca,
Il 01 luglio 2014 22:17, luca.casagrande@gmail.com
<luca.casagrande@gmail.com> ha scritto:
> Il 01 luglio 2014 21:58, giulianc51 <giulianc51@gmail.com> ha
> scritto:
>> .....
Ah, se ti riferisci alla 1.4.0 della Spatialite-GUI, anche li puoi
verificare la versione di Spatialite utilizzata.
sì, intendevo spatialite_gui (sqlite 3.7.3 e spatialite 2.4.0), mentre
la master 2.3.0 usa spatialite 3.0.0-beta;
Ciao
L.
grazie, ciao,
giuliano
Il 01/07/2014 11:19, Antonio Falciano ha scritto:
Il 01/07/2014 11:09, Antonio Falciano ha scritto:
Il 01/07/2014 10:37, Sieradz ha scritto:
/
giohappy wrote
Un piccolo video per eseguire l'intera operazione, senza uscire da QGIS
/
Peccato solo che non si possa fare senza uscire da GDAL al momento! 
>gdalinfo --version
GDAL 1.11.0, released 2014/04/16
>ogrinfo cortina3d.shp -dialect SQLite -sql "SELECT
spatialite_version()"
INFO: Open of `cortina3d.shp'
using driver `ESRI Shapefile' successful.
Layer name: SELECT
Geometry: None
Feature Count: 1
Layer SRS WKT:
(unknown)
spatialite_version(): String (0.0)
OGRFeature(SELECT):0
spatialite_version() (String) = 3.0.0-stable
>ogrinfo cortina3d.shp cortina3d -dialect SQLite -sql "update cortina3d
set z_gronda = ST_MaxZ(geometry)"
INFO: Open of `cortina3d.shp'
using driver `ESRI Shapefile' successful.
layer names ignored in combination with -sql.
ERROR 1: In ExecuteSQL(): sqlite3_prepare(update cortina3d set z_gronda
= ST_Max
Z(geometry)):
no such function: ST_MaxZ
Piccola correzione qui (scusate):
>ogrinfo cortina3d.shp -dialect SQLite -sql "update cortina3d set
z_gronda = ST_MaxZ(geometry)"
INFO: Open of `cortina3d.shp'
using driver `ESRI Shapefile' successful.
ERROR 1: In ExecuteSQL(): sqlite3_prepare(update cortina3d set z_gronda
= ST_Max
Z(geometry)):
no such function: ST_MaxZ
In alternativa si puo' fare anche nella SpatiaLite GUI.
Mi correggo ancora: con GDAL 1.11.0 via OSGeo4W si puo' fare, visto che
qui la versione di SpatiaLite e' la 4.1.1 (dove ST_MaxZ e' supportata):
>ogrinfo cortina3d.shp -dialect SQLite -sql
"SELECT spatialite_version()"
INFO: Open of `cortina3d.shp'
using driver `ESRI Shapefile' successful.
Layer name: SELECT
Geometry: None
Feature Count: 1
Layer SRS WKT:
(unknown)
spatialite_version(): String (0.0)
OGRFeature(SELECT):0
spatialite_version() (String) = 4.1.1
Ieri ci avevo provato con la stessa versione di GDAL "standalone"
(www.gisinternals.com). Evidentemente la copia che ho installato e'
stata compilata con il vecchio SpatiaLite 3.0.
ciao
Antonio
--
Antonio Falciano
http://www.linkedin.com/in/antoniofalciano