Quelle est la manière la plus rapide (en termes de performances) de servir les fonctionnalités PostGIS?

12

Je suis intéressé par le moyen le plus rapide de servir les fonctionnalités PostGIS. Je peux trouver plusieurs améliorations et alternatives WMS (MapProxy, TileCache, Mapnik ...) mais pas autant d'améliorations et d'alternatives WFS Open Source. Je ne m'intéresse pas aux tuiles, mais aux polygones sur ma couche de base. Servi rapidement.

Pourriez-vous s'il vous plaît me montrer la bonne direction?


Mise à jour:

J'ai oublié de mentionner que mon application affiche des informations cadastrales. Et les polygones cadastraux doivent être sélectionnables (non modifiables, ils ne sont mis en surbrillance que lorsque vous cliquez dessus).

J'utilise actuellement un mélange de WMS + Django générant des objets GeoJSON lorsque l'utilisateur clique sur une partie de la carte, pour éviter des situations comme des milliers de polygones en même temps dans le client (OpenLayers).

Je ne sais pas si je suis dans le bon sens (dois-je éviter des situations potentiellement difficiles comme des milliers de pols dans le client en les rendant via WMS ou toute autre solution? Dois-je améliorer la façon dont les polygones sont servis?)

Jorge Arévalo
la source
1
De quel matériel disposez-vous?
Mapperz
Ubuntu 10.04 32bits 512 Mo de RAM, fonctionnant sous un serveur VMWare. C'est une machine de développement, mais je n'ai pas encore accès à une autre. Cela devrait fonctionner raisonnablement bien ici (une condition requise)
Jorge Arévalo

Réponses:

6

GeoServer fournit un paramètre utilisateur pour contrôler le nombre de décimales dans les géométries qui y ont été insérées pour accélérer le service WFS.

Assurez-vous également que le serveur ne comprime la sortie que si votre client peut la décompresser efficacement.

Enfin, j'ai entendu de bonnes choses sur les petits OWS en termes de vitesse.

Ian Turton
la source
J'ai entendu parler de petits OWS mais je ne les ai jamais utilisés. Merci pour la suggestion!
Jorge Arévalo
6

La mise en cache WFS peut répondre à vos besoins. Pour autant que je sache, il existe deux solutions open source fournissant la mise en cache WFS: TileStache et GeoWebCache .

Dans la page d'accueil de TileStache, section des fonctionnalités, il est dit "Génère des tuiles vectorielles à partir de sources de données OGR dans GeoJSON utilisables dans Polymaps"

GeoWebCache possède certaines capacités de mise en cache WFS depuis la version 1.1.0 (la version actuelle est 1.2.6):

GeoWebCache 1.1.0 (enfin) publié

...

1.c Mise en cache WFS de base GeoWebCache 1.1.0 prend en charge la mise en cache WFS très basique. Les résultats des requêtes sont stockés sur le disque, il n'y a actuellement aucune fonction pour les inspecter ou les supprimer par programme. L'algorithme repose sur des hachages calculés et ne vérifie pas l'unicité, il y a donc une minute de chance de collision. La motivation de ce développement était le format de sortie SHP-ZIP (fichier de forme zippé) dans GeoServer. Ces fichiers peuvent être énormes et extrêmement coûteux à calculer. Ce service WFS n'est pas, dans son état actuel, destiné à être utilisé pour des cas plus compliqués.

http://old.nabble.com/GeoWebCache-1.1.0-(finally)-released-td22870524.html

Malheureusement, je n'ai jamais travaillé avec TileStache ni GeoWebCache, donc je ne peux partager aucune expérience sur la mise en cache WFS.

dariapra
la source
Merci. J'envisage 2 options: rendre mes polygones et les servir via WMS + cache (il y en a des millions, peut-être trop pour le client ...) ou essayer de servir mes polygones via WFS + cache. Je travaille avec la première option en ce moment.
Jorge Arévalo
1
Je recommande la première option (rendu WMS côté serveur + cache). L'option WFS implique que le rendu se fera côté client. D'après mon expérience, c'est un problème pour les utilisateurs ayant d'anciens navigateurs Web ou ordinateurs, une variable que vous ne pouvez pas contrôler.
dariapra
3

Je développe un grand web-gis, je travaille avec beaucoup de données (environ 700.000 fonctionnalités par couche) La seule solution est celle que vous faites, WMS pour le rendu des fonctionnalités et WFS pour obtenir les informations sur les fonctionnalités. Ce que je fais (avec de bonnes performances) c'est:

  • Geoserver (avec bibliothèque JAI native )
  • Lorsque l'utilisateur clique sur la carte, un wms getfeatureinfo est utilisé pour obtenir les informations (à la fois la forme et les données) de l'entité sélectionnée (ici, vous devez implémenter une fonction de filtrage, si vous avez des entités qui se chevauchent)
  • Le résultat de getFeatureInfo est ajouté en tant que fonction sur un autre calque pour simuler le "surlignage de sélection"
Tommaso
la source
Merci! Le projet a finalement été annulé, mais je pense que votre solution est bonne.
Jorge Arévalo