2017-06-19 1 views
0

Je suis en difficulté sur ce pendant quelques jours, je ne sais pas pourquoi la requête était erronée .. Je veux trouver le point le plus proche à la lat/lon donné.Spatialite trouver le noeud le plus proche pour le lat/lon

SELECT rid,DISTANCE(geometry, MakePoint(-79.91759, 43.266571)) 
FROM room2f ORDER BY DISTANCE(Startpoint(geometry), MakePoint(-79.91759, 43.266571))limit 1 

Il est toujours retourner la première rangée, nommez quel point j'utilise. Alors j'ai essayé d'enlever « Limit1 »:

SELECT rid,DISTANCE(geometry, MakePoint(-79.91759, 43.266571)) 
    FROM room2f ORDER BY DISTANCE(Startpoint(geometry), MakePoint(-79.91759, 43.266571)) 

Le résultat est très étrange ... Le résultat est trié par la distance plutôt que de débarrasser, je pense que c'est pourquoi il retourne toujours la première ligne. Ma requête est-elle incorrecte? Ou, il y a un bug dans Spatialite?

Merci ![enter image description here] 1

+0

Pouvez-vous fournir la '.dump' de l'outil de ligne de commande pour une base de données SQLite de jouets convenablement adapté comme quelque chose d'un [mcve]? – Yunnosch

+0

Vous n'utilisez pas 'StartPoint' dans les deux calculs de distance. Mais cela ressemble en effet à un bug. –

+0

Qu'est-ce que 'SELECT rid, AsEWKT (point de départ (géométrie)), AsEWKT (géométrie) LIMIT 5' montrent? Pouvez-vous ajouter cela à la question? – BradHards

Répondre

0

Dans votre déclaration sql vous comparez à des distances différentes ..

  1. De la géométrie en général à votre point spécifique (comme je sais qu'il est la plus courte distance du point à votre géométrie).
  2. Du premier point de votre géométrie à votre point spécifique.

Par conséquent, vous obtenez également une commande différente de votre résultat!

Voir la référence à la fonction de distance: http://www.gaia-gis.it/gaia-sins/spatialite-sql-4.2.0.html#p13