Je travaille avec Geoserver, servant les 48 comtés inférieurs des États-Unis aux couches ouvertes (3109 polygones - beaucoup plus de sommets). Les comtés sont chargés dans une base de données postgis. Je suis curieux de connaître l'expérience des développeurs lorsque j'essaie de pousser cette quantité de sommets vers le client.
Avec quel format WFS avez-vous obtenu les meilleurs résultats? Un réglage supplémentaire de Geoserver a-t-il été utilisé?
Je me rends compte que le WMS en mosaïque serait plus rapide, mais je veux permettre des changements dynamiques dans une carte choroplèth en utilisant openLayers, c'est-à-dire. l'utilisateur soumet un formulaire, un script Python est appelé et de nouveaux bacs de données sont retournés pour que les openlayers rechargent la carte div. Je veux également essayer cela en pleine résolution avant de réduire la complexité des polygones dans les couches ouvertes.
GEOJSON est à mon avis, le meilleur format, il est facile à lire, facile à utiliser en javascript et généralement de plus petite taille que GML / KML. Il peut même contenir des informations sur le style, voir ici .
Ce n'est pas une norme officielle, mais il est pris en charge à la fois par dépliant et openlayers et sur de nombreuses applications gis-desktop comme qgis.
la source
L'utilisation de GeoJSON est un bon début pour accélérer votre système, mais cela peut ne pas être suffisant. Vous devez envisager de créer plusieurs versions de votre couche de données, une par couche de zoom, et appliquer des méthodes de généralisation / simplification à chaque version. Le client doit demander la couche appropriée en fonction du niveau de zoom sélectionné. Cela garantirait que le niveau de détail des données échangées entre le serveur et le client est approprié, et augmenterait de manière plus significative à la fois le transfert réseau et le rendu. Pour aller plus loin, vous pouvez étendre votre système avec le pavage vectoriel et l'indexation spatiale comme décrit dans ce document , mais je ne suis pas sûr que les openlayers et le geoserver puissent le gérer ... pour le moment!
Pour sûr: Oubliez GML.
la source
Pourquoi ne pas utiliser votre script python pour créer un nouveau fichier SLD et l'envoyer au serveur WMS avec votre demande.
Il y a un exemple ici .
la source
J'ai déjà emprunté une route similaire deux fois et le rendu côté client pour autre chose qu'un petit nombre de points ou de polygones vraiment simples n'est tout simplement pas une bonne idée. Une fois que vous vous êtes lié à cette architecture, il est coûteux de revenir en arrière et dans tout projet, vous verrez probablement un changement dans les exigences ou une augmentation du volume de données alors que divers intervenants / superviseurs commencent à voir de quoi votre système est capable. L'approche de rendu côté client basée sur un navigateur n'est pas évolutive.
Si vous voulez un rendu dynamique, j'appuie l'approche de @ iant. J'ai décrit précédemment un certain nombre d'options pour un problème différent mais connexe ici . J'ai également utilisé la généralisation des polygones pour aider au rendu côté client et, bien que cela aide certainement, cela génère des problèmes plus difficiles, comme si vous souhaitez abaisser le polygone non généralisé lorsque votre utilisateur effectue un zoom avant.
Même si vous travaillez avec une plate-forme connue - par exemple, vous connaissez le matériel, la version du navigateur et les plugins de tous les clients - ce qui est peu probable, vous n'avez aucune idée du type de charge de ces clients. Ce type d'approche nécessite que le navigateur obtienne BEAUCOUP de temps CPU pour garder l'expérience utilisateur fluide et tout le reste va ennuyer vos utilisateurs.
la source