Générer automatiquement des images de carte avec différents styles dans QGIS? [fermé]

9

J'ai une carte simple dans QGIS, contenant seulement 1 couche qui se compose de 10+ fonctionnalités. Maintenant, je dois générer (par programme) environ 200 images de carte JPEG différentes de la même zone. Chaque carte doit avoir les mêmes étendues de carte et toutes les entités visibles. Cependant, les entités doivent avoir un ensemble de couleurs différent dans chaque carte générée. En détail, j'ai un fichier CSV contenant les couleurs catégorisées pour chaque fonctionnalité (1 ligne pour chaque image, 1 colonne et couleur par fonctionnalité), quelque chose comme ceci:

"A","B","C","D","E","F" (header line, 6 columns in this file)
"#000000","#FF0000","#00FF00","#0000FF","#0000FF","#808080"
"#000000","#FF0000","#FF0000","#00FF00","#00FF00","#808080"
"#FF0000","#FF0000","#000000","#800080","#FFFFFF","#FFFF00"
...

Mon plan actuel est d'utiliser Perl ou similaire pour créer 200 fichiers QML différents basés sur ce fichier CSV. Ensuite, je prévois d'écrire un script Python pour

  1. Parcourez les fichiers QML
  2. Ouvrez chaque fichier QML, un par un, et appliquez-en un style de calque
  3. Ouvrez le composeur de cartes et enregistrez le fichier d'image raster
  4. Fermez le composeur de cartes et passez au fichier QML suivant

Je demande maintenant toute contribution concernant:

  • Cela peut-il être fait dans QGIS + Python?
  • De meilleures façons d'atteindre mon objectif?
  • Des conseils sur n'importe quel code source ou plugin existant pour y parvenir?
Simo A.
la source

Réponses:

21

Ceci est possible dans QGIS sans aucune programmation python, mais vous aurez besoin d'un instantané de développement actuel de QGIS 2.6 car il s'appuie sur des fonctionnalités ajoutées depuis la sortie de la version 2.4. Voici les étapes requises:

  • Configurez vos couches de carte comme vous le souhaitez (en ignorant la coloration des entités qui auront des remplissages de couleurs dynamiques)

  • Créez un nouveau compositeur d'impression. Ajoutez un élément de carte à la composition et configurez ses étendues comme vous le souhaitez.

  • Importez votre fichier CSV contenant les couleurs d'entités de sortie de carte souhaitées

  • Dans le composeur d'impression, définissez la couche CSV importée comme "couche de couverture de l'atlas" (recherchez l'onglet "Génération Atlas"). (Si vous avez exporté l'atlas maintenant, vous devriez obtenir 200 copies de la même carte exacte ...)

entrez la description de l'image ici

  • Ensuite, vous devez configurer vos fonctionnalités afin qu'elles soient stylisées avec les couleurs répertoriées dans votre fichier CSV. Cela se fait via le bouton "Propriétés définies par les données" en bas de l'onglet Style de la couche:

entrez la description de l'image ici

  • Vous devrez cocher la propriété "Couleur", puis cliquer sur le bouton "E" pour ouvrir l'éditeur d'expression.

  • L'expression sera quelque chose comme ceci:

    attribute(  $atlasfeature , 'A' )
    

entrez la description de l'image ici

  • Fondamentalement, cette expression récupérera la valeur stockée dans la colonne "A" de la fonction d'atlas actuelle. Puisque dans votre cas, cette valeur sera une couleur (par exemple # FF0000), la fonction sera stylisée en utilisant cette couleur. (Cette expression est la partie qui repose sur QGIS> 2.4 - la fonction "attribut" a été ajoutée après la sortie de la version 2.4).

  • Stylisez les autres fonctionnalités de la même manière, mais en utilisant les colonnes 'B', 'C', 'D', etc. comme vous le souhaitez

  • De retour dans le composeur d'impression, vous pouvez activer un aperçu de l'atlas (menu Atlas -> Aperçu de l'Atlas) et parcourir les lignes de votre fichier CSV à l'aide des flèches de la barre d'outils. Si tout semble correct, exportez l'atlas en utilisant les options du menu Atlas ... et vous avez terminé! Aucune programmation nécessaire!

Exemples de sortie:

entrez la description de l'image ici entrez la description de l'image ici

etc

ndawson
la source