<div dir="ltr"><div><div><div>Una precisazione.<br><br>Secondo me sarebbe piu' indicato usare il costrutto<br><br>ST_Multi()<br>al posto del costrutto CastoToMulti().<br><br></div>Su spatialite ST_Multi() č un alias di CastToMulti() e quindi usare luno o l'altro č indifferente.<br>
Ma ST_Multi() č usato anche da Postgis e proviene da ISO per cui a parer mio ha un valore simbolico superiore.<br><br></div><div>O esiste una differenza che ignoro tra CastToMulti() e ST_Multi()<br>?</div></div><br></div>
<div class="gmail_extra"><br><br><div class="gmail_quote">Il giorno 05 marzo 2014 19:59,  <span dir="ltr"><<a href="mailto:a.furieri@lqt.it" target="_blank">a.furieri@lqt.it</a>></span> ha scritto:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Ciao Beppe,<br>
<br>
come diceva Mao Tse Tung:<br>
"quando trovi uno che ha fame non gli regalare mai un pesce;<br>
 insegnagli piuttosto ad usare la canna da pesca"<br>
<br>
vedi i miei commenti passo per passo:<div class=""><br>
<br>
On Wed, 5 Mar 2014 10:09:52 -0800 (PST), Beppe wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Salve a tutti!<br>
Nella ricetta #19  dello Spatialite Cookbook mi sono reso conto che il file<br>
<br>
</blockquote>
<br></div>
giusto per pedante precisione: non e' affatto un "file", e' una tavola<br>
dentro ad un DB-file ... tutt'altra zuppa ;-)<div><div class="h5"><br>
<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
che dovrebbe contenere il merging dei comuni a formare le provincie non<br>
viene aperto da QGIS, o meglio viene visto come "tabella senza geometria".<br>
Ciō non ostante, se controllo da SpatialiteGUI le geometrie sono<br>
visualizzabili correttamente sia mediante il menų Map Preview che con<br>
comando del menų contestuale "Blob Explore".<br>
<br>
Ho seguito la seguente procedura indicata dallo Spatialite Cookbook:<br>
<br>
1-Creato un nuovo db (srid 23032, codifica cp152) nel quale ho importato lo<br>
shapefile com2010_g (SRID 23032, codifica CP152, lasciando deselezionate le<br>
opzioni della voce "Geometry Storage", selezionando alla voce "Geometry<br>
Type" l'opzione "Mode:Automatic" ed alla voce "Primary Key Column" l'opzione<br>
"Automatic".<br>
<br>
2-Ho creato la view 'local_councils':<br>
  CREATE VIEW local_councils AS<br>
  SELECT c.cod_reg AS cod_reg,<br>
    c.cod_pro AS cod_pro,<br>
    c.cod_com AS cod_com,<br>
    c.nome_com AS nome_com,<br>
    p.nome_pro AS nome_pro,<br>
    p.sigla AS sigla,<br>
    r.nome_reg AS nome_reg,<br>
    c.geometry AS geometry<br>
  FROM com2010_g AS c<br>
  JOIN prov2010_g AS p USING (cod_pro)<br>
  JOIN reg2010_g AS r USING(cod_reg)<br>
<br>
3-Ho creato la tabella 'counties' e relativa colonna geometrica:<br>
  CREATE TABLE counties AS<br>
  SELECT cod_pro, nome_pro, sigla, cod_reg, nome_reg,<br>
    ST_Union(geometry) AS geometry<br>
  FROM local_councils<br>
  GROUP BY cod_pro<br>
<br>
  SELECT RecoverGeometryColumn('<u></u>counties', 'geometry',<br>
    23032, 'MULTIPOLYGON', 'XY').<br>
<br>
</blockquote>
<br></div></div>
e qua ti sei evidentemente distratto :-)<br>
<br>
quest'ultima SELECT ritorna ZERO ... cioe' FALSE<br>
insomma, non e' andata a buon fine, non ce l'ha fatta proprio a ricoverare<br>
correttamente la geometria.<br>
conclusione: non hai affatto una tavola Spatial, hai ancora una banale<br>
tavola di tipo ordinario (anche se contiene delle geometrie)  perche'<br>
non e' registrata su "geometry_columns"<br>
e di conseguenza QGIS ti dice (correttamente) che non trova nessuna<br>
tavola Spatial (aka layer) che si chiami "counties".<br>
<br>
andiamo a verificare perche' la RecoverGeometryColumn fallisce:<br>
<br>
SELECT Count(*) AS count, ST_GeometryType(geometry) AS type,<br>
  ST_SRID(geometry) AS srid, CoordDimension(geometry) AS dims<br>
FROM counties<br>
GROUP BY type, srid;<br>
-------<br>
44 MULTIPOLYGON 23032 XY<br>
66 POLYGON      23032 XY<br>
<br>
ora e' tutto chiaro; la tavola "counties" contiene geometrie<br>
di tipo misto: qualche volta poligoni semplici, altre volte<br>
poligoni multipli (pensa <a href="http://p.es" target="_blank">p.es</a>. a tutte le provincie sulla<br>
costa che hanno isole, isolotti, scogli etc).<br>
<br>
nelle versioni piu' recenti di splite i controlli di tipo<br>
sono rigidamente inflessibili; non puoi registrare una "vera<br>
e genuina" tavola Spatial se il tipo geometrico non e'<br>
rigorosamente univoco.<br>
<br>
soluzione A)<br>
------------<br>
UPDATE counties SET geometry = CastToMultiPolygon(geometry);<br>
<br>
cioe' applichiamo a posteriori un casting sul tipo geometrico;<br>
questa UPDATE assicura che tutto verra' convertito a MultiPolygon<br>
in modo rigorosamente consistente.<br>
<br>
<br>
soluzione B)<br>
------------<br>
correggiamo la SELECT di origine in modo tale da renderla<br>
aderente ai requisiti delle ultime versioni (personalmente,<br>
preferisco questa seconda soluzione):<br>
<br>
DROP TABLE counties;<div class=""><br>
<br>
CREATE TABLE counties AS<br>
SELECT cod_pro, nome_pro, sigla, cod_reg, nome_reg,<br></div>
  CastToMultiPolygon(ST_Union(<u></u>geometry)) AS geometry<div class=""><br>
FROM local_councils<br>
GROUP BY cod_pro;<br>
<br>
SELECT RecoverGeometryColumn('<u></u>counties', 'geometry',<br></div>
  23032, 'MULTIPOLYGON', 'XY');<br>
<br>
voila: ora finalmente funziona tutto correttamente ;-)<br>
<br>
ciao Sandro<div class="HOEnZb"><div class="h5"><br>
______________________________<u></u>_________________<br>
<a href="mailto:Gfoss@lists.gfoss.it" target="_blank">Gfoss@lists.gfoss.it</a><br>
<a href="http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss" target="_blank">http://lists.gfoss.it/cgi-bin/<u></u>mailman/listinfo/gfoss</a><br>
Questa e' una lista di discussione pubblica aperta a tutti.<br>
I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.<br>
666 iscritti al 22.7.2013</div></div></blockquote></div><br><br clear="all"><br>-- <br>-----------------<br>Andrea Peri<br>. . . . . . . . . <br>qwerty āčėōų<br>-----------------<br>
</div>