QGIS und Kachelexport

Published on November 11, 2018

QGIS und Kachelexport


    Seit einigen Jahren beschäftige ich mich mit dem Schwenken und Aktualisieren der Kammschemata zweier Bergregionen. Dzhungar Ala Tau und Central Tien Shan.

    Anfangs habe ich alles im Ocad-Programm gezeichnet. Dies ist ein spezielles Programm zum Zeichnen von Orientierungslaufkarten. Das Projekt wurde in Dutzende Blätter aufgeteilt. Dann wurden diese Blätter in Bilder exportiert, genäht und in Kacheln geschnitten. Fliesen auf FTP geladen.

    Hier ist ein Beispiel dafür, was in QGis passiert

    und wie es in Ocad passiert ist.

    Und einmal habe ich QGIS getroffen.

    Das Programm hat mich beeindruckt. Ein netter Renderer. Nicht so ausdrucksstark wie in OCAD, aber die Qualität hat mir gepasst. Die Möglichkeit, direkt mit Geodaten zu arbeiten. Die Fähigkeit, mit dem gesamten Projekt zu arbeiten, ohne es in Teile zu zerlegen.
    All dies veranlasste dazu, das gesamte Projekt an QGIS zu übertragen.

    Aber jetzt bereue ich es ein bisschen.
    Der QGIS-Renderer ist nicht zum Generieren von Kacheln geeignet.
    Natürlich gibt es zwei QTiles- und QMetaTiles-Plug-Ins für QGIS 2. Ich habe sie für QGIS 3 angepasst.

    Ich werde Ihnen mehr über nicht behebbare Pfosten erzählen, die die Erzeugung von Kachelkarten in QGIS verhindern.
    Der Export erfolgt über das QTiles-Plugin.

    Pfosten №1. Wenn der Renderer berechnet, welche Objekte in seinen Bereich fallen (in QGIS Dies wird als Zeichenfläche bezeichnet), berücksichtigt er nicht die Größe der Zeichen der Objekte.

    Beispiel 1a Punktobjekt

    Bild

    Wie Sie sehen, wurde das Scheitelpunktsymbol abgeschnitten. Auf der unteren Kachel hat es der Renderer gemacht, auf der oberen nicht. Weil die Mitte der Oberseite nicht in die Grenzen der Fliese fiel.

    Beispiel 1b. Lineares Objekt Eine



    dicke Linie verläuft nahe dem Rand der Kachel. Es traf die untere Kachel teilweise. Das oberste Plättchen traf überhaupt nicht.

    Die Linie muss nicht entlang der Fliesenränder verlaufen. Möglicherweise gibt es noch ein solches Artefakt,



    Kosyak Nummer 2. Anordnung der Inschriften.

    Beispiel 2a Eine kurze Inschrift im


    Renderer für lineare Objekte leitete den Namen auf jeder Kachel ab.

    Beispiel 2b Lange Inschrift auf einem linearen Objekt

    Z15

    Z16

    bei Z15 Inschrift ist, weil es die Fliese Grenze vollständig bricht.
    Auf dem Z16 sind die Inschriften nicht mehr vorhanden, da die lange Inschrift nicht in die Grenzen der Kachel passt.

    Stellen Sie sich vor, Sie möchten eine Weltkarte zeichnen und auf diese in großen Buchstaben auf dem gesamten Kontinent "EURASIA" schreiben. Nichts wird daraus werden. Die Beschriftung wird nur in den Zoombereichen angezeigt, in denen sie sich auf der gesamten Kachel befindet.

    Beispiel 2c Die Inschrift auf dem Objektpunkt

    I auf die Option «Show Teiletiketten» gedreht

    Z16

    Z15

    bei Z16 Renderer zeigt nur einen Teil der Inschrift, in die Fliese zu erhalten. Wenn er ein benachbartes Plättchen rendert, ist es vorbei, er vergisst es.

    Wenn die Option „Teiletiketten anzeigen“ deaktiviert ist, befindet sich überhaupt keine Beschriftung auf dem Z16.

    Zwei Methoden wurden entwickelt, um diese Probleme zu lösen

    : 1. Metatalisierung
    2. Metatatling-Pufferzonen

    .
    Nicht jede Kachel wird einzeln gerendert, sondern eine Gruppe von mehreren Kacheln. Sagen wir, 4x4, und dann in kleinere Stücke schneiden.

    Pufferzonen
    Ein Bereich wird größer als eine Kachel oder eine Metadatei gerendert, und dann wird das erforderliche Stück daraus ausgeschnitten.

    Bei beiden Methoden werden die oben genannten Pfosten nicht korrigiert, sondern um mehrere Zoomstufen darunter verschoben. Dieselben Schwärme treten bereits an den Rändern von Kacheln und an den Rändern von Metaschwänzen oder Pufferzonen auf.

    Beispiel 2d. Punktobjekt
    Ich exportiere mit dem Plugin QMetaTiles. Metatail Größe 2x2. Dies bedeutet, dass der Bereich in 2x2 Kacheln gerendert und dann in Stücke geschnitten wird.

    Z16 Bild

    In der Tat. Die Beschriftung wird nicht mehr abgeschnitten, da sie vollständig in den 2x2-Kachelbereich passt. Aber an der Grenze des Metaschwanzes wurde das Objekt selbst abgeschnitten. Gleiches gilt für das lineare Objekt.
    Das Problem verschob eine Zoomstufe nach unten.

    Pfosten Nummer 3. Sprungmarken
    Beispiel 3a
    Der Aligner wählt jedes Mal die günstigste Position für die nächste Marke aus. Darüber hinaus hängt die Position der Beschriftungen von der Position der Leinwand ab. Bewegen Sie es ein paar Millimeter, und alle Inschriften werden völlig anders sein.

    Dies bedeutet, dass sich beim Rendern eines Metaschwanzes und der Pufferzone an einer Stelle die Beschriftung befinden kann und beim Rendern des nächsten Metaschwanzes - vollständig an einer anderen.

    Ich exportiere ein Stück der Karte in Kacheln. Beschriftungen belegen eine Bestellung.

    Dann verschiebe ich die Leinwand ein wenig und exportiere sie erneut. Beschriftungen nehmen bereits eine ganz andere Reihenfolge ein. Gleichzeitig treten solche Artefakte auf.



    Was kann man damit anfangen?

    Metatayling- und Pufferbereiche lösen die oben beschriebenen Probleme nicht, sondern drücken sie auf niedrigere Zoomstufen.

    1. Wenn der Renderer berechnet, welche Objekte er zeichnen soll, muss er nicht nur die Geodaten der Objekte berücksichtigen, sondern auch deren Symbolik.

    Beispielsweise sollte der Renderer für alle Objekte BBOX speichern, die das Objekt nach dem einzelnen Rendern belegt. Beim Rendern einer Szene müssen Sie die Schnittmenge der Zeichenfläche mit den einzelnen BBOXs der gerenderten Objekte berücksichtigen.

    Gleichzeitig ist es wünschenswert, dass BBOX auch Etiketten enthält, die an das Objekt angehängt sind.

    2. Die Position der Beschriftungen sollte nicht von der Position der Zeichenfläche abhängen. Dann werden bei teilweisem Export die Inschriftenfragmente gut genäht. Metatailing und Pufferzonen sind nicht erforderlich.

    Leider ist der Export von Kacheln aus QGIs im Moment nur schrecklich, und wann es behoben wird, ist nicht klar.

    Vielleicht ist hier jemand an der Entwicklung von QGis beteiligt?