Dans PostGIS, comment trouver tous les points d'un polygone?
Je suis en utilisant PostgreSQL avec l'extension GIS pour stocker les données de carte, avec OpenLayers, serveur géographique etc. Étant donné un polygone, par exemple, d'un quartier, j'ai besoin de trouver toutes les coordonnées LAT/LONG des points stockés dans un tableau (par exemple, les feux de circulation, restaurants) qui sont à l'intérieur du polygone. Sinon, étant donné un ensemble de polygones je voudrais trouver l'ensemble des points à l'intérieur de chaque polygone (comme un GROUPE PAR la requête, plutôt que d'itérer sur chaque polygone).
Sont ces fonctions quelque chose j'ai besoin de programme, ou est la fonctionnalité disponible (comme SQL étendu)? Veuillez fournir des précisions.
Également pour la simple 2D données que j'ai fais j'ai réellement besoin de l'extension GIS (licence GPL est une limitation) ou PostgreSQL suffit-il?
Merci!
source d'informationauteur Shaul Dar
Vous devez vous connecter pour publier un commentaire.
Dans PostGIS, vous pouvez utiliser la boîte englobante de l'opérateur à la recherche de candidats, ce qui est très efficace puisqu'il utilise les index GiST. Alors, si strict matchs sont nécessaires, utilisez l'opérateur contient.
Quelque chose comme
Sur si cela est nécessaire, dépend de vos besoins. Pour la ci-dessus pour travailler, il vous faudra certainement PostGIS et GEOS installé. Mais, si la boîte englobante de match est assez, vous pouvez coder simplement en SQL ne pas avoir besoin de PostGIS.
Si les correspondances exactes sont nécessaires, contient les algorithmes sont disponibles, mais pour les mettre en œuvre de manière efficace nécessite un certain effort de la mettre en œuvre dans une bibliothèque qui serait alors appelé à partir de SQL (comme les OGM).
Je crois ST_Contains automatiquement réécrit la requête à utiliser le GiST-indexé de la boîte englobante, il note:
http://postgis.refractions.net/docs/ST_Contains.html
ST_Contains permettrait de résoudre votre problème.