Ho il classico problema di determinare, a partire da punti e linee, quale
sia la distanza minima tra punti e linee.
Per velocizzare la query uso lo spatialIndex e la query è la seguente
SELECT a.pk_uid as fid, Min(ST_Distance(a.geom, zz.geom)) AS distance,
zz.pk_uid as pk_uid_punti, st_shortestline (a.geom, zz.geom) as geom
FROM strade as a, punti as zz
WHERE a.pk_uid IN (
SELECT rowid
FROM SpatialIndex
WHERE f_table_name = 'strade'
AND search_frame = ST_Buffer(zz.geom, 100))
GROUP by zz.pk_uid
order by 2 desc;
nel search_frame uso un buffer di 100 m sul punto, cosi facendo mi aspetto
che determini le distanze solo per punti entro 100 m, invece ci sono punti
anche oltre i 100m (fino a 163 m);
non riesco a capire il perché.
allego database per test:
--
*Ing. Salvatore Fiandaca*
*mobile*.:+39 327.493.8955
*m*: *pigrecoinfinito@gmail.com <pigrecoinfinito@gmail.com>*
*C.F*.: FNDSVT71E29Z103G
*P.IVA*: 06597870820
*membro QGIS Italia - http://qgis.it/*
*socio GFOSS.it - *http://gfoss.it/
*blog:*
* https://pigrecoinfinito.com/ FB: Co-admin
- QGIS Italia**
<https://www.facebook.com/qgis.it/> *
*TW: <http://goog_95411464>**https://twitter.com/totofiandaca
<https://twitter.com/totofiandaca>\*
43°51'0.54"N 10°34'27.62"E - EPSG:4326
“Se la conoscenza deve essere aperta a tutti,
perchè mai limitarne l’accesso?”
R. Stallman
Questo documento, allegati inclusi, contiene informazioni di proprietà di
FIANDACA SALVATORE e deve essere utilizzato esclusivamente dal destinatario
in relazione alle finalità per le quali è stato ricevuto. E' vietata
qualsiasi forma di riproduzione o divulgazione senza l'esplicito consenso
di FIANDACA SALVATORE. Qualora fosse stato ricevuto per errore si prega di
informare tempestivamente il mittente e distruggere la copia in proprio
possesso.