Automatische Generierung von Kartenbildern mit verschiedenen Stilen in QGIS? [geschlossen]

9

Ich habe eine einfache Karte in QGIS, die nur 1 Ebene enthält, die aus mehr als 10 Funktionen besteht. Jetzt muss ich (programmgesteuert) ungefähr 200 verschiedene JPEG-Kartenbilder desselben Gebiets erzeugen. Jede Karte sollte die gleichen Kartenbereiche haben und alle Funktionen sichtbar sein. Die Features sollten jedoch in jeder generierten Karte unterschiedliche Farben aufweisen. Im Detail habe ich eine CSV-Datei, die die kategorisierten Farben für jedes Feature enthält (1 Zeile für jedes Bild, 1 Spalte und Farbe pro Feature).

"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"
...

Mein aktueller Plan ist es, Perl oder ähnliches zu verwenden, um 200 verschiedene QML-Dateien basierend auf dieser CSV-Datei zu erstellen. Dann habe ich vor, ein Python-Skript zu schreiben

  1. Durchlaufen Sie QML-Dateien
  2. Öffnen Sie jede QML-Datei einzeln und wenden Sie den Ebenenstil darauf an
  3. Öffnen Sie den Map Composer und speichern Sie die Rasterbilddatei
  4. Schließen Sie den Map Composer und springen Sie in die nächste QML-Datei

Ich bitte jetzt um Anregungen zu:

  • Kann dies in QGIS + Python durchgeführt werden?
  • Gibt es bessere Möglichkeiten, um mein Ziel zu erreichen?
  • Hinweise zu einem vorhandenen Quellcode oder Plugin, um dies zu erreichen?
Simo A.
quelle

Antworten:

21

Dies ist in QGIS ohne Python-Programmierung möglich, Sie benötigen jedoch einen aktuellen Entwicklungs-Snapshot von QGIS 2.6, da dieser auf Funktionen basiert, die seit der Veröffentlichung von 2.4 hinzugefügt wurden. Hier sind die erforderlichen Schritte:

  • Richten Sie Ihre Kartenebenen wie gewünscht ein (ignorieren Sie die Farbgebung von Features mit dynamischen Farbfüllungen).

  • Erstellen Sie einen neuen Druckkomponisten. Fügen Sie der Komposition ein Kartenelement hinzu und richten Sie die Ausmaße wie gewünscht ein.

  • Importieren Sie Ihre CSV-Datei mit den gewünschten Farben der Kartenausgabefunktion

  • Legen Sie im Print Composer die importierte CSV-Ebene als "Atlasabdeckungsebene" fest (suchen Sie nach der Registerkarte "Atlasgenerierung"). (Wenn Sie den Atlas jetzt exportiert haben, sollten Sie 200 Kopien derselben Karte erhalten ...)

Geben Sie hier die Bildbeschreibung ein

  • Als Nächstes müssen Sie Ihre Funktionen so einrichten, dass sie mit den in Ihrer CSV-Datei aufgeführten Farben gestaltet sind. Dies erfolgt über die Schaltfläche "Datendefinierte Eigenschaften" unten auf der Registerkarte "Stil" der Ebene:

Geben Sie hier die Bildbeschreibung ein

  • Sie müssen die Eigenschaft "Farbe" ankreuzen und dann auf die Schaltfläche "E" klicken, um den Ausdruckseditor zu öffnen.

  • Der Ausdruck wird ungefähr so ​​sein:

    attribute(  $atlasfeature , 'A' )
    

Geben Sie hier die Bildbeschreibung ein

  • Grundsätzlich ruft dieser Ausdruck den in der Spalte "A" gespeicherten Wert aus der aktuellen Atlasfunktion ab. Da dieser Wert in Ihrem Fall eine Farbe ist (z. B. # FF0000), wird die Funktion mit dieser Farbe gestaltet. (Dieser Ausdruck ist der Teil, der auf QGIS> 2.4 basiert - die Funktion "Attribut" wurde hinzugefügt, nachdem 2.4 veröffentlicht wurde).

  • Gestalten Sie die anderen Features auf ähnliche Weise, verwenden Sie jedoch die gewünschten Spalten 'B', 'C', 'D' usw.

  • Zurück im Print Composer können Sie eine Atlas-Vorschau aktivieren (Atlas-Menü -> Vorschau-Atlas) und mit den Pfeilen in der Symbolleiste durch die Zeilen Ihrer CSV-Datei blättern. Wenn alles richtig aussieht, exportieren Sie den Atlas mit den Optionen im Atlas-Menü ... und fertig! Keine Programmierung notwendig!

Beispiele für die Ausgabe:

Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

usw. usw.

Ndawson
quelle