Quelle est la meilleure solution de cartographie Web open source pour gérer plus de 3000 polygones [fermé]


12

J'ai 3000+ polygones qui représentent des bassins versants (18 principaux bassins versants). Lors de la première étape, les 18 bassins versants seront affichés et leur liste sera placée dans la barre latérale gauche. Si un utilisateur passe la souris sur la carte, seule la fenêtre contextuelle affichera le nom du bassin versant. Si un utilisateur clique sur un bassin versant majeur sur la carte, une fenêtre contextuelle s'ouvre avec des détails. À un zoom plus grand, tous les bassins versants s'affichent.

Je vous demande votre avis sur la solution open source la plus adaptée pour gérer cette grande quantité de polygones?

Je pensais à Leaflet ou OpenLayers mais je ne sais pas s'ils peuvent gérer de grandes quantités de polygones.

Aussi, suggérez-vous de les stocker dans mysql ou?


3
Pouvez-vous pixelliser ces polygones? ou peut-être utiliser un serveur d'entités tel un géoserveur ou un serveur d'entités?
dassouki

Réponses:


12

Je créerais un service d'imagerie (couche raster) et le servirais avec Web Map Service (WMS) . De cette façon, vous pouvez utiliser n'importe quel framework API avec lequel vous vous sentez à l'aise tant qu'il prend en charge WMS ( OpenLayers le fait ). Vous pouvez utiliser WMS pour afficher une couche de toutes les entités surfaciques, puis utiliser GetFeatureInfo onclick de WMS pour extraire des informations sur ce polygone.

Si, pour une raison quelconque, vous avez besoin des données vectorielles sur la carte, vous pouvez les créer dynamiquement en un clic avec les données de réponse GetFeatureInfo.


5

Voir TileMill , qui peut pixelliser l' interaction UTFGrid dans un fichier MBTiles et l'héberger sur MapBox ou une implémentation de serveur MBTiles open source comme TileStache .

Voici avec beaucoup, beaucoup de polygones . Cette approche vous oblige à pixelliser - alias bake - tuiles, mais est essentiellement la seule façon de faire ce que vous voulez sans avoir des ressources de serveur massives, une application personnalisée ou un ensemble très restreint de navigateurs.


J'aime cet exemple. Pouvez-vous me dire comment pixelliser des fichiers de formes? Dans TileMill? Merci.
contre

Oui, c'est le moyen le plus courant. Voici la documentation sur l'ajout d'infobulles de cette façon . Si vous êtes super allergique aux outils GUI et à un pro Python / Mapnik, il existe également une route cli qui évite tout cela mais est un peu cryptique.
tmcw

2

La dépendance à l'échelle et une base de données indexée spatialement seront la clé de ce problème. Vous devriez pouvoir représenter les bassins versants en utilisant au moins deux, peut-être trois ou quatre niveaux. Par exemple, vous pouvez diviser les données en Majeur (les 18), Mineur (une combinaison de tous les bassins versants de moyenne échelle qui appartiennent tous au même Majeur) et Tertiaire (les 3000 polygones). Cela vous donnerait trois couches / services vectoriels différents.

Utilisez la dépendance d'échelle pour dessiner uniquement le service approprié en fonction du niveau de zoom de l'utilisateur.

Utilisez une base de données avec indexation spatiale pour vous assurer que les services dessinent rapidement et ne dessinez que la partie nécessaire pour remplir la fenêtre d'affichage actuelle.

Vous pouvez également envisager de créer des tuiles des cartes des bassins versants (à nouveau, créées en fonction des échelles appropriées pour chaque couche) et de les servir de cette façon.

Beaucoup de questions existent déjà sur ce site qui recommandent des solutions open source appropriées pour utiliser ces stratégies.


0

En plus de TileMill, vous pouvez consulter MangoMap , ce n'est pas open source mais il est actuellement gratuit et est capable de gérer ce type de données.

[Avertissement: je travaille avec MangoMap, mais je réponds parce que c'est approprié dans ce cas]

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.