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 Grazie in anticipo! |
Il giorno Mon, 30 Jun 2014 01:12:40 -0700 (PDT)
Sieradz <[hidden email]> 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 _______________________________________________ [hidden email] 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 |
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.... |
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 _______________________________________________ [hidden email] 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 |
In reply to this post by Sieradz
Il giorno Mon, 30 Jun 2014 05:54:50 -0700 (PDT)
Sieradz <[hidden email]> 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 _______________________________________________ [hidden email] 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 |
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... |
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 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" <[hidden email]> ha scritto:
/ _______________________________________________ [hidden email] 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" <[hidden email]> 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 _______________________________________________ [hidden email] 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 30 giugno 2014 19:07, giulianc51 <[hidden email]> 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 _______________________________________________ [hidden email] 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 |
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, [hidden email] <[hidden email]> ha scritto: Il 30 giugno 2014 19:07, giulianc51 <[hidden email]> ha scritto: _______________________________________________ [hidden email] 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 |
...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 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. |
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 _______________________________________________ [hidden email] 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 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 _______________________________________________ [hidden email] 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 Tue, 01 Jul 2014 11:19:40 +0200
Antonio Falciano <[hidden email]> 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 _______________________________________________ [hidden email] 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 01 luglio 2014 21:58, giulianc51 <[hidden email]> 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 _______________________________________________ [hidden email] 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 01 luglio 2014 22:17, [hidden email]
<[hidden email]> ha scritto: > Il 01 luglio 2014 21:58, giulianc51 <[hidden email]> 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. _______________________________________________ [hidden email] 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 Tue, 1 Jul 2014 22:37:05 +0200
"[hidden email]" <[hidden email]> ha scritto: ciao Luca, > Il 01 luglio 2014 22:17, [hidden email] > <[hidden email]> ha scritto: > > Il 01 luglio 2014 21:58, giulianc51 <[hidden email]> 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 _______________________________________________ [hidden email] 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 |
In reply to this post by Antonio Falciano
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 _______________________________________________ [hidden email] 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 |
Free forum by Nabble | Edit this page |