D'où d'abord pour se faire peur, (re)lire ceci (piqûre de rappel) !
Ensuite, un test que j'ai conduit pour se mettre en bouche :WFS (Geoserver 1.6.4 - pas en local). 4 Requêtes BDTOPO sur une même emprise (un peu plus que le territoire de Belfort) et avec extractAttributes à false :
- commune (polygone) : 205 objets (1.8Mo) BOUM (j'ai réussi à obtenir les mêmes erreurs que tu rapportes - toutes
- commune (polygone) : 36 objets (483Ko) OK (au delà, pas d'espoir)
- construction (ponctuel) : 406 objets (283Ko) OK
- construction (linéaire) : 699 objets (564Ko) OK
- construction (polygone) : 89 objets (89Ko) OK
Sur les derniers tests, il y a de la marge...
Conclusion :
Les diverses limitations sont une combinaison de plusieurs facteurs :
- Taille des géométries des objets (OpenLayers indique 2500 coordonnées - on va plus loin, mais c'est surtout une limitation sur le nombre de coordonnées par objet qui prévaut);
- Type des objets (pour le rendu en particulier) : les polygones, c'est dur ;
- Nombre d'objets (OpenLayers indique 100/200 objets) : en fait, c'est la condition 1 qui prime !
Question du jour : Pourquoi le fichier gironde.xml se charge en local directement et pas via WFS alors
Une piste (Sous FF2, tous les tests échouent vers 1M ...)
Que faire ?
C'est au cas par cas :
- Limiter les plages d'affichage pour limiter le nombre d'objets - un moindre mal;
- Utiliser le paramètre maxFeatures pour ne pas charger trop d'objets - inadapté de manière générique;
- Découper les couches d'objets par échelle (bases multi-échelles) pour ramener les bons objets (pas trop, avec une géométrie ad hoc) - pas évident, mais utile, utilisation de Geoportal.Layer.Aggregate ;
- Implémenter alors les SuperOverlays (pour les formats vecteurs) - dur, dur ;
- Faire des cartes (WMS/Tile) et mettre un GetFeature/GetFeatureInfo limité à la zone cliquée (combinaison petite emprise + maxFeatures) - probablement le meilleur compromis;
- Changer de langage ...
Partager