Pages: 1
- Sujet précédent - QGIS 2.4 (x64) : problème avec NearestNeighbor (Python API) - Sujet suivant
#1 Thu 18 September 2014 08:46
- Patrick PALMIER
- Participant actif
- Lieu: Lille
- Date d'inscription: 18 Jan 2007
- Messages: 97
QGIS 2.4 (x64) : problème avec NearestNeighbor (Python API)
Bonjour à tous,
Dans l'utilisation d'un plugin python dans Qgis 2.4 64bits, je souhaite déterminer l'objet le plus proche d'un point
je crée dans un premier temps un index spatial que je remplis avec tous les objets de ma table lines
index=QgsSpatialIndex()
for i in lines.getFeatures():
index.insertFeature(i)
Puis j'interrroge l'objet le plus proche du point "pt" par la commande
nearest=index.nearestNeighbor(pt.asPoint(),1) qui je comprends bien la doc doit me retourner le 1er objet le plus proche de mon point
Or il s'avère que l'objet retourné n'est pas toujours le plus proche
Est-ce normal ou est-ce un bug?
Merci d'avance, Cordialement
Hors ligne
#2 Sat 20 September 2014 03:30
- Leyan
- Participant assidu
- Date d'inscription: 14 Oct 2013
- Messages: 160
Re: QGIS 2.4 (x64) : problème avec NearestNeighbor (Python API)
C'est censé être le plus proche. Est-ce que tu peux partager un petit jeu de donnée qui ne donne pas le résultat attendu?
Peut-être que la fonction distance utilisée ne correspond pas à ce que tu veux? Dans ce cas, tu peux sélectionner quelques éléments dans une zone autour du point et calculer manuellement leur distance.
Hors ligne
#3 Mon 22 September 2014 09:04
- Patrick PALMIER
- Participant actif
- Lieu: Lille
- Date d'inscription: 18 Jan 2007
- Messages: 97
Re: QGIS 2.4 (x64) : problème avec NearestNeighbor (Python API)
Bonjour,
Il s'agissait de déterminer pour une série de point l'objet linéaire le plus proche. Cela se produit surtout lorsque la ligne soit disant la plus proche est longue et que du coup le tracé passe loin du centre du bouding box. En fait, il semble que la fonction retourne l'objet dont le centre du "bounding box" est le plus proche.
J'ai contourné le pb en utilisant intersects dans un rectangle et en testant manuellement la distance aux objets en ne conservant que la minimale. LA fonction distance elle fonctionne tout à fait bien
Hors ligne
#4 Tue 23 September 2014 04:11
- Leyan
- Participant assidu
- Date d'inscription: 14 Oct 2013
- Messages: 160
Re: QGIS 2.4 (x64) : problème avec NearestNeighbor (Python API)
J'ai un peu regardé le code, QGis utilise la bibliothèque libspatialindex qui en effet utilise le "bounding box" par défaut.
À noter que pour des lignes c'est assez compliqué à faire proprement, le centroid du bounding box ne donne pas beaucoup d'information. Par exemple, intersects peut retourner des éléments mais ne pas retourner l'élément qui est le plus proche.
Hors ligne
Pages: 1
- Sujet précédent - QGIS 2.4 (x64) : problème avec NearestNeighbor (Python API) - Sujet suivant