[QGIS-it-user] QGIS e

Ciao a tutti,
i virtual layer di qgis sono veramente spettacolari ma noto che sono troppo
lenti, anche in qgis dev non trovo miglioramenti.

Ma non voglio parlare di virtual layer ma di un fenomeno strano legato,
probabilmente, alla tipologia astratta GEOMETRY, la super classe che può
contenere (contemporaneamente) qualsiasi tipologia di geometria (punti,
poligoni, multipoligono ecc...); è noto che qgis non legge questa tipologia
di dato.

Ho realizzato un database spatialite con i dati presi da qui [0] entrambe le
tabelle contengono geometrie MULTIPOLYGON; ho creato una tabella con questa
query:

select COMUNE,st_intersection (clc.geom, com.geom) as geom, count (*)as nro,
(sum (st_area( st_intersection (clc.geom, com.geom)))/st_area(com.geom)) as
indice
from CLC_Molise clc, comuni_molise com
where liv_3 like 'Boschi %' and st_intersects (clc.geom, com.geom) = 1
group by 1
order by indice desc;

e successivamente:

select RecoverGeometryColumn( 'indice_boscosita' , 'geom' , 32633 ,
'MULTIPOLYGON' , 2 );
la SQL statement di sopra non da errore, ma restituisce 0, cioè non registra
la geometrya;

utilizzando spatialite_gui e il RecoverGeometryColumn dal menu contestuale
del campo geom, esce fuori un errore, cioè che la geometria non soddisfa
required constraints.

allora faccio una check geometris e trovo che la tabella ha due tipologie di
geometrie:
POLYGON E MULTIPOLIGON - classico caso di datatype:GEOMETRY;

come consigliato da Furieri, in questi casi occorre aggiungere un'altra
colonna geom2, DEFINITA:

SELECT AddGeometryColumn('indice_boscosita', 'geom2', 32633, 'MULTIPOLYGON',
'XY');

e poi:

UPDATE indice_boscosita SET geom2 = CastToMultiPolygon(geom);

finalmente riesco a registrare la geometria;

QGIS vede la tabella e il campo geom2 (MULTIPOLYGON) ma non visualizza, nel
canvas, tutte le feature nonostante la tabella degli attributi sia corretta,
cioè il numero atteso di righe è corretto ma le geometrie che visualizza non
sono corrette.

scusatemi se vi ho annoiato, ma è un problema che non so come risolvere!!!

saluti

[0] https://goo.gl/4dfCqJ

-----
https://pigrecoinfinito.wordpress.com/
--
Sent from: http://osgeo-org.1560.x6.nabble.com/QGIS-Italian-User-f5250612.html

Totò wrote

select COMUNE,st_intersection (clc.geom, com.geom) as geom, count (*)as
nro,
(sum (st_area( st_intersection (clc.geom, com.geom)))/st_area(com.geom))
as
indice
from CLC_Molise clc, comuni_molise com
where liv_3 like 'Boschi %' and st_intersects (clc.geom, com.geom) = 1
group by 1
order by indice desc;

QGIS vede la tabella e il campo geom2 (MULTIPOLYGON) ma non visualizza,
nel
canvas, tutte le feature nonostante la tabella degli attributi sia
corretta,
cioè il numero atteso di righe è corretto ma le geometrie che visualizza
non
sono corrette.

Ho apportato una modifica alla query, eccola:

select COMUNE,st_union(st_intersection (clc.geom, com.geom)) as geom, count
(*)as nro,
(sum (st_area(st_intersection (clc.geom, com.geom))) /
st_area(com.geom))*100.00 as indice
from CLC_Molise clc, comuni_molise com
where liv_3 like 'Boschi%' and st_intersects (clc.geom, com.geom) = 1
group by 1
order by indice desc

la modifica riguardo l'aggiunta di st_union();
questa aggiunta, dopo tutte le altre correzioni descritte sopra, rende
visibile nel canvas tutte le geometrie.
Credo di aver risolto! ma restano ancora dubbi: perchè i calcoli li fa
correttamente ma non visualizzava correttamente le geometrie?
saluti.

-----
https://pigrecoinfinito.wordpress.com/
--
Sent from: http://osgeo-org.1560.x6.nabble.com/QGIS-Italian-User-f5250612.html

Probabilmente perché restituisce una geomertycollection?

Il 13 febbraio 2018 16:28:01 CET, “Totò” pigrecoinfinito@gmail.com ha scritto:

Totò wrote

