J'ai un énorme fichier de formes de 36.000 polygones qui ne se chevauchent pas (limites de la ville). Je veux déterminer facilement le polygone dans lequel un lat/long donné tombe. Quel serait le meilleur moyen étant donné qu'il doit être extrêmement efficace sur le plan informatique? Je pensais à créer une table de correspondance (tilex, tiley, polygone_id) où tilex et tiley sont des identifiants de tuiles aux niveaux de zoom 21 ou 22. Oui, le manque de précision de l'utilisation des nombres de carreaux et une projection planaire est acceptable dans mon application. Je préférerais ne pas utiliser l'extension GIS de postgres et je suis d'accord avec un programme qui fonctionnera pendant 2 jours pour générer toutes les instructions INSERT.Comment assigner très efficacement lat/long à la limite de la ville décrite par la forme?
Répondre
déclarations Insérer dans quoi? Utilisez-vous une autre base de données spatiale ou une autre base de données? Si vous êtes prêt à utiliser python, C ou Java, vous pouvez utiliser shapely, GEOS ou JTS pour écrire du code personnalisé pour faire ce que vous voulez plutôt simplement.
En utilisation python cette lib pour ouvrir le fichier shape http://indiemaps.com/blog/2008/03/easy-shapefile-loading-in-python/
puis bien faite http://gispython.org/shapely/docs/1.0/manual.html#contains pour tester le confinement
Pour Java utiliser Geotools qui comprend également JTS.
On dirait que vous voulez un BSP tree. Fondamentalement, vous divisez la zone en polygones de plus en plus petits dans un arbre comme la mode.
L'avantage est que vous n'avez pas besoin de comparer les coordonnées avec chaque polygone plus tard. Cela en fait un moyen très rapide de trouver le bon polygone.
QGIS/outils vectoriels a la fonction que vous cherchez
JTS est ce que je recherchais avec sa capacité à faire 'point-en-polygone' –
Revisitant cela beaucoup plus tard ... après beaucoup d'essais, d'erreurs et de solutions, nous avons fini par aller avec postgres/postgis qui permet le chargement un fichier de formes dans la base de données et faire toutes sortes de choses soignées. Nous l'exécutons sur une machine à 16 cœurs à 100% d'utilisation. –
Yup - c'est une excellente solution qui vous permet de passer l'écriture tout le code vous-même. Assurez-vous de penser à passer à PostGIS 2.0 - beaucoup d'améliorations dans ce domaine. – TheSteve0