[Gfoss] SpatiaLite Cookbook: SQL error: no such function: RTreeIntersects
cesare gerbino
cesaregerbino a gmail.com
Dom 5 Gen 2014 14:14:18 CET
Ciao Sandro e Andrea,
allora ho provato e direi che ora la situazione è questa.
La select suggerita da Sandro è ok e funziona .....
SELECT
lc1.lc_name AS "Tuscan Local Council",
c1.county_name AS "Tuscan County",
lc2.lc_name AS "Neighbour LC",
c2.county_name AS County,
r2.region_name AS Region
FROM
local_councils AS lc1,
local_councils AS lc2
JOIN counties AS c1 ON (c1.county_id = lc1.county_id)
JOIN counties AS c2 ON (c2.county_id = lc2.county_id)
JOIN regions AS r1 ON (r1.region_id = c1.region_id)
JOIN regions AS r2 ON (r2.region_id = c2.region_id)
WHERE
r1.region_name LIKE 'toscana'
AND r1.region_id <> r2.region_id
AND ST_Touches(lc1.geometry, lc2.geometry)
AND lc2.ROWID IN (
SELECT ROWID FROM SpatialIndex
WHERE f_table_name='DB=main.local_councils' AND
search_frame=lc1.geometry
)
ORDER BY c1.county_name, lc1.lc_name;
La select di Andrea aveva qualche piccolo errore che mi sembra ora di aver
corretto e quindi la versione definitiva è la seguente:
select
z."Tuscan Local Council",
z."Tuscan County",
z."Neighbour LC",
z.County,
z.Region,
z.geometry
from
(
SELECT
lc1.lc_name AS "Tuscan Local Council",
c1.county_name AS "Tuscan County",
lc2.lc_name AS "Neighbour LC",
c2.county_name AS County,
r2.region_name AS Region,
lc1.geometry AS geometry
FROM
local_councils AS lc1,
local_councils AS lc2
JOIN counties AS c1 ON (c1.county_id = lc1.county_id)
JOIN counties AS c2 ON (c2.county_id = lc2.county_id)
JOIN regions AS r1 ON (r1.region_id = c1.region_id)
JOIN regions AS r2 ON (r2.region_id = c2.region_id)
WHERE
r1.region_name LIKE 'toscana'
AND r1.region_id <> r2.region_id
AND ST_Touches(lc1.geometry, lc2.geometry)
AND lc2.ROWID IN (
SELECT ROWID FROM SpatialIndex
WHERE f_table_name='DB=main.local_councils' AND
search_frame=lc1.geometry
)
) as z
ORDER BY z."Tuscan County", z."Neighbour LC";
Grazie mille per il sollecito supporto
Cesare
Cesare Gerbino
http://cesaregerbino.wordpress.com/
http://www.facebook.com/cesare.gerbino
http://www.facebook.com/pages/Cesare-Gerbino-GIS-Blog/246234455498174?ref=hl
https://twitter.com/CesareGerbino
http://www.linkedin.com/pub/cesare-gerbino/56/494/77b
Il giorno 05 gennaio 2014 13:15, aperi2007 <aperi2007 a gmail.com> ha scritto:
> Alessandro,
> grazie per la correzione.
> L'errore causava una errata dichiarazione di tabelle che in spatialite
> equivale a d avere sempre risultato vuoto.
>
>
> se si riscrive la query semplicemente omettendo del tutto la
>
>> ORDER BY si scopre invece che la query torna a funzionare a tutta
>> manetta (proprio come avveniva con le vecchie versioni di sqlite).
>> tempi oggettivi misurati:
>>
>> con ORDER BY: circa 3 minuti
>> senza ORDER BY: poco meno di 10 secondi :-D
>>
>
> organizzandola con una subquery che esegua il lavoro spaziale e una query
> che esegue solamente l'ordinamento,
> il query planner non dovrebbe far eseguire l'ordinamento prima del
> filtraggio con l'indice spaziale.
>
> select
> z."Tuscan Local Council",
> z."Tuscan County",
> z."Neighbour LC",
> z.County,
> z.Region,
> z.geometry
> from
>
> (
> SELECT
> lc1.lc_name AS "Tuscan Local Council",
> c1.county_name AS "Tuscan County",
> lc2.lc_name AS "Neighbour LC",
> c2.county_name AS County,
> r2.region_name AS Region
> FROM
> local_councils AS lc1,
> local_councils AS lc2
> JOIN counties AS c1 ON (c1.county_id = lc1.county_id)
> JOIN counties AS c2 ON (c2.county_id = lc2.county_id)
> JOIN regions AS r1 ON (r1.region_id = c1.region_id)
> JOIN regions AS r2 ON (r2.region_id = c2.region_id)
> WHERE
> r1.region_name LIKE 'toscana'
> AND r1.region_id <> r2.region_id
> AND ST_Touches(lc1.geometry, lc2.geometry)
> AND lc2.ROWID IN (
> SELECT ROWID FROM SpatialIndex
> WHERE f_table_name='DB=main.local_councils' AND
> search_frame=lc1.geometry
> )
> ) as z
> ORDER BY z.county_name, z.lc_name;
>
> Andrea.
>
>
> _______________________________________________
> Gfoss a 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 iscritti al 22.7.2013
>
-------------- parte successiva --------------
Un allegato HTML ? stato rimosso...
URL: <http://lists.gfoss.it/pipermail/gfoss/attachments/20140105/0d2900ae/attachment.html>
Maggiori informazioni sulla lista
Gfoss