> select COMUNE,st_intersection (clc.geom, com.geom) as geom, count (*)as
>  nro,
>  (sum (st_area( st_intersection (clc.geom, com.geom)))/st_area(com.geom))
>  as
>  indice
>  from  CLC_Molise clc, comuni_molise com 
>  where  liv_3 like 'Boschi %' and st_intersects (clc.geom, com.geom) = 1
>  group by 1
>  order by indice desc;
>  
>  QGIS vede la tabella e il campo geom2 (MULTIPOLYGON) ma non visualizza,
>  nel
>  canvas, tutte le feature nonostante la tabella degli attributi sia
>  corretta,
>  cioè il numero atteso di righe è corretto ma le geometrie che visualizza
>  non
>  sono corrette.

Ho apportato una modifica alla query, eccola:

select COMUNE,st_union(st_intersection (clc.geom, com.geom)) as geom, count
(*)as nro,
(sum (st_area(st_intersection (clc.geom, com.geom))) /
st_area(com.geom))*100.00 as indice 
from  CLC_Molise clc, comuni_molise com 
where  liv_3 like 'Boschi%' and st_intersects (clc.geom, com.geom) = 1
group by 1
order by indice desc

la modifica riguardo l'aggiunta di st_union();
questa aggiunta, dopo tutte le altre correzioni descritte sopra, rende
visibile nel canvas tutte le geometrie.
Credo di aver risolto! ma restano ancora dubbi: perchè i calcoli li fa
correttamente ma non visualizzava correttamente le geometrie?
saluti.

-----
[https://pigrecoinfinito.wordpress.com/](https://pigrecoinfinito.wordpress.com/)
--
Sent from: [http://osgeo-org.1560.x6.nabble.com/QGIS-Italian-User-f5250612.html](http://osgeo-org.1560.x6.nabble.com/QGIS-Italian-User-f5250612.html)

---

QGIS-it-user mailing list
QGIS-it-user@lists.osgeo.org
[https://lists.osgeo.org/mailman/listinfo/qgis-it-user](https://lists.osgeo.org/mailman/listinfo/qgis-it-user)


Sorry for being short

pcav wrote

Probabilmente perché restituisce una geomertycollection?

SI, la query restituisce una geomertycollection cioè:
facendo un check della geometria ho due record; polygon e multipolygon;

come scritto sopra, Furieri ha spiegato che basti creare un altro campo
geom2 e popolarlo forzando, come tipologia di geometria, multipolygon.

saluti

-----
https://pigrecoinfinito.wordpress.com/
--
Sent from: http://osgeo-org.1560.x6.nabble.com/QGIS-Italian-User-f5250612.html

Ciao,

scusate se mi intrometto, ma perchè occorre creare un nuovo campo geometry. non si può utilizzare direttamente CastToMultiPolygon() nella query di partenza?

select COMUNE, CastToMultiPolygon(st_intersection (clc.geom, com.geom)) as geom, count (*)as
nro,
(sum (st_area( st_intersection (clc.geom, com.geom)))/st_area(com.geom))
as
indice
from CLC_Molise clc, comuni_molise com
where liv_3 like ‘Boschi %’ and st_intersects (clc.geom, com.geom) = 1
group by 1
order by indice desc;

Il 13 febbraio 2018 alle 16.41 Totò pigrecoinfinito@gmail.com ha scritto:

pcav wrote

Probabilmente perché restituisce una geomertycollection?

SI, la query restituisce una geomertycollection cioè:
facendo un check della geometria ho due record; polygon e multipolygon;

come scritto sopra, Furieri ha spiegato che basti creare un altro campo
geom2 e popolarlo forzando, come tipologia di geometria, multipolygon.

saluti


https://pigrecoinfinito.wordpress.com/

Sent from: http://osgeo-org.1560.x6.nabble.com/QGIS-Italian-User-f5250612.html


QGIS-it-user mailing list
QGIS-it-user@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/qgis-it-user

Enrico Fiore-2 wrote

Ciao,

scusate se mi intrometto, ma perchè occorre creare un nuovo campo
geometry. non si può utilizzare direttamente CastToMultiPolygon() nella
query di partenza?

select COMUNE, CastToMultiPolygon(st_intersection (clc.geom, com.geom)) as
geom, count (*)as
nro,
(sum (st_area( st_intersection (clc.geom, com.geom)))/st_area(com.geom))
as
indice
from CLC_Molise clc, comuni_molise com
where liv_3 like 'Boschi %' and st_intersects (clc.geom, com.geom) = 1
group by 1
order by indice desc;

Ciao,
si, certo che si può fare.

grazie per l'osservazione.

La creazione di un altro campo geom2 è nato per ovviare al problema, cioè la
tabella esisteva già.

saluti

-----
https://pigrecoinfinito.wordpress.com/
--
Sent from: http://osgeo-org.1560.x6.nabble.com/QGIS-Italian-User-f5250612.html