Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#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

 

Pied de page des forums

Powered by FluxBB