Je n'arrive pas à trouver beaucoup de documentation à ce sujet. Quelle est la façon la plus simple de créer une base de données/table sur postgres supportant une requête comme celle-ci SELECT * FROM table WHERE distance (POINT (0,0), table.location) < = 1000m; Où POINT (0,0) et table.location doivent être paire latitude/longitude et 1000m est 1000 mètres. Et comment dois-je procéder à l'indexation de cette table? Merci.postgres indexation spatiale
3
A
Répondre
5
index de support de PostgreSQL sur les expressions et aussi des index partiels, vous pouvez probablement les mélanger.
Ceci est juste une estimation aléatoire, je ne sais pas si cela fonctionne, mais lui donner un essai:
CREATE INDEX foobar ON table (distance(POINT(0,0), location))
WHERE distance(POINT(0,0), location) <= 1000;
http://www.postgresql.org/docs/9.0/interactive/indexes-expressional.html
http://www.postgresql.org/docs/9.0/interactive/indexes-partial.html
2
Avez-vous examiné Postgis et contrib/earthdistance?
http://www.postgresql.org/docs/9.0/interactive/earthdistance.html
Gardez à l'esprit que la Terre est pas à plat . De tels calculs planimétriques ne fonctionneront pas bien dans le cas général. – skalee