Options d'affichage des vecteurs PostGIS dans OpenLayers

22

Je suis très nouveau dans la cartographie Web, donc cette question peut être un peu erronée.

Je veux avoir une interface Web très simple en utilisant OpenLayers (ou même Google Maps si cela sera plus facile) qui peut afficher un certain nombre de tables de points et de polygones qui sont actuellement dans PostGIS.

Je veux que ce soit aussi simple (et aussi peu d'entretien) que possible:

  • Je ne veux pas avoir à créer de tuiles (à moins qu'il n'y ait une très bonne raison), ni avoir une couche massive et complexe de middleware.
  • Les performances n'ont pas besoin d'être phénoménales, car elles sont destinées à un usage interne et n'ont donc pas besoin d'évoluer au-delà de quelques utilisateurs simultanés.
  • Le style des couches vectorielles est d'une importance minime.
  • Les outils open source sont de loin préférés car je n'ai pratiquement pas de budget pour cela.

Quelle est l'approche recommandée pour cela?

fmark
la source

Réponses:

14

Le moyen le plus simple de configurer une carte en ligne à partir de sources PostGIS est d'utiliser Geoserver. Le Geoserver User Manual contient une bonne introduction à l'utilisation de PostGIS comme source de données . Vous ajoutez essentiellement un magasin de données contenant les informations de connexion, puis vous pouvez publier n'importe quelle table contenant des géométries. Outre PostGIS, vous pouvez également utiliser de nombreuses autres sources de données:

texte alternatif

Depuis l'interface Web de Geoserver, vous pouvez également prévisualiser les couches sur une page Web OpenLayers. Vous pouvez utiliser la source de cette page d'aperçu pour créer votre propre application OpenLayers.

Geoserver offre de nombreuses options de style pour les données vectorielles et raster. Pour commencer, vous pourriez être assez content de simplement personnaliser certains des styles prédéfinis fournis avec l'installation.

Par défaut, Geoserver ne tuile pas et OpenLayers ne demande pas de tuiles. Si vous n'avez pas besoin de hautes performances, vous n'avez pas à vous soucier des carreaux de toute façon.

Personnellement, je pense que OpenLayers est plus facile à utiliser que l'API Google Maps et vous serez indépendant de Google. Si vous avez besoin d'une carte d'arrière-plan, vous voudrez peut-être plutôt regarder OpenStreetMap.

obscur
la source
8

Si vous ne voulez vraiment pas d'une grande couche de middleware, vous pouvez utiliser TinyOWS ( http://tinyows.org/trac ) - Je ne l'ai jamais essayé mais il prétend être petit et rapide. De plus, il utilise les normes OGC, donc si vous décidez de publier à un public plus large et qu'il ne peut pas continuer à passer à GeoServer ou MapServer vous permettra de continuer à utiliser le même code client sans aucun changement.

Ian Turton
la source
ah oui, oublié tinyOWS, semblait un peu difficile à configurer, et ce n'est que pour PostGIS
dodobas
la question posée uniquement sur les postgis
Ian Turton
6

Vous pouvez utiliser n'importe quelle application pouvant prendre en charge le protocole WFS. Avec Openlayers, vous pouvez facilement utiliser les données PostGIS via le protocole WFS. Il existe peu d'applications FLOSS qui peuvent le faire. Par exemple, FeatureServer , Geoserver , MapServer ... Si vous êtes nouveau dans la cartographie Web, je recommanderais Geoserver car il est très très facile de le démarrer.

Voir cet exemple Openlayers avec WFS .

Mario Miler
la source
Le dernier lien est rompu.
Adam Matan
1
Je les ai tous essayés et ils fonctionnent. Peut-être que le dernier était temporairement en panne.
Mario Miler
4

Openlayers prend en charge un grand nombre de formats de données vectorielles (GeoJSON, GML, KML ..), qui peuvent être affichés et stylisés à l'aide de la couche vectorielle OpenLayers.

Peut-être que le middleware le plus simple pourrait être FeatureServer qui peut servir des données PostGIS à la plupart des formats pris en charge par OL. Il est facile à configurer et prend en charge les requêtes spatiales / d'attributs simples.

Mais, si vous avez besoin de quelque chose de plus puissant, Geoserver pourrait être une solution viable.

dodobas
la source
Pas d'amour pour mapserver :(
dassouki
1
en fait, mapserver a été mon premier amour, datant d'environ 2001, mais ... nous avons juste commencé à nous battre beaucoup, nous avons donc dû freiner :)
dodobas
Donc, si je donne une URL à openlayers à un geojson / gml / kml, il peut simplement les rendre?
fmark
1
oui, mais si vous avez besoin d'un filtrage, même par simple boîte englobante, vous devez utiliser WFS
dodobas
4

Vous pouvez alimenter json, kml amd wkt à partir de postgis tels que st_asgeojson (), st_asKML () pour PHP ou un script de serveur JSP, puis utiliser la classe ajax openlayers pour connecter la source de données à partir de votre serveur


la source
Je pense que cela convient le mieux à mon cas d'utilisation actuel. S'il est trop lent, j'essaierai TinyOWS et les autres serveurs de carte plus robustes. Pouvez-vous fournir un exemple de code pour le côté openlayers, en supposant que j'ai un script PHP quelque part retournant le geojson / kml / wkt?
fmark
@chaipat: Avez-vous un exemple à portée de main (script php et extrait openlayers correspondant)?
underdark
2

Vous pouvez facilement le faire en utilisant Geomajas qui lirait vos données de la base de données en utilisant Hibernate ou Geotools. Il s'agit uniquement de Java, ce qui peut être un problème si vous préférez d'autres langues.


la source
1

Eh bien, ce que vous pouvez faire est d'utiliser la bibliothèque OpenLayers et un langage de serveur pour pousser tous les types de géométrie postgis dans Openlayers. Vous aurez besoin de:

  • Openlayers.Layer.Vector pour créer un calque de données vectorielles
  • Openlayers OpenLayers.Protocol.HTTP pour lire les données du serveur Postgis
  • OpenLayers.Strategy.Fixed facultatif
  • OpenLayers.Feature.Vector tous les vecteurs sont issus de cette classe chez le client
  • OpenLayers.Format.GeoJSON ou OpenLayers.Format.JSON
  • Un langage côté serveur pour faire une demande à Postgis et pomper des géométries au client
  • Un analyseur JSON sur le serveur et le client pour transporter les données dans ce format

Avec cela, vous pouvez très facilement les afficher sans plus de middleware.

cavila
la source