Je recherche un moyen simple et à petite échelle de présenter un ou plusieurs fichiers de formes polygonales en ligne (sur un site Web municipal sans aucune infrastructure de serveur de carte, pour être précis). En ce moment, je fais tout le travail avec QGIS, et je préférerais rester entièrement open-source (il n'y a pas de budget pour de gros investissements logiciels).
La recherche sur ce sujet a abouti à un nombre écrasant d'approches possibles et m'a laissé assez confus. Ce que je recherche c'est
- être capable d'afficher des polygones classés dans une carte thématique (- si possible, ce serait bien d'avoir des popups ou de pouvoir récupérer des informations d'attribut - mais c'est très optionnel)
- Je préférerais faire la plupart des travaux (stylisme, etc.) dans QGIS
- OSM comme fond de carte serait parfaitement bien
Jusqu'à présent, les tuiles de carte personnalisées sur une carte de base OSM ressemblent à ce que je recherche (ou existe-t-il une meilleure solution)? Quelle serait la meilleure façon de créer ces tuiles?
qgis
openstreetmap
openlayers
web-mapping
tiles
SAnderka
la source
la source
Réponses:
Pour un moyen simple de le faire à partir de QGIS, vous pouvez utiliser QGIS Mapserver qui peut servir des cartes que vous concevez à l'aide de l'interface QGIS normale. Alternativement, vous voudrez peut-être utiliser GeoServer qui est basé sur Java et probablement plus facile à installer. Étant donné que les deux programmes servent des cartes utilisant des normes ouvertes si vous commencez par une et devez changer plus tard, il n'est pas nécessaire de changer le client.
Une fois que vous avez un système configuré pour servir des cartes WMS, vous aurez besoin d'un frontal client. Je recommanderais OpenLayers car il est assez simple de commencer et facilement extensible. Il gère sans problème les tuiles WMS, WMST et OSM.
En fin de compte, vous devrez peut-être passer à des tuiles pour vos couches WMS (par exemple, vous commencez à recevoir plus de 50 à 100 demandes par minute sur un matériel raisonnable), puis vous voudrez envisager de mettre un cache de tuiles devant le serveur de carte. Si vous avez utilisé GeoServer, vous pouvez utiliser GeoWebCache qui est intégré ou vous pouvez utiliser TileCache .
la source
Tout cela peut être fait dans QGIS et le
ogr2layers
plugin. Le workflow est simple:Donnez un style à vos données dans QGIS. Utilisez l'ancienne symbologie car j'ai eu des problèmes avec le
New Symbology
lors de l'utilisation duogr2layers
plugin.Lancez le
ogr2layers
plugin et définissez les paramètres des openlayers (tels que la taille de la carte, les contrôles de carte, le fond de carte, etc.). Cela va créer un répertoire contenant leindex.html
et vos couches de données converties engeojson
fichiers.Téléchargez le répertoire dans le serveur Web.
Notez que ce n'est que pour une simple carte Web. Pour créer des fonds de carte personnalisés et d'autres fonctionnalités de cartographie Web, consultez les réponses de iant et Peter.
la source
Une autre option est TileMill - il prend en charge la mosaïque, l'interaction et la cartographie dans une interface Web facile à utiliser, y compris les définitions de style dans un langage proto-CSS appelé cascadenik . En utilisant TileMill, vous pouvez lancer des fichiers mbtiles qui peuvent être consommés avec quelque chose comme TileStream . Cela dit, il y a encore quelques astuces avec le déploiement des sorties mappées, mais cela vous donnerait une belle plate-forme pour générer des tuiles de haute qualité.
la source
J'ai décidé de fournir des informations sur la façon dont je suis finalement allé pour mon service de carte carrelée. Le JavaScript pur et les GeoJSON n'étaient pas une solution, car je dois gérer environ 40 000 polygones et 33 000 points. J'ai donc opté pour le carrelage. Oh, et je n'ai toujours pas accès au serveur racine, donc je ne peux pas configurer GeoServer ou quelque chose de similaire (ce ne serait pas financièrement faisable pour un seul client pour le moment)
Après quelques recherches et lecture, je me suis finalement installé avec OpenLayers (après quelques présentations avec GMaps). Le grand livre d'Eric Hazzard "OpenLayers 2.10" (Packt Publishing, 2011) m'a vraiment beaucoup aidé, car il couvre également certaines bases de JavaScript et des conseils de débogage.
J'ai fait tout mon travail sur les données vectorielles dans QGIS, bien sûr, c'est certainement la voie à suivre pour un petit pigiste comme moi (je connais également pas mal d'ArcGIS de l'université, mais QGIS a offert tout ce dont j'avais besoin jusqu'à présent).
Styliser la carte et créer les tuiles était un plus grand défi. Tout d'abord, j'ai accepté " GMapCreator " de CASA, mais la superposition de plusieurs fichiers de formes s'est avérée fastidieuse (je dois fournir des données ponctuelles sur des polygones, puis une limite municipale englobant tout). Il est absolument possible de le faire dans GMapsCreator (et je l'ai fait pour l'étape de la vitrine), mais cela prend 3 cycles de rendu complets (d'abord vous créez des tuiles, puis les tuiles existantes sont "surchargées" avec des fonctionnalités ultérieures - rendu dans le bon ordre est important!), et les menus de style sont légèrement volumineux et déroutants. L'enregistrement de votre carte et sa modification ultérieure est également un problème compliqué.
TileMill semblait très prometteur, en particulier leur style CSS, alors je l'ai examiné. Malheureusement, c'est uniquement Mac ou Linux, ce qui pourrait effrayer certaines personnes. J'ai vraiment aimé ce que j'ai vu, j'ai donc installé une partition Ubuntu sur mon disque dur, l'ai téléchargée et stylisé mes cartes. La documentation sur la syntaxe de style est parfois un peu rare, mais regarder leur vidéo de démonstration (liée sur le site principal) répond à presque tout. Il est possible de faire des choses intéressantes avec des styles imbriqués et / ou conditionnels, et une compréhension de base du CSS devrait vraiment vous aider à aller où vous voulez.
Au final, TileMill restitue un joli fichier unique * .mbtiles. Je ne pense pas qu'il y ait un moyen de les afficher directement dans OpenLayers (au moins je n'en ai pas trouvé?), Il était donc temps d'utiliser un autre outil: mbutil . Cet outil "décompresse" le fichier mbtiles dans une structure de dossiers régulière contenant les pngs en mosaïque de mes données sur les niveaux de zoom sélectionnés.
Enfin, j'ai téléchargé tous ces fichiers sur mon serveur FTP, j'ai fait des lectures approfondies sur OL pour mettre ma carte Web en place (vous ajoutez les tuiles créées en tant que couche TMS, mais deviner l'url source et le nom de couche appropriés a pris un certain temps et googler), puis brûlé quelques heures à tripoter les problèmes de base html / CSS. Je voulais une carte 100% largeur / hauteur avec une légende flottante suivant les lignes directrices de l'identité de mes clients "corporate" (c'est une municipalité, comme mentionné).
Oh, et jusqu'à présent, j'utilise Google Maps comme couches de base, mais cela pourrait bientôt être remplacé par des images aériennes personnalisées servies via WMS (non fournies par moi, mais le levé de l'état et l'administration des géodonnées).
J'espère que je n'ai rien oublié d'important, mais si je l'ai fait, n'hésitez pas à demander! Je vérifierai ce fil de temps en temps.
la source
Si vous avez moins de 1000 polygones, tenez compte du commentaire de @ Mapperz sur une solution vectorielle - pas besoin de créer et de stocker des images en mosaïque non interactives si vous n'avez que quelques polygones.
Les images en mosaïque sont optimales pour des informations très denses, telles que des images satellite, des routes ou 50 000 polygones de secteurs de recensement.
La solution la plus simple pour un petit nombre de polygones est de convertir le fichier de formes en KML et de le télécharger sur Google My Maps.
Si vous codez en Javascript, la solution la plus interactive est l'API Google Maps (ou OpenLayers) pour dessiner des polygones et créer des fenêtres contextuelles d'informations. Vous pouvez commencer par convertir les polygones de fichiers de formes, à l'aide de la bibliothèque GDAL, en un fichier geoJSON (une manière Javascript de stocker des informations géographiques).
Ou si vous avez choisi la route des tuiles, vous pouvez stocker des tuiles sur Amazon ou le cloud de Google sans tracas internes.
Cette entrée de blog sur la cartographie thématique présente un bon résumé des avantages de l'approche vectorielle par rapport à l'approche des tuiles que vous envisagez.
Bonne chance!
la source
Je me sens pour vous mon pote, comme je travaille lentement mon chemin vers la même conclusion. Ayant appris QGIS, j'ai essayé quantamnik et mapnik. Mais alors qu'il portera le style qgis, c'est un aller simple et les systèmes de style ne sont pas 1 pour 1, vous devez donc apprendre le style mapnik de toute façon. Je suppose que la même chose s'applique à la fonction d'exportation de qgis mapserver. Il ne semble pas y avoir de "moyen facile" de se perfectionner sur le serveur de carte.
Mapnik, geoserver, mapserver, il semble que les dévots de chacun mais mapserver semble être la voie du milieu.
Cela dit, il y a un raccourci que j'ai trouvé et c'est qgis a une option en ligne de commande pour pixelliser une carte qgis à la résolution et aux limites de votre choix, et crée un fichier mondial. Avec cela, vous pouvez utiliser maptiler ou gdal2tiles pour carreler une couche à la fois. Ce ne serait évidemment pas bon pour 20 niveaux de zoom, et je ne sais pas non plus quelle est la taille maximale png.
la source