Mehr

GDAL Merge Py auf Ubuntu viele Tif-Kacheln zu einem

GDAL Merge Py auf Ubuntu viele Tif-Kacheln zu einem


Versuch, 1000 Gtiff-Raster (alle in einem Ordner) über gdal merge unter Linux Ubuntu in eine TIF-Datei zu stapeln.

Probleme mit dem Linux-Befehl, um alle Dateien in einem Ordner in das Ausgabe-Tiff zu bringen.

Auf der Suche nach Beispielcode für die Verwendung in gdal auf Ubuntu im Terminal.

Für Ubuntu ist meine beste Vermutung

für f in *.tiff; do gdal_merge -of GTiff "$f"; getan

gdal_merge.py -o output.tif 'ls *.tif'

Die Back-Ticks bedeuten, dass alles ausgeführt wird, was sich in den Back-Ticks vor dem Hauptbefehl befindet, sodass alle TIF-Dateien im aktuellen Verzeichnis gefunden werden, die dann als Eingabe für gdal_merge.py verwendet werden.

Anstelle von Backticks können Sie auch die$(Befehl)Syntax, dh

gdal_merge.py -o Ausgabe.tif $(ls *.tif)

entspricht dem vorherigen.

Wenn Sie kompliziertere Suchanforderungen haben, können Sie das Unix/LinuxfindenBefehl zuerst in Verbindung mit ls, um eine Liste zu erstellen, die an gdal_merge übergeben wird.

Ich habe dies gerade erfolgreich mit 16 Tiffs auf Ubuntu gemacht, also sollte es sicherlich für Sie funktionieren.


Gdal2tiles Pixelverschiebung in Ausgabekacheln

Ich möchte große Geotiff-Dateien (10.000 x 10.000 px) mit Hilfe von gdal2tiles in kleine (256 x 256 px) Kacheln umrechnen. Der Prozess funktioniert gut. Das Ergebnis ist jedoch nicht perfekt. Es gibt eine leichte Verschiebung in den Kacheln (siehe Bild unten). Ich habe bereits verschiedene Resampling-Methoden ausprobiert und jedes Mal das gleiche Ergebnis erhalten.

Hat jemand Ideen?


GDAL Merge Py auf Ubuntu viele TIF-Kacheln zu einem - Geographische Informationssysteme

Der Hauptzweck der Software besteht darin, mit einigen Optionen und Eingaben Kacheln in einem definierten Kachelsystem zu generieren. Die einzige obligatorische Option ist -o für das Ausgabeverzeichnis. Dieses Verzeichnis darf beim Ausführen von MapTiler Engine noch nicht vorhanden sein, um ein versehentliches Überschreiben vorhandener Daten zu vermeiden. Als Eingabe können Sie einfach den Dateinamen des Quell-Datasets angeben [1].

Um mehrere Dateien gleichzeitig zu rendern, geben Sie sie einfach nacheinander an:

Wenn Sie den Maptiler ohne Argumente oder mit der Option -help starten, gibt er alle verfügbaren Befehle aus:

Das Standardverhalten der MapTiler Engine besteht darin, jede Kachel in eine eigene Datei unter der Verzeichnisstruktur zu schreiben:

Dabei ist z die Zoomstufe und die x- und y-Kachelkoordinaten auf der entsprechenden Zoomstufe im Kachelprofil.

Die erstellte Verzeichnisstruktur enthält auch einen einfachen HTML-Viewer und eine Beschreibung des Datensatzes in metadata.json, kompatibel mit mb-util und TileServer-Projekten, die den OGC WMTS-Standard unterstützen.

MapTiler Engine unterstützt die direkte Ausgabe der gerenderten Kartenkacheln in eine SQLite-Datenbank (MBTiles- oder GeoPackage-Format). Dies vereinfacht die Übertragung und Verwaltung der Tilesets und ist praktisch für mobile Anwendungen.

MapTiler Engine-Befehlsstruktur

Die globalen Optionen gelten für alle Eingabedateien, d. h.:

Nur Argumente, die VOR den eingegebenen Dateinamen angegeben wurden, werden auf alle Dateien angewendet!

Argumente, die nur auf eine einzelne Datei angewendet werden sollen, werden NACH dem Namen einer solchen Datei angegeben (zB Zoomstufenbereich nur für diese Datei) und haben eine höhere Priorität als die globalen Optionen.

Fliesenprofil / Fliesenmatrix-Set

Eine globale Option, die das Ausgabesystem von Kacheln definiert – das Zielkoordinatensystem, die Kachelpixelgröße usw. MapTiler Engine enthält diese vordefinierten beliebtesten Systeme und die Möglichkeit, ein benutzerdefiniertes Profil anzugeben.

-Mercator DEFAULT. Das kugelförmige Mercator-Kachelprofil ist kompatibel mit Google, Bing, Yahoo Maps, MapQuest, OpenStreetMap und mobilen Karten auf iOS und Android. Dies ist das am häufigsten verwendete Profil. Es verwendet ein Koordinatensystem, das als EPSG:3857 oder EPSG:900913 definiert ist. Einzelheiten finden Sie hier.

Falls Sie ein anderes Kachelsystem verwenden möchten, müssen Sie es als ersten Befehl in der Befehlszeile angeben. Das sind die Alternativen:

-gearth Kachelprofil speziell für Google Earth gemäß der KML-SuperOverlay-Definition. -raster Das Rendern von Rasterdateien ohne Georeferenzierung ist ebenfalls möglich. -garmin Um das Format für Garmin GPS-Geräte zu erzeugen, mit einer Größe von 1024x1024 Pixel und Ausgabe in eine .kml-Datei. Packen Sie anschließend die Kacheln und die .kml-Kacheln in ein .zip-Archiv, ändern Sie die Erweiterung in .kmz und speichern Sie es auf dem Gerät. -custom Sie können Ihr eigenes Kachelsystem angeben. Weitere Informationen finden Sie im entsprechenden Abschnitt im Kapitel Erweiterte Optionen.

Beispiel: Befehl zum Erstellen von Kacheln für die Verwendung mit Google Earth:

Beispiel: Befehl zum Herstellen von Kacheln zur Verwendung mit Geodetic WGS84 Plate Caree:

MapTiler Engine bietet vordefinierte benutzerdefinierte Kachelvoreinstellungen (benutzerdefinierte Kachelraster) für fortgeschrittene Kunden. Jede benutzerdefinierte Kachelvorgabe hat ihre eigene Bereichsabdeckung, einige sind für die Welt gedacht, andere decken nur bestimmte Staaten oder eine Gruppe von Staaten ab.

-voreingestellte geodätische WGS84 Platte Caree / Unprojiziert. Kompatibel mit den meisten vorhandenen WMS-Servern, OpenLayers-Basiskarte.

-preset standard_grid Globales Standard-Kachelgitter mit einem ausgewählten Koordinatensystem. Diese Kachelvorgabe behält das ursprüngliche Koordinatensystem (SRS) bei und schneidet die Eingabekarte entsprechend dem sphärischen Mercatorkachelprofil in Kacheln. Hinweis dies ist nicht kompatibel mit dem Google Mercator-Profil -mercator!

-voreingestelltes Baidu Tilegrid für chinesische Kunden definiert. Diese Voreinstellung deckt nur die Region China ab und ist mit dem Baidu Maps-Dienst kompatibel.

-preset yandex Benutzerdefinierte Kachelvorgabe, die im russischen Web-Mapping-Dienst verwendet wird und mit Yandex.Maps kompatibel ist. Der Versicherungsschutz ist auf Russland und die Ukraine beschränkt.

-preset cz_jtsk Nationales Kachelraster für Tschechien und die Slowakei mit einer Genauigkeit von bis zu 1 Meter pro Pixel.

-preset fr_rgf93 Tilegrid definiert für eine präzise Überlagerung von Karten in Frankreich unter Verwendung der Lambert 93 Kegelprojektion.

-preset nl_rdnew Nationales Fliesenraster für Niederlande - Rijksdriehoekstelsel Neu / Amersfoort.

-preset uk_osgb [zoom_group] Nationales Kachelraster für das Vereinigte Königreich mit Ordnance Survey-Projektion. Diese benutzerdefinierte Vorgabe erfordert eine bestimmte zoom_group, die die Ausgabezoomstufen dieses Rasters begrenzt. Unterstützte Werte mit Zoomstufen in der Klammer sind: 0 (z0), 1 (z1 - z2), 2 (z3 - z6), 3 (z7 - z8), 4 (z9 - z10).

-preset ch_lv03 [zoom_group] Nationales Schweizer Kachelraster, das in der Schweiz und in Liechtenstein mit hoher Präzision verwendet wird. Diese benutzerdefinierte Voreinstellung erfordert eine bestimmte Zoomgruppe mit Werten von 0 bis 21. Diese Werte werden meistens für die jeweilige Zoomstufe dargestellt. Ausgabekacheln können kombiniert werden und sind mit SwissTopo-Karten kompatibel.

Beachten Sie, dass -zoom 3 3 nicht erforderlich ist und automatisch wie für diese Zoomgruppe definiert begrenzt wird.

-preset nz_nztm [zoom_group] Neuseeland Geodätisches Datum (NZGD2000), offizielles geodätisches Datum für Neuseeland und seine vorgelagerten Inseln. Diese benutzerdefinierte Voreinstellung erfordert eine bestimmte Zoomgruppe, die die Ausgabezoomstufen dieses Rasters begrenzt. Unterstützte Werte mit Zoomstufen in der Klammer sind: 0 (z0-z7), 1 (z8-z10), 2 (z11-z13), 3 (z14-z16).

Beispiel: der Befehl zum Erstellen von Standard-Retina-Kacheln im Mercator-Profil

Beispiel: der Befehl zum Erzeugen von Retina-Kacheln im Maßstab 1,5 im Rasterprofil

Diese Option legt fest, welche Schichten der Kachelpyramide erzeugt werden. Der Standardwert ist der "native" Level, der aus der Bildauflösung berechnet wird. Falls Sie zusätzliche Zoomstufen hinzufügen müssen, können Sie diese entweder als absolute Zahlenwerte oder als relative Zahlen zu den „nativen“ Stufen mit Präfix + und - definieren.

Jede Eingabedatei kann ihre eigene explizite Option für Zoomstufen haben.

Beispiel: Zoomstufen werden automatisch berechnet als zB. fünfzehn

Beispiel: Zoomstufen sind explizit auf 3 - 5 . eingestellt

Beispiel: Zoomstufen sind auf 1 - 6 eingestellt mit einem relativen Wert zu nativen Zoomstufen

Beispiel: Zoomstufen sind auf 2 - 4 eingestellt mit einem relativen Wert zu nativen Zoomstufen

Beispiel: Zoomstufen sind auf 0 - 4 eingestellt, als explizites Minimum, relatives Maximum zur nativen Zoomstufe

Die erzeugten Kacheln können in einem von mehreren Bildformaten gespeichert werden. MapTiler Engine umfasst die Optimierung der endgültigen Dateigröße und verwendet eine Reihe von Farben (Quantisierung), um die von den gerenderten Karten belegte Festplattengröße sowie die Zeit, die erforderlich ist, um die Karten an die Clients zu übertragen, sobald die Kacheln online sind, zu minimieren.

Formate mit Unterstützung für Transparenz sind:

-f png8a STANDARD. Paletten-RGBA-PNG-Bild. -f png oder -f png32 RGBA-PNG-Bild -f webp oder -f webp32 RGBA-WebP-Bild

Nicht transparente Formate sind:

-f jpg oder -f jpeg Progressives JPEG-Bild im YCbCr-Farbraum -f png8 Paletten-RGB-PNG-Bild -f png24 RGB-PNG-Bild -f webp24 RGB-WebP-Bild

Kacheltransparenz oder eine Hintergrundfarbe

Unabhängig davon, welche Eingabe-Datasets Sie angeben, verarbeitet MapTiler Engine sie nach der Umwandlung in die Kachelprofilprojektion als RGBA-Bilder. Die Transparenz kann als Alphakanal aus dem Bild selbst stammen (mit Unterstützung für teiltransparente Bereiche), sie kann aus einer ausgewählten Farbe abgeleitet werden (sog. NODATA-Farbe) oder kann nur durch die Transformation mit dem GDAL-Warping entstehen Algorithmus - für Bereiche ohne verfügbare Eingabedaten.

Wenn die Kachel vollständig transparent ist, wird sie niemals auf der Festplatte gespeichert, um Speicherplatz zu sparen.

Wenn alle Pixel vollständig sichtbar sind (z. B. opak, maximales Alpha ist 255), wird der Alphakanal verworfen und die Kachel als undurchsichtig / undurchsichtig markiert. Andernfalls wird die Kachel mit Alpha als teiltransparent gekennzeichnet.

Wenn teilweise transparente Kacheln in einem Kachelformat ohne Unterstützung für Transparenz gespeichert werden (z. B. JPEG mit der Option -f jpg angegeben), wird die Hintergrundfarbe angewendet. Die Standardhintergrundfarbe ist weiß (255,255,255), aber Sie können Ihre eigene mit der Option angeben:

-bg [r] [g] [b] Die Farbe des Hintergrunds, die Transparenz in den nicht transparenten Kachelformaten ersetzt.

-ignore_alpha Wenn Ihr Datensatz vier Kanäle enthält, der vierte Kanal jedoch kein Alphakanal ist, können Sie diesen Kanal mit dieser Option ignorieren.

Diese Option erzwingt die Speicherform, die zum Speichern der gerenderten Kacheln verwendet wird. Mögliche Optionen sind das Verzeichnis (dir), die MBTiles (mbtiles) und das GeoPackage (geopackage). Der Standardwert ist das Verzeichnis, aber falls der Parameter -o mit .mbtiles oder .gpkg endet, wird das Rendern in MBTiles bzw. GeoPackage ausgewählt. Diese Option gibt das Geschäftsformular explizit an.

Hinweis: Weitere Informationen zu diesem Thema finden Sie im Abschnitt Ausgabe im Kapitel Verwendung oben.

-sparse Überspringe den leeren Raum zwischen separaten Karten und erstelle keine leeren Kacheln. Diese Option kann die Rendergeschwindigkeit verbessern, wenn große Bereiche zwischen den Karten vorhanden sind. Dies ist die Standardoption für -store dir. -no_sparse Füllt den leeren Raum zwischen einzelnen Karten (sofern vorhanden) mit leeren Kacheln in der Hintergrundfarbe. Das Rendern dieser Option kann länger dauern und mehr Speicherplatz beanspruchen, wenn große Bereiche zwischen den Karten vorhanden sind, da diese erstellt werden müssen. Dies ist eine Standardoption für -store mbtiles und -store geopackage.

Das Einstellen der Sparse-Option in der GUI befindet sich im Dialogfeld Erweiterte Optionen.

MapTiler Engine ermöglicht das Rendern in ein hybrides Kachelformat, bei dem transparente Kacheln im transparenten Format (wie PNG) und Kacheln ohne jegliche Transparenz in einem anderen Format (wie JPEG) gespeichert werden. Bei Luftbild-Overlays oder anderen Datensätzen kann dies eine erhebliche Einsparung des Speicherplatzes bedeuten. Generierte Dateien sind ohne Erweiterungen. Dies geschieht, um den generierten OpenLayers-Viewer zu vereinfachen.

Es gibt einige Optionen, um Parameter für die Konvertierung in Bildformate anzugeben, die die Größe der erzeugten Kacheln durch die Verschlechterung der Ausgabe erheblich reduzieren können.

-jpg_quality [Wert] Die Qualität der JPEG-Komprimierung. Eine Zahl zwischen 10 und 95. Der Standardwert ist 85. -quant_quality [Wert] Die Qualität der Quantisierung. Eine Zahl zwischen 1 und 100. Der Standardwert ist 100. -quant_speed [Wert]

Höhere Geschwindigkeitsstufen deaktivieren teure Algorithmen und verringern die Quantisierungspräzision. Geschwindigkeit 1 bietet eine geringfügig bessere Qualität bei erheblichen CPU-Kosten. Geschwindigkeit 10 hat normalerweise eine um 5 % niedrigere Qualität, ist aber 8-mal schneller als Geschwindigkeit 8. Der Standardwert ist 10.

Wenn Sie Probleme mit der visuellen Qualität von generierten Kacheln mit beteiligter Quantisierung haben, versuchen Sie, -quant_speed auf niedrigere Werte zu setzen.

-webp_quality [Wert] Die Qualität der WebP-Komprimierung. Eine Zahl zwischen 1 und 100. Level 100 bedeutet verlustfreie Komprimierung. Der Standardwert ist 75. -webp_alpha_quality [Wert] Die Qualität der WebP-Alphakanalkomprimierung. Eine Zahl zwischen 1 und 100. Level 100 bedeutet verlustfreie Komprimierung. Der Standardwert ist 100.

Beispiel für das Rendern einer nahtlosen Karte aus den Dateien map1.tif und map2.tif in Kacheln mit einer internen Palette mit optimalen Farben mit höherem visuellem :

Durch Ersetzen von ABC am Ende dieser URL kann eine benutzerdefinierte Textphrase angegeben werden. Wir empfehlen, die Transparenz einer solchen Wasserzeichendatei mit Photoshop oder einem ähnlichen Werkzeug einzustellen, bevor Sie sie mit MapTiler Engine anwenden.

Beispiel für die Verwendung des Wasserzeichens:

Die Eingabedateien und zugehörige Optionen

Unterstützte Eingabedateiformate

MapTiler Engine kann eine Vielzahl von Raster-Geodatenformaten öffnen und verarbeiten, darunter: GeoTIFF, Erdas Imagine, ECW, MrSID, JPEG2000, SDTS, DTED, NITF, HDF4/5, BSB/KAP, OziExplorer usw.

Nahezu jedes moderne vorhandene Georeferenzierungs-Koordinatensystem (SRS - Raumbezugssystem, z.B. Geodätisches Datum + Kartenprojektion mit Parametern) wird unterstützt, wodurch die Software nahezu alle Geodaten verarbeiten kann, die Ihnen weltweit zur Verfügung stehen.

Falls die Eingabedateien bereits die Definition eines verwendeten Koordinatensystems (SRS) enthalten, kann die MapTiler Engine dieses laden und diese Informationen direkt für die Transformation der Karten verwenden. Falls diese Informationen in der mitgelieferten Datei fehlen oder falsch sind (der Maptiler platziert die Karten an einem falschen Ort, können Sie die Informationen über das räumliche Bezugssystem noch mit einer Option zuweisen:

-srs [Definition] Datensatzprojektion. Kann WKT, EPSG-Code in Form von 'epsg:XXXX', PROJ.4-String sein. Hüten Sie sich vor der Flucht. Um nach Identifikatoren oder Definitionen zu suchen, verwenden Sie räumlichreference.org oder EPSG.io.

Beispiel für die Zuweisung des britischen Raumbezugs OSGB zu einer GeoTIFF-Datei vor dem Rendern:

Transparenz aus einer Farbe

Beispiel für das Entfernen eines vollständig schwarzen Rahmens um eine Karte:

Die Georeferenzierung kann auch visuell über eine GUI oder ein Online-Tool erfolgen.

Für ein korrektes Rendern der Karten muss der Ort der gelieferten Eingabedateien im bekannten Koordinatensystem (SRS) verfügbar sein. MapTiler Engine lädt die Geolokalisierung automatisch aus den internen Headern der Eingabedateien (wie GeoTIFF) oder aus externen unterstützenden Dateien (wie ESRI WorldFile), wenn diese verfügbar sind.

Um benutzerdefinierte ausgewählte Georeferenzinformationen zu erzwingen oder aus externen Dateien zu laden, sind diese Optionen verfügbar:

-bbox [minx] [miny] [maxx] [maxy] Um die Grenzen einer Datei im angegebenen räumlichen Bezugssystem manuell festzulegen. -geotransform [posX] [scaleX] [rotX] [posY] [rotY] [scaleY] Um die affine Transformation direkt zuzuweisen. Diese Option kann auch mit ihrem Kurznamen -gt verwendet werden. -georeference [path_to_file] Eine Option zum Laden externer Georeferenzen aus World File, Tab File, OziExplorer Map File oder .prj Datei. -corners [east1] [north1] [east2] [north2] [east3] [north3] Zuweisen einer affinen Transformation mit 3 Eckpunkten: [0, 0], [width, 0], [width, height]. Diese Option kann mit dem WGS84-Koordinatensystem (EPSG:4326) als Argumente verwendet werden lng1 lat1 lng2 lat2 lng3 lat3, wodurch -srs EPSG:4326 für Dateien ohne angegebenes Koordinatensystem eingerichtet wird.

Die Geolokalisierung kann mit drei oder mehr Kontrollpunkten angegeben werden - GCP (Ground Control Point). Jede GCP wird durch die Position im Raster (pixel_x und pixel_y) definiert, die einer georeferenzierten Position (Ostwert [Höhe]) zugeordnet ist. Das letzte Element (Höhe) ist meistens Null.

-gcp [x_pixel] [y_pixel] [Ostwert] [Norden] [Höhe] Um einen Bodenkontrollpunkt zuzuweisen. Mindestens drei Kontrollpunkte sind erforderlich. Das letzte Element [Elevation] ist ein optionaler Wert. -order [Wert] Eine Option zum Festlegen der Polynomordnung für die Transformationsmethode der zugewiesenen GCPs. Unterstützte Ordnungen sind 0 (auto), 1 (affin) und 2 (Polynom zweiter Ordnung). Standardmäßig wird die automatische Bestellung basierend auf einer Anzahl von GCP-Punkten ausgewählt. -tps Erzwingt die Verwendung des Thin Plate Spline-Transformers basierend auf zugewiesenen GCP-Punkten. Diese Option kann nicht mit -order verwendet werden. Diese Option wird für mehr als 10 zugewiesene GCPs empfohlen.

Beispiel für die Verwendung der TPS-Transformation mit zugewiesenen GCPs:

Es gibt zwei Befehlszeilenoptionen für cutline: -cutline und -cutline_proj. Sie geben die Schnittlinie (einen Beschneidungspfad) für ein Eingabebild in Pixeln oder in projizierten Koordinaten an. Beide erwarten einen Dateinamen. Bei der Datei kann es sich entweder um einen CSV- oder einen OGR-Datensatz handeln (z. B. ESRI ShapeFile .shp).

Aus einer OGR-Datei lädt MapTiler Engine alle Polygone und Multi-Polygone aus allen Features des ersten Layers.

Das CSV-Format mit Pixelkoordinaten von Knoten eines Dreiecks, mehr Linien erzeugen ein Polygon:

-cutline [Pfad] Eine pixelbasierte Schnittlinie ist für jede Eingabedatei spezifisch - daher sollte der Parameter nach einem Dateinamen verwendet werden (siehe Abschnitt MapTiler Engine-Befehlsstruktur).

Anwendungsbeispiel einer solchen pixelbasierten Schnittlinie:

-cutline_proj [Pfad] Eine Schnittlinie mit Geokoordinaten kann für mehrere Dateien verwendet werden, wenn sie vor der ersten Eingabedatei angegeben wird.

Ein weiteres Beispiel für eine Schnittlinie mit Geokoordinaten, die in einer .shp-Datei gespeichert sind (kann eine begleitende .prj-Datei mit einem Koordinatensystem erfordern):

-cutline IGNORE Ignoriert die eingebettete Schnittlinie der Datei.

MapTiler Engine ermöglicht es Ihnen, mehrere Parameter anzugeben, um die Farben der Ausgabekarte zu verbessern. Der MapTiler Desktop Pro (GUI) kann diese Werte interaktiv schätzen, aber Sie können sie auch mit den folgenden Optionen manuell angeben.

-color_gamma [r] [g] [b] Gammakorrektur der einzelnen Kanäle festlegen, höhere Werte ergeben hellere Pixel (1 = unverändert). -color_contrast [Kontrast] [Bias] Höhere Werte von "Kontrast" führen zu größeren Unterschieden zwischen dunklen und hellen Bereichen (0 = unverändert).

Verwenden Sie "bias", wenn Sie mehr Details in den dunklen/hellen Bereichen behalten möchten (0.5 = gleich, <0.5 = Details in hellen Bereichen, >0.5 = Details in dunklen Bereichen)

-color_saturation [saturation] Sättigung der Karte ändern (1 = unverändert, 0 = Graustufen, >1 = bunt)

Mehrere Dateien in mehrere MBTiles oder Ordner

MapTiler Engine wurde entwickelt, um einen einzelnen zusammengeführten Layer aus mehreren Eingabedateien zu erstellen. Wenn Sie mehrere Dateien verarbeiten und für jedes einzelne Tileset produzieren müssen, wird eine Stapelverarbeitung empfohlen.

Dieser Befehl verarbeitet jede .tif-Datei in einem lokalen Verzeichnis und erstellt daraus .mbtiles im Ausgabeverzeichnis. Wenn .mbtiles aus dem Befehl entfernt wird, werden stattdessen separate Verzeichnisse erstellt. Der Befehl unterscheidet sich auf Betriebssystemen:

Bei Verwendung in einer Batchdatei muss %f %%f sein.

Falls Sie eine große Anzahl von Argumenten an MapTiler Engine übergeben müssen, z. B. viele Eingabedateien (die Gesamtmenge ist für MapTiler Engine oder MapTiler Desktop Pro unbegrenzt), können Sie eine Textdatei mit allen Argumenten vorbereiten und mit -- optfile myarguments.mtp. Eine Liste von Dateien kann einfach mit den Befehlen ls oder dir erstellt werden.

Alle Argumente, die normalerweise auf der Befehlszeile übergeben werden, können Teil der Textdatei --optfile sein. MapTiler Engine kann Argumente in der Befehlszeile mit Argumenten in der Textdatei kombinieren, wie zum Beispiel:

Die Erweiterung .mtp ist die Abkürzung für MapTiler-Projekt, das in der grafischen Benutzeroberfläche von MapTiler Desktop Pro verwendet werden kann, finden Sie auf unserer Tutorial-Seite.

Speicherort des temporären Verzeichnisses

Während des Renderns schreibt MapTiler Engine auch eine beträchtliche Datenmenge in ein temporäres Verzeichnis. Nicht so viel wie im Ausgabeverzeichnis, aber immerhin. Bitte stellen Sie sicher, dass dafür genügend Platz im Dateisystem vorhanden ist.

Standardmäßig wird das temporäre Verzeichnis am standardmäßigen temporären Speicherort des Systems erstellt (/tmp/ auf Unix-ähnlichen Systemen oder Pfad von der Umgebungsvariablen%TEMP% auf Windows-ähnlichen Systemen). Sie können dies mit der Option überschreiben:

-work_dir [Verzeichnis] ​​Der Ort, an dem temporäre Daten während des Renderns gespeichert werden. Standardmäßig das temporäre Systemverzeichnis.

Die visuelle Qualität der Ausgabekacheln wird auch durch die Resampling-Methode definiert. Die ausgewählte Methode wird für die Interpolation der Werte einzelner Pixel verwendet und beeinflusst die Schärfe vs. Glätte der erzeugten Karten.

-Resampling Near Nächster Nachbar Resampling. Bei Produktionsdaten selten sinnvoll. Kann für schnelle Tests verwendet werden, da es viel schneller ist als die anderen. -Resampling bilinear DEFAULT. Bilineares Resampling (2x2 Pixel Kernel). -Resampling der kubischen kubischen Faltungs-Approximation (4x4-Pixel-Kernel). -resampling cube_spline Kubische B-Spline-Approximation (4x4-Pixel-Kernel). -resampling Average Durchschnittliches Resampling, berechnet den Durchschnitt aller nicht von NODATA stammenden Pixel. (GDAL >= 1.10.0) -Resampling-Modus Modus Resampling, wählt den Wert aus, der von allen abgetasteten Punkten am häufigsten vorkommt. (GDAL >= 1.10.0)

Resampling-Übersichten, die von MapTiler Engine erstellt werden, verwenden standardmäßig die Durchschnittsmethode. Eine andere mögliche Methode ist Nächster Nachbar.

-overviews_resampling near Nächster Nachbar Übersichts-Resampling. Wird meistens für Höhenkarten oder ähnliches verwendet. -overviews_resampling Average Durchschnittliches Übersichts-Resampling, berechnet den Durchschnitt aller nicht-NODATA beitragenden Pixel.

Definieren eines benutzerdefinierten Kachelprofils für ein angegebenes Koordinatensystem

MapTiler Engine ermöglicht die Definition eines benutzerdefinierten Systems von Kacheln, die gerendert werden sollen. Ein solches Kachelschema oder in der Terminologie des OGC WMTS-Dienstes ist das TileMatrixSet für die MapTiler Engine mit Parametern definiert, die der Kachelprofiloption folgen müssen: -custom. Das ist globale Option, müssen VOR den Eingabedateinamen angegeben werden

-tiling_srs [definition] Das räumliche Bezugssystem, z.B. das Koordinatensystem, in dem die Kacheln erstellt werden. Folgt den aus -srs bekannten Definitionen. -tiling_bbox [minx] [miny] [maxx] [maxy] Der Bereich, der in Kacheln aufgeteilt werden soll, die in den tiling_srs-Koordinaten definiert sind. -tiling_resolution [zoomlevel] [resolution] Auflösung in Einheiten des räumlichen Bezugssystems mit Kacheln pro Pixel auf der angegebenen Zoomstufe. MapTiler Engine berechnet automatisch Werte für alle anderen Zoomstufen, die jeweils die halbe Auflösung der vorherigen haben. -tiling_resolution from_output Die Auflösung wird so berechnet, dass das gesamte Eingabe-Mapset in eine Kachel auf Zoomstufe 0 in Bezug auf bbox, srs und Kachelgröße passt. -tiling_resolution from_input Das Standardverhalten, wenn die Auflösung nicht angegeben ist. Die Auflösung wird so berechnet, dass die größte Eingabekarte in Bezug auf bbox, srs und Kachelgröße nicht überabgetastet wird. -tile_size [Breite] [Höhe] Die Pixelabmessungen einer Kachel. -tiling_centered Kachel (0, 0) befindet sich in der Mitte der Welt.

Kachelschema - Benennung von Kacheln

MapTiler Engine verwendet standardmäßig die Google XYZ-Namensgebung für Kacheln. Es unterstützt auch die OSGEO TMS-Namensgebung (mit umgedrehter Y-Achse), QuadKey-Namensgebung (bekannt von Microsoft Bing Maps) und ZYX-Namensgebung (bekannt von Microsoft Bing Maps). Diese Kachelschemata werden nur für Kachelspeicher im Verzeichnis (-store dir) unterstützt. Das ist globale Option, müssen VOR den Eingabedateinamen angegeben werden.

-xyz oder -zxy Google XYZ (oben links Ursprung) Benennung von Kacheln. Ordnerpfad als output_directory///.. -tms OSGEO TMS (unten-linker Ursprung), umgedrehte Y-Achse im Gegensatz zu Google XYZ. Dieses Kachelschema ist als Standard für MBTiles definiert. -quadkey Microsoft Bing QuadKey (oben links Ursprung). MapTiler Engine generiert Dateien mit dem Namen Quadkey, die in Verzeichnisse mit dem Namen Zoomlevel (output_directory//.). Details auf dieser Microsoft-Website. -zyx Microsoft Bing ZYX (oben links Ursprung) Benennung von Kacheln. Ordnerpfad als output_directory///..

Wählen Sie Bänder aus mehreren Kanälen für das RGBA-Farbmodell

MapTiler Engine ermöglicht die Auswahl von Bändern für das RGB(A)-Farbmodell aus mehreren Kartenkanälen. Das Beispiel sind Luftbilder wie Sentinel 2-Quellen, die mehrere Spektralbänder (Kanäle) mit unterschiedlicher Bandbreite enthalten, wie Nahinfrarot, Vegetation, Wolkenerkennung usw. Für das Rendern über die MapTiler Engine werden nur drei klassische Bänder verwendet - RGB, Rot-Grün- und Blau-Bänder, um Echtfarbenbilder zu erstellen. Das ist Dateioptionen, müssen NACH dem Namen der Eingabedatei angegeben werden.

-b [rot] -b [grün] -b [blau] -b [alpha] Wählen Sie ein Eingangsband für das Verarbeitungsfarbmodell RGBA. Der letzte Teil -b [alpha] ist optional, um den Alpha-Kanal auszuwählen. Die Bänder sind ab 1 nummeriert. Dies ermöglicht die Neuordnung der Quellbänder.

Beispiel für ein Sentinel 2-Bild, bei dem die RGB-Bänder 4., 3. bzw. 2. für Rot-Grün-Blau-Farben sind:

Beispiel für die Generierung eines Nur-Rot-Bildes (1. Band) mit Alphakanal (4. Band):

Langzeit-Rendering unterbrechen und fortsetzen

Der Langzeit-Rendering-Job kann durch den Endbenutzer oder einen Systemfehler (Stromausfall, kein freier Speicherplatz auf der Festplatte) unterbrochen werden. MapTiler Engine unterstützt nur den einfachen Wiederaufnahmemodus – der Renderprozess kann auf demselben Computer mit denselben Optionen fortgesetzt werden.

-keep_unfinished Um zu verhindern, dass die vorhandenen Ausgabekacheln und temporären Dateien gelöscht werden, die von der Anwendung erstellt wurden. -resume Zum Fortsetzen des unvollendeten oder unterbrochenen Rendering-Prozesses. Erfordert dieselben Argumente auf demselben Computer. Es überspringt die Codierung der vorhandenen Kacheln. Diese Option kann auch zum Starten des Renderprozesses verwendet werden, sie behält automatisch unfertige Kacheln bei.

Erweiterte Warping-Argumente

Die Parameter der erweiterten Warping-Algorithmen können mit der Option angegeben werden:

-wo "NAME=VALUE" Die Warp-Optionen. Siehe das papszWarpOptions-Feld bei GDAL.

Beobachten Sie den Fortschritt in einem Frontend

MapTiler Engine kann Fortschritte erzeugen, die in einer Frontend-Anwendung leicht geparst werden können. Verwenden Sie einfach das erste Argument -Fortschritt und die Anwendung gibt den Fortschritt auf der Standardausgabe im TSV-Format (Tabulator Separated Values) aus: Stufe TAB Prozentsatz TAB Iteration TAB Gesamt

Verwendung in einem Computercluster

MapTiler Engine kann auf einem MPI-Cluster ausgeführt werden, wenn eine clusterspezifische Binärdatei angefordert wurde. Wenn Sie die MPI-Version haben, wird auch ein Shell-Wrapper geliefert, um sie auf einem Cluster auszuführen.

Eine Version von MapTiler Engine, die den Map Reduce-Ansatz und Hadoop verwendet, befindet sich in der Entwicklung, dies wird das ältere MPI ersetzen.

Weitere Details finden Sie auf der Seite MapTiler-Cluster.

Diese Funktion ist nur in den Editionen von MapTiler Desktop PRO und MapTiler Engine mit einer aktivierten Lizenz verfügbar, nicht in der MapTiler Desktop PRO Demo. Das Zusammenführen von MBTiles in der GUI wird in diesem Tutorial-Artikel beschrieben.

Das Dienstprogramm ermöglicht es, ein zuvor gerendertes Dataset zu aktualisieren und einen kleinen vorhandenen Bereich durch andere neu gerenderte Rasterdaten zu ersetzen. Der typische Anwendungsfall ist die Korrektur eines kleinen geografischen Gebiets in einem großen Seamed-Dataset, das zuvor von MapTiler Engine aus vielen Eingabedateien gerendert wurde.

Das Dienstprogramm erweitert auch den Begrenzungsrahmen der Kacheln - es ist verwendbar, um zwei sich nur teilweise überlappende Karten zu einer größeren Karte zusammenzuführen, die eine größere Ausdehnung abdeckt.

  1. Rendern Sie einen großen Datensatz mit MapTiler Engine - aus mehreren Eingabedateien und erzeugen Sie große MBTiles (mit JPEG- oder PNG-Kacheln intern): large.mbtiles
  2. Wenn Sie eine der zuvor gerenderten Eingabedateien im vorhandenen Datensatz aktualisieren möchten, rendern Sie einfach diese Datei in MBTiles - mit dem PNG32-Format und den Zoomstufen, auf denen sie im großen Datensatz angezeigt werden soll. Speichern Sie die neuen kleinen MBTiles mit nur einer Datei in patch.mbtiles

Vorhandene Kacheln, die sowohl in large.mbtiles als auch in patch.mbtiles verfügbar sind, werden zusammengeführt. Bei gleichen Zoomstufen ersetzt patch.mbtiles die originalen large.mbtiles - also werden die large.mbtiles direkt aktualisiert.

-P [n] Setzt Limit für die definierte Anzahl von Kernen. -no_sparse Füllt den leeren Raum zwischen separaten Karten (sofern vorhanden) mit leeren Kacheln in einer Hintergrundfarbe. Das Rendern dieser Option kann länger dauern, wenn große Bereiche zwischen den Karten vorhanden sind, da diese erstellt werden müssen. Falls sich die Karten überschneiden, ist keine zusätzliche Aktion erforderlich. Das Standardverhalten ohne diese Option füllt den leeren Raum zwischen separaten Maps nicht aus. -reencode Diese Option ist nützlich, wenn die beiden zusammengeführten Karten ein unterschiedliches Format haben (z. B. jpeg und png). Standardmäßig ist das Ergebnis ein Hybridformat (Kombination aus beiden). Wenn die Reencode-Option verwendet wird, wird die ausgewählte Datei in das tatsächliche Format kodiert (was den Prozess verlangsamen kann).

Das Anhängen dieser Datei ist sehr wichtig, wenn Sie einen Fehler melden, da diese Informationen uns helfen, das Problem zu identifizieren und schnell eine Lösung zu finden

Das Senden eines Fehlerberichts von der MapTiler Desktop-GUI-Anwendung wird hier beschrieben.

MapTiler Engine v10.0 und höhere Versionen unterstützen das Rendern von Vektoreingaben in das MVT-Format (Mapbox Vector Tile). Die Unterstützung des Vektorrenderings erfordert eine zugrunde liegende GDAL-Bibliothek Version 2.3.0 oder höher, die auf die native Linux-Distribution beschränkt ist. Die Verwendung eines Docker-Images mit MapTiler Engine wird für das Vektorrendering unter Linux empfohlen. MapTiler Desktop bietet eine grafische Benutzeroberfläche für Vektorebenen mit einem praktischen Beispiel-Anleitungsartikel.

Die Vektoreingabe besteht aus einer oder mehreren Ebenen, die im MVT-Format in die jeweilige Zielebene gerendert werden. Jedes Feature des Quell-Layers enthält Schlüssel=Wert Attribute, die verarbeitet oder in die endgültigen Attribute des Ziel-Layers umbenannt werden könnten. Die folgenden Argumente werden für die Vektoreingabe unterstützt: -srs, -Zoomen, und -bbox, wie oben beschrieben. Andere Argumente werden beim Vektorrendering noch nicht berücksichtigt.

-layer [src_name] Wählen Sie die Quellebene zur Weiterverarbeitung der Vektoreingabe durch den Namen. Dieses Argument ist für die folgenden Argumente erforderlich. -target [name] Auswählen (oder neu erstellen) Zielebene in den letzten Kacheln des MVT-Formats. Dies ist der Name der Ebene, die gestylt werden kann. Dieses Argument kann mehrmals wiederholt werden, um Features in einen separaten Ziel-Layer mit einer anderen Liste von Feldern zu verarbeiten. -field [output_name] [src_name] Setzt das Attributfeld mit dem Namen src_name von dem source_layer im Finale präsentiert werden Zielebene als Attributschlüssel Ausgabename. Der Attributwert für jedes Feature von Quellebene kopiert wird. Dieses Argument kann mehrmals wiederholt werden, um mehr Attribute zu kopieren.

Nehmen wir an, wir haben einen Vektoreingang mit zwei Quellebenen: Linien und Polygone. Die Quellschicht Linien besteht aus den Straßen mit diesen Attributschlüsseln Name, Kennung und Main. Die Quellschicht Polygone enthält Geometrie einiger Gebäude mit Attributschlüsseln Ident, Anzahl und Name. Wir wollen zwei schaffen Zielebenen mit umbenannten Attributen.

Im obigen Beispiel werden zwei neue Ausgabeebenen erstellt: Straßen mit Attributschlüsseln Ich würde, Name, und is_main und Gebäude Ebene mit Attributschlüsseln Ich würde, Name, und Nummer.


Wenn Sie nur die TIFF-Dateien zusammenfügen möchten, finden Sie hier ein kostenloses und tragbares Tool, das genau das tut:

FaxTool ist ein einfaches Dienstprogramm, mit dem Sie TIFF- und PDF-Dateien teilen und zusammenfügen können. Ziehen Sie einfach Ihre Dateien auf die Benutzeroberfläche, um sie zu teilen oder zu verbinden.

Vor einigen Wochen wurde festgestellt, dass Sharepoint Designer 2007 über den Microsoft Document Image Viewer als optionales Element verfügt.

Es ist ein vollständiger TIFF-Editor/Viewer und erforderte in unseren Tests keine MS Office-Basisinstallation.

Die Zusammenführung bläst die Dateien nicht auf, wie es bei FaxTool erwähnt wurde. Ich verwende die MODI-API für viele automatisierte TIFF-Manipulationen über .NET. Das Zusammenführen von TIFF über die API ist eigentlich ziemlich einfach. Nicht sicher, ob Sie automatisiert oder manuell wollten. Das sollte beiden passen.


Experimentieren mit hydrologischer Analyse mit TauDEM

In den letzten Jahren habe ich mit der Entwicklung geordneter Flussnetze für verschiedene Projekte herumgespielt. Ich bin kein Experte für Hydrologie, aber für kartographische Zwecke kann ich näher kommen. Ich bin jedoch ein Experte darin, diejenigen um Hilfe zu bitten, die es am besten wissen, und ich verlasse mich auf viele sehr kluge Leute, die mich auf meinem Weg begleiten.

Vor kurzem habe ich beschlossen, eine Visualisierung von geordneten Flüssen für Neuseeland zusammenzustellen. Ich bin auf einen sehr schönen Datensatz gestoßen, der vom Umweltministerium über die Koordinates-Website angeboten wird und dachte, ich würde ihn gerne nutzen.

Das rivers vis-Projekt hat mich gefragt, ob ich diesen Basisdatensatz selbst mit einigen der kürzlich veröffentlichten Höhendatensätze über den LINZ Data Service erstellen könnte. Die kurze Antwort auf meine Frage ist „sorta“. Open Source zu tun ist kein Problem, aber der Aufbau eines genau geordneten Flussmittelliniennetzwerks ist eine andere Geschichte. Dies ist eine Aufgabe, die ich derzeit nicht als Soloprojekt übernehmen kann, aber ich könnte ein wenig experimentieren. Im Folgenden werde ich einige Methoden und Dinge anbieten, die ich auf dem Weg gelernt habe.

Werkzeuge und Daten

Die von mir getestete Methode verwendet TauDEM und ein 1m DEM-Raster, auf das vom LINZ Data Service zugegriffen wird. Ich habe das DEM auf Auflösungen von 2 m und 5 m heruntergetastet und kleine Bereiche zum Testen verwendet. Das Finden und Open-Source-Tool war einfach. Ich habe ein paar verfügbare Methoden durchsortiert und bin schließlich bei „Terrain Analysis Using Digital Elevation Models“ (TauDEM) gelandet. Es gibt zusätzliche Methoden durch GRASS und SAGA GIS. Ich habe mich für TauDEM entschieden, weil ich es noch nie benutzt habe.

Methode getestet

Meines Wissens gibt es kein Open-Source-Tool, bei dem eine Person ein DEM eingeben und einen vernetzten Flussmittellinienvektor auf der anderen Seite herausholen kann. Es erfordert eine Reihe von Schritten, um Ihr Ziel zu erreichen.

Der grundlegende Ablauf zur Verarbeitung des DEM ist:

  1. Spülbecken füllen
  2. Fließrichtungen bestimmen
  3. Wasserscheiden bestimmen
  4. Flussakkumulation ermitteln
  5. Stream-Klassifizierung
  6. In Vektor exportieren

TauDEM erfordert einige zusätzliche Schritte, um den Vorgang abzuschließen, aber diese Schritte werden in der Dokumentation des Tools erklärt. Es ging mehr darum, alle meine Variablen an den richtigen Stellen zu halten und sie zur richtigen Zeit zu verwenden. Ich empfehle die Verwendung der Variablennamen, die TauDEM bereitstellt.

Klicken Sie auf den Pfeil links, um das vollständige BASH-Skript unten anzuzeigen:

Das Skript ist eine grobe Skizze, liefert aber Ergebnisse.

Herausforderungen im Prozess

Eine große Herausforderung für dieses Projekt war die Größe des Eingabe-DEM und der verfügbare Arbeitsspeicher meines Computers. Ich arbeite hauptsächlich am Laptop. Es ist eine gute Maschine, aber keine Chance für einen richtigen Server mit etwas geräumigem RAM. Mein Laptop hatte Probleme mit den großen hochauflösenden DEMs, daher musste ich die Bilder herunterrechnen und einen kleineren Testbereich auswählen, damit es funktioniert.

Beschneiden Sie das Tiff mit gdal_translate -projwin und senken Sie das Sample mit -tr

Die zweite Herausforderung ergab sich, weil ich eine Begrenzungsbox verwendet habe, um meine Testregionen zu beschneiden. Ich empfehle, dies nicht zu tun und stattdessen Ihre Regionen mit einer Wasserscheidengrenze zu beschneiden. Mit quadratischen Formen für Ihre Testbereiche erhalten Sie sehr ungenaue und wenig hilfreiche Ergebnisse. Beispielsweise werden Hauptkanäle in Ihrem DEM an den Rändern Ihres Rasters abgeschnitten. Sie werden keine genauen Ergebnisse erhalten.

Das Beschneiden eines Rasters mithilfe eines Shapefiles, z. B. einer Wasserscheidengrenze, kann mit gdalwarp erreicht werden.

Ich habe meinen Prozess durchgeführt und die Ergebnisse mit Luftbildern und einer Schummerung, die ich aus dem DEM entwickelt habe, einer QC-Prüfung unterzogen. Der erste Lauf lieferte mir gute Ergebnisse, um zu wissen, dass ich noch viel zu tun habe, aber ich habe es geschafft, einen Prozess zu entwickeln, mit dem ich zufrieden war. Das Tool hat gute Arbeit geleistet, aber die Genauigkeit des DEM war etwas anspruchsvoller. Es ist ein Anfang. Ich habe trotz meiner falschen Verwendung eines quadratischen DEM eine große Anzahl von Flusskanälen erfasst, viel darüber gelernt, wie sich die DEM-Auflösung auf die Ausgabe auswirkt, und Kenntnisse darüber erlangt, wie man problematische Artefakte erkennt.

Bild 1: Flussaufnahme in einem gut definierten Kanal.

Aus diesem Experiment ergeben sich einige Ideen, die ich gerne näher untersuchen möchte:

1. Genauigkeit der DEM. Das spezielle DEM, mit dem ich zusammengearbeitet habe, hatte eine Reihe von „Dämmen“ in den Flüssen. Insbesondere Brücken, Durchlässe, Vegetationsartefakte und andere allgemeine Fehler, die dazu führten, dass das Wasser in interessante Richtungen floss. Wenn ich mit einem solchen Datensatz arbeite, bin ich gespannt, wie diese Artefakte verwaltet werden.

Bild 1: Flussumleitung an der Straße.

Bild 1: Flussumleitung an einem Düker oder einer Brücke.

2. Wie man Grenzen überschreitet. Diese Analyse kann nach Wassereinzugsgebieten aufgeschlüsselt werden, aber für genaue Ergebnisse ist es erforderlich, die Abflüsse dieser Wassereinzugsgebiete mit den nächsten zu verknüpfen.

Bild 1: Strömung am Rand nicht erfasst.

3. Da DEMs mit besserer Auflösung veröffentlicht werden, besteht ein Bedarf an erhöhter Rechenleistung. Der Prozess benötigt viel RAM. Was ist der beste Rechenaufbau, um den größten Bereich zu erfassen?

4. Habe ich das richtig gemacht? Ich mache diese Aufgabe etwa alle zwei Jahre und normalerweise an Wochenenden, wenn die Brandung flach und der Garten gejätet ist, also bin ich kein Experte. Es ist noch viel zu recherchieren, um festzustellen, ob ich die Tools nach bestem Wissen und Gewissen verwende.


4.2. Räumliche Abfragen

Das Daseinsberechtigung von räumlichen Datenbanken besteht darin, Abfragen innerhalb der Datenbank durchzuführen, die normalerweise Desktop-GIS-Funktionalität erfordern würden. Die effektive Verwendung von PostGIS erfordert die Kenntnis der verfügbaren räumlichen Funktionen, deren Verwendung in Abfragen und die Sicherstellung, dass geeignete Indizes vorhanden sind, um eine gute Leistung zu erzielen.

4.2.1. Bestimmung von räumlichen Beziehungen

Räumliche Beziehungen geben an, wie zwei Geometrien miteinander interagieren. Sie sind eine grundlegende Fähigkeit zum Abfragen von Geometrie.

4.2.1.1. Dimensionsverlängertes Modell mit 9 Schnittpunkten

Laut der OpenGIS Simple Features Implementation Specification für SQL besteht der grundlegende Ansatz zum Vergleichen zweier Geometrien darin, paarweise Tests der Schnittpunkte zwischen den Innenräumen, Grenzen und Außenflächen der beiden Geometrien durchzuführen und die Beziehung zwischen den beiden Geometrien basierend zu klassifizieren auf die Einträge in der resultierenden 'Schnittpunkt'-Matrix."

In der Theorie der Punktmengentopologie werden die Punkte einer in einen zweidimensionalen Raum eingebetteten Geometrie in drei Mengen eingeteilt:

Die Grenze einer Geometrie ist die Menge der Geometrien der nächstniedrigeren Dimension. Für POINT s, die eine Dimension von 0 haben, ist die Grenze die leere Menge. Die Grenze eines LINESTRING sind die beiden Endpunkte.Bei POLYGON s ist die Grenze die Linienführung der äußeren und inneren Ringe.

Das Innere einer Geometrie sind die Punkte einer Geometrie, die nicht in der Begrenzung liegen. Für POINT s ist das Innere der Punkt selbst. Das Innere eines LINESTRING ist die Menge der Punkte zwischen den Endpunkten. Bei POLYGON s ist das Innere die Flächenfläche innerhalb des Polygons.

Das Äußere einer Geometrie ist der Rest des Raumes, in den die Geometrie eingebettet ist, also alle Punkte, die nicht im Inneren oder auf der Grenze der Geometrie liegen. Es ist eine 2-dimensionale nicht geschlossene Oberfläche.

Das Dimensionally Extended 9-Intersection Model (DE-9IM) beschreibt die räumliche Beziehung zwischen zwei Geometrien, indem die Dimensionen der 9 Schnittpunkte zwischen den obigen Sätzen für jede Geometrie angegeben werden. Die Schnittmaße lassen sich formal in einem 3x3 represented darstellen Schnittpunktmatrix .

Für eine Geometrie G das Innere , Grenze , und Außen werden mit der Notation . bezeichnet Ich G) , B(g) , und Z.B) . Ebenfalls, dimme(n) bezeichnet die Dimension einer Menge so mit der Domäne von <0,1,2,F>:

Mit dieser Notation wird die Schnittmatrix für zwei Geometrien ein und b ist:

Innere Grenze Außen
Innere dim( I(a) ∩ I(b) ) dim( I(a) ∩ B(b) ) dim( I(a) ∩ E(b) )
Grenze dim( B(a) ∩ I(b) ) dim( B(a) ∩ B(b) ) dim( B(a) ∩ E(b) )
Außen dim( E(a) ∩ I(b) ) dim( E(a) ∩ B(b) ) dim( E(a) ∩ E(b) )

Optisch sieht dies für zwei überlappende polygonale Geometrien wie folgt aus:

dim( I(a) ∩ I(b) ) = 2

dim( I(a) ∩ B(b) = 1

dim( I(a) ∩ E(b) ) = 2

dim( B(a) ∩ I(b) ) = 1

dim( B(a) ∩ B(b) ) = 0

dim( B(a) ∩ E(b) ) = 1

dim( E(a) ∩ I(b) ) = 2

dim( E(a) ∩ B(b) ) = 1

dim( E(a) ∩ E(b) = 2

Von links nach rechts und von oben nach unten gelesen, wird die Schnittpunktmatrix als die Textzeichenfolge ' 212101212 '.

Weitere Informationen finden Sie unter:

4.2.1.2. Benannte räumliche Beziehungen

Um die Bestimmung allgemeiner räumlicher Beziehungen zu erleichtern, definiert das OGC SFS eine Reihe von benannte räumliche Beziehungsprädikate . PostGIS stellt diese als die Funktionen ST_Contains, ST_Crosses, ST_Disjoint, ST_Equals, ST_Intersects, ST_Overlaps, ST_Touches, ST_Within zur Verfügung. Es definiert auch die nicht standardmäßigen Beziehungsprädikate ST_Covers, ST_CoveredBy und ST_ContainsProperly.

Räumliche Prädikate werden normalerweise als Bedingungen in SQL-WHERE- oder JOIN-Klauseln verwendet. Die benannten räumlichen Prädikate verwenden automatisch einen räumlichen Index, falls einer verfügbar ist, sodass Sie den Begrenzungsrahmenoperator && nicht auch verwenden müssen. Beispielsweise:

Weitere Details und Abbildungen finden Sie im PostGIS-Workshop.

4.2.1.3. Allgemeine räumliche Beziehungen

In einigen Fällen reichen die genannten räumlichen Beziehungen nicht aus, um eine gewünschte räumliche Filterbedingung bereitzustellen.

Betrachten Sie beispielsweise ein lineares Dataset, das ein Straßennetz darstellt. Es kann erforderlich sein, alle sich kreuzenden Straßensegmente zu identifizieren, nicht an einem Punkt, sondern in einer Linie (vielleicht um eine Geschäftsregel zu validieren). In diesem Fall stellt ST_Crosses nicht den erforderlichen räumlichen Filter bereit, da es für lineare Features nur dann true zurückgibt, wenn sie sich an einem Punkt kreuzen.

Eine zweistufige Lösung wäre, zuerst die tatsächliche Kreuzung (ST_Intersection) von Paaren von Straßenlinien zu berechnen, die sich räumlich schneiden (ST_Intersects), und dann zu prüfen, ob der ST_GeometryType der Kreuzung 'LINESTRING' ist (korrekte Behandlung von Fällen, die GEOMETRYCOLLECTION s von [ MULTI]POINT s, [MULTI]LINESTRING s usw.).

Natürlich ist eine einfachere und schnellere Lösung wünschenswert.

Ein zweites Beispiel ist das Auffinden von Kais, die die Grenze eines Sees auf einer Linie schneiden und wo ein Ende des Kais am Ufer liegt. Mit anderen Worten, schneidet ein Kai innerhalb eines Sees, aber nicht vollständig von diesem eingeschlossen, die Grenze eines Sees auf einer Linie, und wo genau einer der Endpunkte des Kais innerhalb oder auf der Grenze des Sees liegt. Es ist möglich, eine Kombination von räumlichen Prädikaten zu verwenden, um die erforderlichen Merkmale zu finden:

. aber das ist natürlich ziemlich kompliziert.

Diese Anforderungen können durch Berechnen der vollständigen DE-9IM-Kreuzungsmatrix erfüllt werden. PostGIS bietet dafür die ST_Relate-Funktion:

Um eine bestimmte räumliche Beziehung zu testen, an Kreuzungsmatrixmuster wird eingesetzt. Dies ist die Matrixdarstellung, ergänzt um die zusätzlichen Symbole :

T => Schnittpunktdimension ist nicht leer, d.h. ist in

Mithilfe von Schnittmatrixmustern können spezifische räumliche Beziehungen prägnanter bewertet werden. Die Funktionen ST_Relate und ST_RelateMatch können zum Testen von Schnittpunktmatrixmustern verwendet werden. Für das erste obige Beispiel lautet das Schnittmatrixmuster, das zwei Linien angibt, die sich in einer Linie schneiden, ' 1*1***1** ':

Für das zweite Beispiel ist das Schnittmatrixmuster, das eine Linie teilweise innerhalb und teilweise außerhalb eines Polygons angibt, ' 102101FF2 ':

4.2.2. Nutzen von Indizes

Beim Erstellen von Abfragen mit räumlichen Bedingungen ist es wichtig sicherzustellen, dass ein räumlicher Index verwendet wird, falls vorhanden (siehe Abschnitt 4.1.7, „Erstellen von räumlichen Indizes“). Dazu muss in der WHERE- oder ON-Klausel ein indexsensitiver räumlicher Operator oder eine Funktion verwendet werden. Zu den räumlichen Operatoren gehören die Bounding-Box-basierten Operatoren (von denen am häufigsten && verwendet wird) und die Abstandsoperatoren, die in Nächster-Nachbar-Abfragen verwendet werden (die am häufigsten verwendeten sind <->). Indexfähige Funktionen umfassen die meisten der genannten räumlichen Prädikate (wie ST_Intersects) und die meisten Distanzprädikate (wie ST_DWithin).

Funktionen wie ST_Distance verwenden keine Indizes, um ihren Betrieb zu optimieren. Die folgende Abfrage wäre beispielsweise für eine große Tabelle ziemlich langsam:

Diese Abfrage wählt alle Geometrien in geom_table aus, die sich innerhalb von 100 Einheiten des Punktes (100000, 200000) befinden. Es wird langsam sein, weil es den Abstand zwischen jedem Punkt in der Tabelle und dem angegebenen Punkt berechnet, dh. eine ST_Distance()-Berechnung wird berechnet für jeder Zeile in der Tabelle.

Wir können die Anzahl der verarbeiteten Zeilen reduzieren, indem wir die indexsensitive Funktion ST_DWithin verwenden:

Diese Abfrage wählt dieselben Geometrien aus, jedoch auf effizientere Weise. Dies wird durch ST_DWithin() aktiviert, indem der &&-Operator intern für einen erweiterten Begrenzungsrahmen der Abfragegeometrie verwendet wird. Wenn für the_geom ein räumlicher Index vorhanden ist, erkennt der Abfrageplaner, dass er den Index verwenden kann, um die Anzahl der gescannten Zeilen zu reduzieren, bevor die Entfernung berechnet wird. Mit dem räumlichen Index können nur Datensätze mit Geometrien abgerufen werden, deren Bounding Boxes die erweiterte Ausdehnung überlappen und somit die hence Macht im erforderlichen Abstand sein. Die tatsächliche Entfernung wird dann berechnet, um zu bestätigen, ob der Datensatz in die Ergebnismenge aufgenommen werden soll.

4.2.3. Beispiele für räumliches SQL

In den Beispielen in diesem Abschnitt werden zwei Tabellen verwendet, eine Tabelle mit linearen Straßen und eine Tabelle mit polygonalen Gemeindegrenzen. Die Tabellendefinitionen für die Tabelle bc_roads sind:

Die Tabellendefinition für die Tabelle bc_municipality lautet:

Wie lang ist die Gesamtlänge aller Straßen in Kilometern?

Sie können diese Frage mit einem sehr einfachen Stück SQL beantworten:

Wie groß ist die Stadt von Prinz George in Hektar?

Diese Abfrage kombiniert eine Attributbedingung (auf den Gemeindenamen) mit einer räumlichen Berechnung (der Fläche):

Was ist die flächenmäßig größte Gemeinde der Provinz?

Diese Abfrage bringt eine räumliche Messung in die Abfragebedingung. Es gibt mehrere Möglichkeiten, dieses Problem anzugehen, aber die effizienteste ist unten:

Beachten Sie, dass wir zur Beantwortung dieser Abfrage die Fläche jedes Polygons berechnen müssen. Wenn wir dies häufig tun würden, wäre es sinnvoll, der Tabelle eine Bereichsspalte hinzuzufügen, die wir separat für die Leistung indizieren könnten. Indem wir die Ergebnisse in absteigender Richtung anordnen und sie mit dem PostgreSQL-Befehl "LIMIT" verwenden, können wir leicht den größten Wert auswählen, ohne eine Aggregatfunktion wie max() zu verwenden.

Wie lang sind die Straßen in jeder Gemeinde vollständig?

Dies ist ein Beispiel für einen "räumlichen Join", da wir Daten aus zwei Tabellen zusammenführen (einen Join durchführen), aber eine räumliche Interaktionsbedingung ("enthalten") als Join-Bedingung verwenden und nicht den üblichen relationalen Ansatz des Joins auf a gemeinsamer Schlüssel:

Diese Abfrage dauert eine Weile, da jede Straße in der Tabelle zum Endergebnis zusammengefasst wird (ca. 250.000 Straßen für unsere spezielle Beispieltabelle). Bei kleineren Überlagerungen (mehrere tausend Datensätze auf mehreren hundert) kann die Reaktion sehr schnell sein.

Erstellen Sie eine neue Tabelle mit allen Straßen in der Stadt von Prince George.

Dies ist ein Beispiel für ein "Overlay", das zwei Tabellen aufnimmt und eine neue Tabelle ausgibt, die aus räumlich abgeschnittenen oder geschnittenen Ergebnissen besteht. Im Gegensatz zum oben gezeigten "räumlichen Join" erstellt diese Abfrage tatsächlich neue Geometrien. Ein Overlay ist wie eine turbogeladene räumliche Verknüpfung und für genauere Analysearbeiten nützlich:


GDAL Merge Py auf Ubuntu viele TIF-Kacheln zu einem - Geographische Informationssysteme

Dieses Kapitel enthält konzeptionelle und Verwendungsinformationen zum Laden, Speichern, Zugreifen auf und Arbeiten mit räumlichen Daten in einer Big-Data-Umgebung.


    Die Funktionen von Oracle Big Data Spatial and Graph ermöglichen die schnelle und effiziente Speicherung, den Zugriff und die Analyse räumlicher Daten für standortbasierte Entscheidungen.
    Oracle Big Data Spatial and Graph unterstützt die Speicherung und Verarbeitung von räumlichen Vektor- und Rasterdaten.
    Das Oracle Spatial Hadoop Image Processing Framework ermöglicht die Erstellung neuer kombinierter Images, die aus einer Reihe von parallelen Verarbeitungsphasen resultieren.
    Der erste Schritt zum Verarbeiten von Bildern mit dem Oracle Spatial and Graph Hadoop Image Processing Framework besteht darin, die Bilder tatsächlich in HDFS zu speichern, gefolgt von der Trennung der Bilder in intelligente Kacheln.
    Nachdem die Bilder in HDFS geladen wurden, können sie mit dem Oracle Spatial Hadoop Image Processing Framework parallel verarbeitet werden.
    Das Framework bietet eine Raster-Verarbeitungs-API, mit der Sie Raster laden und verarbeiten können, ohne XML zu erstellen, sondern stattdessen eine Java-Anwendung zu verwenden. Die Anwendung kann innerhalb des Clusters oder auf einem Remote-Knoten ausgeführt werden.
    Wenn Sie benutzerdefinierte Verarbeitungsklassen erstellen. Sie können das Oracle Spatial Hadoop Raster Simulator Framework verwenden, um Folgendes zu tun, indem Sie "so tun", als würden Sie sie in das Oracle Raster Processing Framework einbinden.
    Oracle Big Data Spatial Raster Processing für Apache Spark ist eine API für die Spatial-Raster-Verarbeitung für Java.
    Oracle Big Data Spatial Raster Processing wird im Big Data Cloud Service (BDCS) durch die Verwendung der Oracle Object Storage-Plattform unterstützt.
    Oracle Big Data Spatial Vector Analysis ist eine Spatial Vector Analysis-API, die als Hadoop-Job ausgeführt wird und MapReduce-Komponenten für die räumliche Verarbeitung von in HDFS gespeicherten Daten bereitstellt.
    Oracle Big Data Spatial Vector Analysis for Apache Spark ist eine API für die räumliche Vektoranalyse für Java und Scala, die räumlich aktivierte RDDs (Resilient Distributed Datasets) bereitstellt, die räumliche Transformationen und Aktionen, räumliche Partitionierung und Indizierung unterstützen.
    Oracle Big Data Spatial Vector Hive Analysis bietet räumliche Funktionen zum Analysieren der Daten mit Hive.
    Sie können die Oracle Big Data SpatialViewer-Webanwendung (SpatialViewer) verwenden, um eine Vielzahl von Aufgaben auszuführen.

2.1 Informationen zur räumlichen und grafischen Unterstützung von Big Data für räumliche Daten

Die Funktionen von Oracle Big Data Spatial and Graph ermöglichen die schnelle und effiziente Speicherung, den Zugriff und die Analyse räumlicher Daten für standortbasierte Entscheidungen.

Geodaten stellen die Standortmerkmale realer oder konzeptioneller Objekte in Bezug auf den realen oder konzeptionellen Raum in einem geografischen Informationssystem (GIS) oder einer anderen standortbasierten Anwendung dar.

Die räumlichen Merkmale werden verwendet, um die standortspezifischen zwei- und dreidimensionalen geografischen Bilder mit Geotags zu versehen, anzureichern, zu visualisieren, zu transformieren, zu laden und zu verarbeiten und geometrische Formen für GIS-Funktionen zu manipulieren.

2.1.1 Was ist Big Data Spatial and Graph auf Apache Hadoop?

Oracle Big Data Spatial and Graph auf Apache Hadoop ist ein Framework, das die MapReduce-Programme und Analysefunktionen in einem Hadoop-Cluster verwendet, um räumliche Daten zu speichern, darauf zuzugreifen und sie zu analysieren. Die räumlichen Features stellen ein Schema und Funktionen bereit, die das Speichern, Abrufen, Aktualisieren und Abfragen von Sammlungen räumlicher Daten erleichtern. Big Data Spatial and Graph auf Hadoop unterstützt das Speichern und Verarbeiten von räumlichen Bildern, die geometrische Formen, Raster- oder Vektorbilder sein können und in einem der mehreren hundert unterstützten Formate gespeichert werden.

Oracle Spatial and Graph Developer's Guide für eine Einführung in räumliche Konzepte, Daten und Operationen

2.1.2 Vorteile von Oracle Big Data Spatial und Graph

Die Vorteile der Verwendung von Oracle Big Data Spatial und Graph umfassen die folgenden:

Im Gegensatz zu einigen der GIS-zentrierten räumlichen Verarbeitungssysteme und -engines kann Oracle Big Data Spatial and Graph sowohl strukturierte als auch unstrukturierte räumliche Informationen verarbeiten.

Kunden sind nicht gezwungen oder eingeschränkt, nur eine bestimmte Form von Daten in ihrer Umgebung zu speichern. Sie können ihre Daten sowohl als räumliche als auch als nicht räumliche Geschäftsdaten speichern lassen und dennoch Oracle Big Data für ihre räumliche Verarbeitung verwenden.

Dies ist ein Framework, und daher können Kunden die verfügbaren APIs verwenden, um ihre Anwendungen oder Vorgänge kundenspezifisch zu erstellen.

Oracle Big Data Spatial kann sowohl Vektor- als auch Raster-Informationen und Bilder verarbeiten.

2.1.3 Oracle Big Data Spatial-Features und -Funktionen

Die räumlichen Daten werden zur Abfrage und Analyse vom Spatial Server geladen und die Bilder werden von einem Image Processing Framework gespeichert und verarbeitet. Sie können den Oracle Big Data Spatial and Graph-Server auf Hadoop für Folgendes verwenden:

Katalogisieren der Geoinformationen, wie z. B. geographische kartenbasierte Fußabdrücke, Verfügbarkeit von Ressourcen in einer Geographie usw.

Topologische Verarbeitung zur Berechnung von Entfernungsoperationen, z. B. nächster Nachbar an einer Kartenposition.

Kategorisierung, um hierarchische Karten von Geografien zu erstellen und die Karte durch das Erstellen demografischer Assoziationen innerhalb der Kartenelemente anzureichern.

Die folgenden Funktionen sind in Oracle Big Data Spatial und Graph integriert:

Indexierungsfunktion zum schnelleren Abrufen der Geodaten.

Kartenfunktion zur Anzeige von kartenbasierten Fußabdrücken.

Zoom-Funktion zum Vergrößern und Verkleinern bestimmter geografischer Regionen.

Mosaik- und Gruppierungsfunktion zum Gruppieren eines Satzes von Bilddateien für die Verarbeitung, um ein Mosaik oder Teilmengenoperationen zu erstellen.

Kartesische und geodätische Koordinatenfunktionen zur Darstellung der räumlichen Daten in einem dieser Koordinatensysteme.

Hierarchische Funktion, die eine geometrische Hierarchie wie Land, Bundesland, Stadt, Postleitzahl usw. erstellt und in Beziehung setzt. Diese Funktion kann die Eingabedaten in Form von Dokumenten oder Breiten-/Längen-Koordinaten verarbeiten.

2.1.4 Oracle Big Data Spatial Files, Formate und Softwareanforderungen

Die gespeicherten Geodaten oder Bilder können in einem dieser unterstützten Formate vorliegen:

Sowohl geodätische als auch kartesische Daten

Andere von GDAL unterstützte Formate

Um die Geodaten zu speichern und zu verarbeiten, benötigen Sie folgende Software:

GCC Compiler - Nur wenn die von GDAL unterstützten Formate verwendet werden

2.2 Oracle Big Data Vektor- und Rasterdatenverarbeitung

Oracle Big Data Spatial and Graph unterstützt die Speicherung und Verarbeitung von räumlichen Vektor- und Rasterdaten.

2.2.1 Oracle Big Data Spatial Raster-Datenverarbeitung

Zur Verarbeitung der Rasterdaten lädt der GDAL-Loader die räumlichen Rasterdaten oder Bilder in eine HDFS-Umgebung. Die folgenden grundlegenden Operationen können für räumliche Rasterdaten ausgeführt werden:

Mosaik: Kombinieren Sie mehrere Rasterbilder, um ein einzelnes Mosaikbild zu erstellen.

Teilmenge: Führen Sie Teilmengenoperationen für einzelne Bilder durch.

Raster-Algebra-Operationen: Führen Sie Algebra-Operationen für jedes Pixel in den Rastern durch (z. B. Addieren, Dividieren, Multiplizieren, Log, Pow, Sinus, Sinh und Acos).

Benutzerspezifische Verarbeitung: Die Rasterverarbeitung basiert auf den Klassen, die der Benutzer für die Ausführung in Mapping- und Reduktionsphasen festlegt.

Diese Funktion unterstützt ein MapReduce-Framework für Rasteranalyseoperationen. Die Benutzer haben die Möglichkeit, ihre eigenen Raster-Operationen individuell zu erstellen, wie z. B. das Ausführen einer algebraischen Funktion für Raster-Daten und so weiter. Berechnen Sie beispielsweise die Neigung an jeder Basis eines digitalen Höhenmodells oder einer 3D-Darstellung einer räumlichen Oberfläche, beispielsweise eines Geländes. Weitere Informationen finden Sie unter Oracle Big Data Spatial Hadoop Image Processing Framework for Raster Data Processing.

2.2.2 Verarbeitung von räumlichen Vektordaten in Oracle Big Data

Diese Funktion unterstützt die Verarbeitung von räumlichen Vektordaten:

Geladen und in einer Hadoop HDFS-Umgebung gespeichert

Entweder als kartesische oder geodätische Daten gespeichert

Die gespeicherten räumlichen Vektordaten können zum Ausführen der folgenden Abfragevorgänge und mehr verwendet werden:

Für die räumlichen Vektordaten werden Sevetal-Datendienstoperationen unterstützt:

Darüber hinaus gibt es eine eingeschränkte Unterstützung für das Kartenvisualisierungs-API nur für das HTML5-Format. Sie können auf diese APIs zugreifen, um benutzerdefinierte Operationen zu erstellen. Weitere Informationen finden Sie unter "Oracle Big Data Spatial Vector Analysis".

2.3 Oracle Big Data Spatial Hadoop Image Processing Framework für die Rasterdatenverarbeitung

Das Oracle Spatial Hadoop Image Processing Framework ermöglicht die Erstellung neuer kombinierter Images, die aus einer Reihe von parallelen Verarbeitungsphasen resultieren.

Es enthält die folgenden Funktionen:

HDFS-Image-Speicher, in dem jede Blockgrößenaufteilung als separate Kachel gespeichert wird, bereit für die zukünftige unabhängige Verarbeitung

Teilmengen-, benutzerdefinierte und Map-Algebra-Operationen, die parallel mit dem MapReduce-Framework verarbeitet werden

Möglichkeit, auf transparente Weise benutzerdefinierte Verarbeitungsklassen hinzuzufügen, die im Mapping oder Reduzierphasen parallel ausgeführt werden sollen

Schnelle Verarbeitung georeferenzierter Bilder

Unterstützung für GDAL-Formate, Bilder mit mehreren Bändern, DEMs (digitale Höhenmodelle), mehrere Pixeltiefen und SRIDs

Java-API bietet Zugriff auf Framework-Operationen, die für Webdienste oder eigenständige Java-Anwendungen nützlich sind useful

Framework zum Testen und Debuggen von Benutzerverarbeitungsklassen in der lokalen Umgebung

Das Oracle Spatial Hadoop Image Processing Framework besteht aus zwei Modulen, einem Loader und einem Prozessor, die jeweils durch einen Hadoop-Job dargestellt werden, der auf verschiedenen Stufen in einem Hadoop-Cluster ausgeführt wird, wie im folgenden Diagramm dargestellt. Außerdem können Sie die Bilder mit der SpatialViewer-Webanwendung laden und verarbeiten, und Sie können die Java-API verwenden, um die Fähigkeiten des Frameworks verfügbar zu machen.


Beschreibung der Illustration image_process_framewrk.jpg

Informationen zur Installation und Konfiguration finden Sie unter:

2.3.1 Image Loader

Der Image Loader ist ein Hadoop-Job, der ein bestimmtes Image oder eine Gruppe von Images in HDFS lädt.

Beim Importieren wird das Bild gekachelt und als HDFS-Block gespeichert.

GDAL wird verwendet, um das Bild zu kacheln.

Jede Kachel wird von einem anderen Mapper geladen, sodass das Lesen parallel und schneller erfolgt.

Jede Kachel enthält eine bestimmte Anzahl überlappender Bytes (Benutzereingabe), so dass die Kacheln den Bereich der benachbarten Kacheln abdecken.

Ein MapReduce-Job verwendet einen Mapper, um die Informationen für jede Kachel zu laden. Es gibt 'n' Anzahl von Mappern, abhängig von der Anzahl der Kacheln, der Bildauflösung und der Blockgröße.

Eine einzelne Reduzierphase pro Bild fasst alle von den Mappern geladenen Informationen zusammen und speichert die Bilder in einem speziellen .ohif-Format, das Auflösung, Bänder, Offsets und Bilddaten enthält. Auf diese Weise ist der Datei-Offset, der jede Kachel enthält, und die Knotenposition bekannt.

Jede Kachel enthält Informationen für jedes Band. Dies ist hilfreich, wenn nur wenige Kacheln verarbeitet werden müssen, dann werden nur die entsprechenden Blöcke geladen.

Das folgende Diagramm stellt einen Image Loader-Prozess dar:

2.3.2 Bildprozessor

Der Bildprozessor ist ein Hadoop-Job, der die zu verarbeitenden Kacheln basierend auf der Benutzereingabe filtert und die Verarbeitung parallel durchführt, um ein neues Bild zu erstellen.

Verarbeitet bestimmte Kacheln des vom Benutzer identifizierten Bildes. Sie können eine, keine oder mehrere Verarbeitungsklassen identifizieren. Diese Klassen werden je nach Konfiguration in der Mapping- oder Reduktionsphase ausgeführt. Für die Abbildungsphase wird nach der Ausführung von Verarbeitungsklassen eine Mosaikoperation durchgeführt, um die Pixel an das vom Benutzer angeforderte endgültige Ausgabeformat anzupassen. Wenn keine Mosaikoperation angefordert wurde, wird das Eingabe-Raster gesendet, um die Phase unverändert zu reduzieren. Für die Reduzierphase werden alle Kacheln zu einem GDAL-Datensatz zusammengestellt, der für die Benutzerreduktionsverarbeitungsklasse eingegeben wird, wobei die endgültige Ausgabe je nach Benutzeranforderungen geändert oder analysiert werden kann.

Ein Mapper lädt die einer Kachel entsprechenden Daten, wobei die Datenlokalität erhalten bleibt.

Sobald die Daten geladen sind, filtert der Mapper die vom Benutzer angeforderten Bänder.

Gefilterte Informationen werden verarbeitet und in der Reduktionsphase an jeden Mapper gesendet, in der Bytes zusammengestellt und ein fertig verarbeitetes Bild je nach Benutzeranforderung in HDFS oder einem regulären Dateisystem gespeichert wird.

Das folgende Diagramm stellt einen Bildprozessor-Job dar:


Beschreibung der Illustration image_processor_job.png

2.4 Laden eines Images in Hadoop mit dem Image Loader

Der erste Schritt zum Verarbeiten von Bildern mit dem Oracle Spatial and Graph Hadoop Image Processing Framework besteht darin, die Bilder tatsächlich in HDFS zu speichern, gefolgt von der Trennung der Bilder in intelligente Kacheln.

Dadurch kann der Verarbeitungsauftrag für jede Kachel unabhängig voneinander arbeiten. Mit dem Image Loader können Sie ein einzelnes Image oder eine Sammlung davon parallel in HDFS importieren, was die Ladezeit verkürzt.

Der Image Loader importiert Bilder aus einem Dateisystem in HDFS, wobei jeder Block Daten für alle Bänder des Bildes enthält, so dass, wenn eine weitere Verarbeitung an bestimmten Positionen erforderlich ist, die Informationen auf einem einzigen Knoten verarbeitet werden können.

2.4.1 Bildladejob

Der Bildladejob hat sein benutzerdefiniertes Eingabeformat, das das Bild in verwandte Bildteilungen aufteilt. Die Aufteilungen werden basierend auf einem Algorithmus berechnet, der quadratische Blöcke des Bildes liest, die einen definierten Bereich abdecken, der bestimmt wird durch

area = ((blockSize - Metadatenbytes) / Anzahl der Bänder) / Bytes pro Pixel.

Für diejenigen Stücke, die nicht die vollständige Blockgröße verwenden, werden die verbleibenden Bytes mit Nullen aufgefüllt.

Splits werden verschiedenen Mappern zugewiesen, wobei jede zugewiesene Kachel mithilfe von GDAL basierend auf den ImageSplit-Informationen gelesen wird. Als Ergebnis wird eine ImageDataWritable-Instanz erstellt und im Kontext gespeichert.

Die in der ImageDataWritable-Instanz festgelegten Metadaten werden von den Verarbeitungsklassen verwendet, um das gekachelte Bild einzurichten, um es zu bearbeiten und zu verarbeiten. Da die Quellbilder von mehreren Mappern gelesen werden, erfolgt das Laden parallel und schneller.

Nachdem die Mapper das Lesen beendet haben, übernimmt der Reducer die Kacheln aus dem Kontext und fügt sie zusammen, um die Datei in HDFS zu speichern. Zum Rücklesen des Bildes ist ein spezieller Lesevorgang erforderlich.

2.4.2 Eingabeparameter

Die folgenden Eingabeparameter werden für den Hadoop-Befehl bereitgestellt:

  • SOURCE_IMGS_PATH ist ein Pfad zu den Quellbildern oder -ordnern. Verwenden Sie für mehrere Eingaben ein Komma-Trennzeichen. Dieser Pfad muss für alle Knoten im Cluster über NFS zugänglich sein.
  • HDFS_OUTPUT_FOLDER ist der HDFS-Ausgabeordner, in dem die geladenen Bilder gespeichert werden.
  • OVERLAPPING_PIXELS ist eine optionale Anzahl überlappender Pixel an den Rändern jeder Kachel, wenn dieser Parameter nicht angegeben wird, werden standardmäßig zwei überlappende Pixel berücksichtigt.
  • GDAL_LIB_PATH ist der Pfad, in dem sich GDAL-Bibliotheken befinden.
  • GDAL_DATA_PATH ist der Pfad, in dem sich der GDAL-Datenordner befindet. Dieser Pfad muss für alle Knoten im Cluster über NFS zugänglich sein.
  • THUMBNAIL_PATH ist ein optionaler Pfad zum Speichern einer Miniaturansicht der geladenen Bilder. Dieser Pfad muss über NFS für alle Knoten im Cluster zugänglich sein und muss über Schreibzugriffsberechtigungen für Garnbenutzer verfügen.
  • -expand steuert, ob der HDFS-Pfad des geladenen Rasters den Quellpfad einschließlich aller Verzeichnisse erweitert. Wenn Sie dies auf false setzen, wird die .ohif-Datei direkt im Ausgabeverzeichnis (mit der Option -o angegeben) gespeichert, ohne den Pfad dieses Verzeichnisses in das Raster aufzunehmen.
  • -extractLogs steuert, ob die Protokolle der ausgeführten Anwendung in das temporäre Systemverzeichnis extrahiert werden sollen. Standardmäßig ist es nicht aktiviert. Die Extraktion umfasst keine Protokolle, die nicht Teil von Oracle Framework-Klassen sind.
  • -logFilter <LINES_TO_INCLUDE_IN_LOG> ist ein durch Kommas getrennter String, der alle Muster auflistet, die in die extrahierten Protokolle aufgenommen werden sollen, beispielsweise um benutzerdefinierte Verarbeitungsklassenpakete einzuschließen.
  • -pyramid <OUTPUT_DIRECTORY, LEVEL, [RESAMPLING]> ermöglicht das Erstellen von Pyramiden während des anfänglichen Ladens des Rasters. Ein OUPUT_DIRECTORY muss bereitgestellt werden, um die lokalen Pyramiden vor dem Hochladen auf HDFS zu speichern. Pyramiden werden in dasselbe HDFSA-Verzeichnis geladen, das zum Laden angefordert wurde. Ein Pyramiden-LEVEL muss angegeben werden, um anzugeben, wie viele Pyramiden für jedes Raster erforderlich sind. Ein RESAMPLING-Algorithmus ist optional, um die Methode anzugeben, die verwendet wird, um das Resampling auszuführen, wenn keiner gesetzt ist, dann wird BILINEAR verwendet.

Der folgende Befehl lädt beispielsweise alle georeferenzierten Bilder unter den Bilderordner und fügt an jedem möglichen Rand eine Überlappung von 10 Pixeln hinzu. Der HDFS-Ausgabeordner ist ohiftest und Miniaturansichten des geladenen Bildes werden im Ordner processtest gespeichert.

Standardmäßig sind die Mapper und Reducer so konfiguriert, dass sie 2 GB JVM erhalten, aber Benutzer können diese Einstellungen oder andere Jobkonfigurationseigenschaften überschreiben, indem sie eine imagejob.prop-Eigenschaftsdatei im selben Ordner hinzufügen, von dem aus der Befehl ausgeführt wird. Diese Eigenschaftendatei kann alle Konfigurationseigenschaften auflisten, die Sie überschreiben möchten. Beispielsweise,

Der Java-Heapspeicher ( java.opts -Eigenschaften) muss kleiner oder gleich dem Gesamtspeicher sein, der Mappern und Reducern zugewiesen ist ( mapreduce.map.memory und mapreduce.reduce.memory ). Wenn Sie also den Java-Heap-Speicher vergrößern, müssen Sie möglicherweise auch den Speicher für Mapper und Reducer erhöhen.

Damit GDAL richtig funktioniert, müssen die Bibliotheken über $LD_LIBRARY_PATH verfügbar sein. Stellen Sie sicher, dass der Pfad der gemeinsam genutzten Bibliotheken in Ihrem Shell-Fenster richtig eingestellt ist, bevor Sie einen Job ausführen. Beispielsweise:

2.4.3 Ausgangsparameter

Der Reducer erzeugt zwei Ausgabedateien pro Eingabebild. Die erste ist die .ohif-Datei, die alle Kacheln für das Quellbild konzentriert. Jede Kachel kann als separate Instanz von einem Verarbeitungs-Mapper verarbeitet werden. Intern wird jede Kachel als HDFS-Block gespeichert, Blöcke befinden sich in mehreren Knoten, ein Knoten kann einen oder mehrere Blöcke einer bestimmten .ohif-Datei enthalten. Die .ohif-Datei wird im benutzerdefinierten Ordner mit dem Flag -out unter /user/<USER_EXECUTING_JOB>/OUT_FOLDER/<PARENT_DIRECTORIES_OF_SOURCE_RASTER> gespeichert, wenn das Flag 𠄾xpand nicht verwendet wurde. Andernfalls befindet sich die .ohif-Datei unter /user/<USER_EXECUTING_JOB>/OUT_FOLDER/ und die Datei kann als original_filename.ohif identifiziert werden.

Die zweite Ausgabe ist eine zugehörige Metadatendatei, die alle Teile des Bildes und die Koordinaten auflistet, die jeder abdeckt. Die Datei befindet sich in HDFS unter dem Metadatenspeicherort, und ihr Name wird mithilfe des Namens der ohif-Datei hashgeneriert. Diese Datei ist nur für den internen Gebrauch von Oracle bestimmt und listet wichtige Metadaten des Quell-Rasters auf. Einige Beispielzeilen aus einer Metadatendatei:

Wenn das Flag -thumbnail angegeben wurde, wird eine Miniaturansicht des Quellbilds im zugehörigen Ordner gespeichert. Dies ist eine Möglichkeit, eine Übersetzung der .ohif-Datei zu visualisieren. Auf Jobausführungsprotokolle kann mit dem Befehl Garn logs -applicationId <applicationId> zugegriffen werden.

2.5 Verarbeiten eines Images mit dem Oracle Spatial Hadoop Image Processor

Nachdem die Bilder in HDFS geladen wurden, können sie mit dem Oracle Spatial Hadoop Image Processing Framework parallel verarbeitet werden.

Sie geben eine Ausgabe an, und das Framework filtert die Kacheln, damit sie in diese Ausgabe passen, verarbeitet sie und fügt sie alle zusammen, um sie in einer einzigen Datei zu speichern. Kartenalgebraoperationen stehen ebenfalls zur Verfügung und sind, falls gesetzt, der erste Teil der Verarbeitungsphase. Sie können zusätzliche Verarbeitungsklassen angeben, die ausgeführt werden sollen, bevor die endgültige Ausgabe vom Framework erstellt wird.

Der Bildprozessor lädt bestimmte Datenblöcke basierend auf der Eingabe (Mosaikbeschreibung oder ein einzelnes Raster) und wählt nur die Bänder und Pixel aus, die in die endgültige Ausgabe passen. Alle angegebenen Verarbeitungsklassen werden ausgeführt und die endgültige Ausgabe wird je nach Benutzeranforderung in HDFS oder im Dateisystem gespeichert.

2.5.1 Bildverarbeitungsjob

Der Bildverarbeitungsauftrag hat je nach vom Benutzer angeforderter Verarbeitungsart unterschiedliche Abläufe.

Standard-Bildverarbeitungs-Jobablauf: Wird für eine Verarbeitung ausgeführt, die eine Mosaik-Operation, eine einzelne Raster-Operation oder eine einfache Mehrfach-Raster-Operation umfasst.

Auftragsablauf bei der Verarbeitung von mehreren Rasterbildern: Wird für Verarbeitungen ausgeführt, die komplexe Operationen der mehreren Rasteralgebra umfassen.

2.5.1.1 Standardablauf für Bildverarbeitungsjobs

Der Standard-Jobflow für die Bildverarbeitung wird ausgeführt, wenn eine der folgenden Verarbeitungen angefordert wird:

Grundlegende Operationen der Mehrfach-Raster-Algebra

Der Flow verfügt über ein eigenes benutzerdefiniertes FilterInputFormat , das die zu verarbeitenden Kacheln basierend auf der SRID und den Koordinaten bestimmt. Es werden nur Bilder mit demselben Datentyp (Pixeltiefe) wie der Mosaik-Eingabedatentyp (Pixeltiefe) berücksichtigt. Nur die Kacheln, die sich mit den vom Benutzer für die Mosaikausgabe angegebenen Koordinaten schneiden, werden berücksichtigt. Bei der Verarbeitung eines einzelnen Rasters oder einer einfachen Mehrfach-Raster-Algebra-Operation (außer Mosaik) umfasst der Filter alle Kacheln der Eingabe-Raster, da die Verarbeitung an den vollständigen Bildern ausgeführt wird. Sobald die Kacheln ausgewählt sind, wird für jedes Bild ein benutzerdefinierter ImageProcessSplit erstellt.

Wenn ein Mapper den ImageProcessSplit empfängt, liest er die Informationen basierend auf den Angaben des ImageSplit, führt einen Filter durch, um nur die vom Benutzer angegebenen Bänder auszuwählen, und führt die Liste der Map-Operationen und der in der Anfrage definierten Verarbeitungsklassen aus, falls vorhanden.

Jeder Mapper-Prozess läuft in dem Knoten, in dem sich die Daten befinden. Nachdem die Kartenalgebraoperationen und Verarbeitungsklassen ausgeführt wurden, überprüft eine Validierung, ob der Benutzer eine Mosaikoperation anfordert oder ob die Analyse das vollständige Bild umfasst, und wenn eine Mosaikoperation angefordert wird, führt der letzte Prozess die Operation aus. Der Mosaikvorgang wählt aus jeder Kachel nur die Pixel aus, die in die Ausgabe passen, und nimmt die erforderlichen Auflösungsänderungen vor, um sie in die Mosaikausgabe einzufügen. Die Einzelprozessoperation kopiert einfach die vorherigen Rasterkachelbytes, wie sie sind. Die resultierenden Bytes werden in NFS gespeichert, um vom Reducer wiederhergestellt zu werden.

Ein einzelner Reduzierer nimmt die Kacheln auf und fügt sie zusammen. Wenn Sie eine grundlegende Mehrfach-Raster-Algebra-Operation angegeben haben, wird diese gleichzeitig mit dem Zusammenführen der Kacheln in der endgültigen Ausgabe ausgeführt. Dieser Vorgang betrifft nur die sich schneidenden Pixel in der Mosaikausgabe oder in jedem Pixel, wenn kein Mosaikvorgang angefordert wurde. Wenn Sie eine Reducer-Verarbeitungsklasse angegeben haben, wird der GDAL-Datensatz mit dem Ausgabe-Raster zur Analyse und Verarbeitung an diese Klasse gesendet. Wenn Sie HDFS-Ausgabe ausgewählt haben, wird der ImageLoader aufgerufen, um das Ergebnis in HDFS zu speichern. Andernfalls wird das Image standardmäßig mit GDAL erstellt und im Dateisystem (NFS) gespeichert.

2.5.1.2 Auftragsablauf bei der Verarbeitung von mehreren Rasterbildern

Der Auftragsablauf der Mehrfach-Raster-Bildverarbeitung wird ausgeführt, wenn eine komplexe Mehrfach-Raster-Algebra-Operation angefordert wird. Dies gilt für Raster mit demselben MBR, Pixeltyp, Pixelgröße und SRID, da diese Operationen Pixel für Pixel in der entsprechenden Zelle angewendet werden, wobei jedes Pixel die gleichen Koordinaten darstellt.

Der Flow verfügt über ein eigenes benutzerdefiniertes MultipleRasterInputFormat , das die zu verarbeitenden Kacheln basierend auf der SRID und den Koordinaten bestimmt. Es werden nur Bilder mit gleichem MBR, Pixeltyp, Pixelgröße und SRID berücksichtigt. Nur die Raster, die mit den Koordinaten übereinstimmen, die vom ersten Raster im Katalog angegeben wurden, werden eingeschlossen. Alle Kacheln der Eingabe-Raster werden berücksichtigt, da die Verarbeitung an den vollständigen Bildern ausgeführt wird.

Sobald die Kacheln ausgewählt sind, wird ein benutzerdefinierter MultipleRasterSplit erstellt. Dieser Split enthält je nach Blockgröße einen kleinen Bereich jeder Originalkachel, da nun alle Raster in einen Split einbezogen werden müssen, auch wenn es sich nur um einen kleinen Bereich handelt. Jeder von diesen wird als IndividualRasterSplit bezeichnet und ist in einem übergeordneten MultipleRasterSplit enthalten.

Wenn ein Mapper den MultipleRasterSplit empfängt, liest er die Informationen aller Raster-Kacheln, die im übergeordneten Split enthalten sind, führt einen Filter durch, um nur die vom Benutzer angegebenen Bänder und nur den kleinen entsprechenden Bereich auszuwählen, der in diesem speziellen Mapper verarbeitet werden soll , und führt dann die komplexe Mehrfach-Raster-Algebra-Operation aus.

Die Datenlokalität kann in diesem Teil des Prozesses verloren gehen, da mehrere Raster für einen einzelnen Mapper enthalten sind, die sich möglicherweise nicht im selben Knoten befinden. Die resultierenden Bytes für jedes Pixel werden in den Kontext gestellt, der vom Reduzierer wiederhergestellt werden soll.

Ein einzelner Reduzierer wählt Pixelwerte aus und fügt sie zusammen. Wenn Sie eine Reducer-Verarbeitungsklasse angegeben haben, wird der GDAL-Datensatz mit dem Ausgabe-Raster zur Analyse und Verarbeitung an diese Klasse gesendet. Die Liste der Kacheln, die diese Klasse empfängt, ist für dieses Szenario null, und die Klasse kann nur mit dem Ausgabe-Dataset arbeiten. Wenn Sie HDFS-Ausgabe ausgewählt haben, wird der ImageLoader aufgerufen, um das Ergebnis in HDFS zu speichern. Andernfalls wird das Image standardmäßig mit GDAL erstellt und im Dateisystem (NFS) gespeichert.

2.5.2 Eingabeparameter

Die folgenden Eingabeparameter können dem hadoop-Befehl übergeben werden:

  • MOSAIC_CONFIG_PATH ist der Pfad zur Mosaikkonfigurations-XML, die die Features der Ausgabe definiert.
  • GDAL_LIBRARIES_PATH ist der Pfad, in dem sich GDAL-Bibliotheken befinden.
  • GDAL_DATA_PATH ist der Pfad, in dem sich der GDAL-Datenordner befindet. Dieser Pfad muss für alle Knoten im Cluster über NFS zugänglich sein.
  • IMAGE_CATALOG_PATH ist der Pfad zur Katalog-XML, die die zu verarbeitenden HDFS-Images auflistet. Dies ist optional, da Sie mit dem Flag 𠄿ile auch ein einzelnes zu verarbeitendes Raster angeben können.
  • USER_PROCESS_JAR_PATH ist eine optionale benutzerdefinierte JAR-Datei oder eine durch Kommas getrennte Liste von JAR-Dateien, von denen jede zusätzliche Verarbeitungsklassen enthält, die auf die Quellbilder angewendet werden sollen.
  • THUMBNAIL_PATH ist ein optionales Flag, um die Thumbnail-Erstellung der geladenen Bilder zu aktivieren. Dieser Pfad muss über NFS für alle Knoten im Cluster zugänglich sein und gilt nur für eine HDFS-Ausgabe.
  • USER_NATIVE_LIBRARIES_PATH ist eine optionale durch Kommas getrennte Liste zusätzlicher nativer Bibliotheken, die in der Analyse verwendet werden sollen. Es kann auch ein Verzeichnis sein, das alle nativen Bibliotheken enthält, die in die Anwendung geladen werden sollen.
  • USER_PARAMETERS ist eine optionale Schlüssel/Wert-Liste, die verwendet wird, um Eingabedaten für Benutzerverarbeitungsklassen zu definieren. Verwenden Sie ein Semikolon, um Parameter zu trennen. Zum Beispiel: Azimut=315Höhe=45
  • SINGLE_RASTER_PATH ist ein optionaler Pfad zur .ohif-Datei, die vom Job verarbeitet wird. Wenn dies festgelegt ist, müssen Sie keinen Katalog festlegen.

Der folgende Befehl verarbeitet beispielsweise alle Dateien, die in der Katalogdatei input.xml-Datei aufgelistet sind, unter Verwendung der Mosaik-Ausgabedefinitionsgruppe in der Datei testFS.xml.

Standardmäßig sind die Mapper und Reducer so konfiguriert, dass sie 2 GB JVM erhalten, aber Benutzer können diese Einstellungen oder andere Jobkonfigurationseigenschaften überschreiben, indem sie eine imagejob.prop-Eigenschaftsdatei im selben Ordner hinzufügen, von dem aus der Befehl ausgeführt wird.

Damit GDAL richtig funktioniert, müssen die Bibliotheken über $LD_LIBRARY_PATH verfügbar sein. Stellen Sie sicher, dass der Pfad der gemeinsam genutzten Bibliotheken in Ihrem Shell-Fenster richtig eingestellt ist, bevor Sie einen Job ausführen. Beispielsweise:

2.5.2.1 XML-Struktur des Katalogs

Im Folgenden finden Sie ein Beispiel für Eingabekatalog-XML, das verwendet wird, um jedes Quellbild aufzulisten, das für die Mosaikoperation berücksichtigt wird, die vom Bildverarbeitungsjob generiert wird.

Ein <catalog>-Element enthält die Liste der zu verarbeitenden <image>-Elemente.

Jedes <image>-Element definiert ein Quellbild oder einen Quellordner innerhalb des <raster>-Elements. Alle Bilder im Ordner werden verarbeitet.

Das Element <bands> gibt die Anzahl der Bänder des Bildes an. Das Attribut datatype hat den Datentyp Raster und das Attribut config gibt an, welches Band in der Reihenfolge der Mosaikausgabebänder erscheinen soll. Beispiel: 3,1,2 gibt an, dass das Mosaik-Ausgangsband Nummer 1 das Band Nummer 3 dieses Rasters hat, das Mosaik-Band Nummer 2 das Quellband 1 hat und das Mosaik-Band Nummer 3 das Quellband 2. Diese Reihenfolge kann sich ändern von Raster zu Raster.

Übergeordnetes Thema: Eingabeparameter

2.5.2.2 XML-Struktur der Mosaikdefinition

Im Folgenden sehen Sie ein Beispiel für eine XML-Mosaikkonfiguration, die verwendet wird, um die Merkmale der Ausgabe zu definieren, die vom Bildverarbeitungsjob generiert wird.

Das Element <mosaic> definiert die Spezifikationen der Verarbeitungsausgabe. Das exec-Attribut gibt an, ob die Verarbeitung eine Mosaikoperation umfasst oder nicht. Bei „false“ wird keine Mosaikoperation ausgeführt und ein einzelnes Raster wird verarbeitet, wenn sie auf „true“ oder nicht gesetzt ist, wird eine Mosaikoperation ausgeführt. Einige der folgenden Elemente sind nur für Mosaikoperationen erforderlich und werden für die Verarbeitung einzelner Raster ignoriert.

Das Element <output> definiert die Merkmale wie <SRID>, die für die Ausgabe berücksichtigt werden. Alle Bilder in verschiedenen SRIDs werden in die Mosaik-SRID konvertiert, um zu entscheiden, ob eine ihrer Kacheln in das Mosaik passt oder nicht. Dieses Element ist für die Einzel-Raster-Verarbeitung nicht erforderlich, da das Ausgabe-Rster dieselbe SRID wie die Eingabe hat.

Das Element <directory> definiert, wo sich die Ausgabe befindet. Es kann sich in einem HDFS oder in einem regulären FileSystem (FS) befinden, das im Tag-Typ angegeben ist.

Das Element <tempFsFolder> legt den Pfad zum vorübergehenden Speichern der Mosaikausgabe fest. Das Attribut delete=“false“ kann angegeben werden, um die Ausgabe des Prozesses auch dann beizubehalten, wenn der Loader ausgeführt wurde, um sie in HDFS zu speichern.

Die Elemente <filename> und <format> geben den Ausgabedateinamen an. <filename> ist für einen einzelnen Rasterprozess nicht erforderlich, und wenn er nicht angegeben wird, wird der Name der Eingabedatei (ermittelt durch das -file-Attribut während des Jobaufrufs) für die Ausgabedatei verwendet. <format> ist für die Einzel-Raster-Verarbeitung nicht erforderlich, da das Ausgabe-Raster dasselbe Format wie die Eingabe hat.

Die Elemente <width> und <height> legen die Auflösung der Mosaikausgabe fest.Sie sind für die Einzel-Raster-Verarbeitung nicht erforderlich, da das Ausgabe-Raster dieselbe Auflösung wie die Eingabe hat.

Das Element <algorithm> legt den Ordnungsalgorithmus für die Bilder fest. Eine 1-Reihenfolge bedeutet nach dem Datum der letzten Änderung der Quelle und eine 2-Reihenfolge nach Bildgröße. Das Bestell-Tag steht für aufsteigende oder absteigende Modi. (Diese Eigenschaften gelten für Mosaikoperationen, bei denen sich mehrere Raster überlappen können.)

Das Element <bands> gibt die Anzahl der Bänder im Ausgabemosaik an. Bilder mit weniger Bändern als dieser Zahl werden verworfen. Das Attribut config kann für die Einzel-Raster-Verarbeitung verwendet werden, um die Bandkonfiguration für die Ausgabe festzulegen, da kein Katalog vorhanden ist.

Das Element <nodata> gibt die Farbe in den ersten drei Bändern für alle Pixel in der Mosaikausgabe an, die keinen Wert haben.

Das Element <pixelType> legt den Pixeltyp der Mosaikausgabe fest. Quellbilder, die nicht die gleiche Pixelgröße aufweisen, werden zur Verarbeitung verworfen. Dieses Element ist für die Einzel-Raster-Verarbeitung nicht erforderlich: Wenn es nicht angegeben wird, ist der Pixeltyp derselbe wie für die Eingabe.

Das Element <crop> definiert die in der Mosaikausgabe enthaltenen Koordinaten in der folgenden Reihenfolge: startcoordinateX , pixelXWidth , RotationX , startcoordinateY , RotationY und pixelheightY . Dieses Element ist für die Einzel-Raster-Verarbeitung nicht erforderlich: Wenn nicht angegeben, wird das gesamte Bild für die Analyse berücksichtigt.

Das Element <process> listet alle Klassen auf, die vor der Mosaikoperation ausgeführt werden sollen.

Das Element <classMapper> wird für Klassen verwendet, die während der Mapping-Phase ausgeführt werden, und das Element <classReducer> wird für Klassen verwendet, die während der Reduktionsphase ausgeführt werden. Beide Elemente verfügen über das Attribut params, mit dem Sie je nach Bedarf Eingabeparameter an Verarbeitungsklassen senden können.

Das Element <operations> listet alle Kartenalgebraoperationen auf, die für diese Anforderung verarbeitet werden. Dieses Element kann auch eine Anforderung für Pyramidenoperationen enthalten, zum Beispiel:


Freitag, 28. September 2012

Neuseeland kartieren: Zaubern mit TileMill

Alle Daten, die ich hinzugefügt habe, stammen von NZ Topo 500 von LINZ Data Service, und ich habe versucht, natürlich aussehende Farben für mein Karten-Stylesheet zu finden:

Erstellen einer schattierten Reliefkarte von Neuseeland

Nachdem Sie eine schattierte Reliefkarte des neuseeländischen Meeresbodens erstellt haben, ist es an der Zeit, an Land zu gehen. Ich werde die gleiche Hang-verbesserte Schummerungstechnik verwenden. Es war ein bisschen knifflig, aber ich glaube, ich habe einen funktionierenden Workflow gefunden.

Während wir ein digitales Höhenmodell (DEM) des neuseeländischen Meeresbodens mit einer Auflösung von 250 Metern erhalten haben, können Sie von Landcare Research ein DEM mit einer Auflösung von 25 Metern für die Nord- und Südinsel herunterladen. Die kostenlosen Datensätze sind über das LRIS-Portal erhältlich, wo Sie auch über die Richtigkeit der Daten nachlesen können. Ich bekam eine Einladung, Landcare Research zu besuchen, als ich durch Palmerston North fuhr. Sie machen eine Menge Open-Source-Sachen und haben einige spannende Projekte am Laufen!

Wenn Sie ein begrenztes Budget haben, sollten Sie auf jeden Fall erwägen, das DEM mit einer Auflösung von 8 Metern von den besten Kartographen (oder ( Kartenschmiede die sie sich selbst gerne nennen) in Neuseeland - Geographix. Sie bieten auch einige kostenlose Samples, mit denen Sie spielen können. Sie werden erstaunt sein, wie detailliert die gut gestalteten Karten sind! Sie boten mir während meines Besuchs in Wellington freundlicherweise einen Büroraum an, und es war großartig, Teil einer so inspirierenden Umgebung zu sein - und was für eine Aussicht sie von ihrem Büro am Rande des Botanischen Gartens haben:

Wellington vom Geographx-Büro und -Studio im alten Dominion-Observatorium aus gesehen.

Machen wir weiter mit unserem Höhenmodell von Landcare Research. Ich habe zuerst versucht, die beiden DEMs für die Nord- und Südinsel zusammenzuführen, aber später hatte ich aufgrund der hohen Auflösung Speicherprobleme. Die folgenden Befehle decken die Nordinsel ab, aber die gleichen Techniken gelten für das Südinsel-DEM. Ich habe die GeoTIFF-Version der Datensätze heruntergeladen.

Die Datensätze sind in der New Zealand Transverse Mercator 2000 (NZTM2000) Projektion. Da diese Projektion vom Kartenstudio TileMill, das ich verwenden möchte, nicht unterstützt wird, müssen wir sie mit gdalwarp in Web Mercator neu projizieren:

gdalwarp -t_srs EPSG:3785 -tr 76.4370282745361 76.4370282745361 -r bilinear lris-nzdem-north-island-25-meter-GTiff/1-0001-0001.tif nz-dem-north-11.tif

Gleichzeitig skaliere ich den Datensatz herunter (-tr), sodass er die gleiche Auflösung wie Zoomstufe 11 im weit verbreiteten Web Mercator-Kachelschema hat. Woher bekomme ich diese 76.4370282745361 Nummer?

Um die Welt mit Zoomstufe 11 abzudecken, benötigen Sie also fast 4,2 Millionen Kacheln, und es werden viermal mehr für jede Zoomstufe, die Sie der Party hinzufügen. Zum Glück kartografieren wir nur einen kleinen Teil der Welt, Neuseeland. Web Mercator betrachtet die Welt als ein Quadrat, 40.075.016,68 Meter breit und hoch (die Länge des Äquators). Bei einer Kachelgröße von 256 Pixeln erhalten Sie eine maximale Auflösung von 40.075.016,68 / 256 = 156.543.03390625. Sie erhalten den Kartenmaßstab, indem Sie die Auflösung durch 0,00028 (Pixelgröße) teilen. Der Rest ist einfache Mathematik. Der Maßstab stimmt nur am Äquator. Für den südlichen Breitengrad 41°, der durch die Cookstraße zwischen der Nord- und Südinsel verläuft, sollte der Kartenmaßstab für Zoomstufe 11 etwa 1:360.000 betragen, wenn meine Berechnungen richtig sind (mit 1,325 multiplizieren). Lesen Sie hier mehr über die Kartenprojektion und das Kachelschema.

Lassen Sie uns ein Farbrelief aus dem DEM erstellen. Ich habe ein typisches Farbschema erstellt, das von Grün für niedrigere Höhen über Gelb / Braun bis hin zu Grau und Weiß in den höchsten Höhen reicht:

gdaldem color-relief -co compact=lzw nz-dem-north-11.tif color-relief.txt nz-dem-north-11-relief.tif

Als nächstes möchte ich den grünen Ozean loswerden, indem ich nur die Bereiche innerhalb des Datensatzes behalte, den ich in meinem letzten Blogbeitrag erstellt habe (ich habe das Shapefile in zwei geteilt, eines für jede Insel):

gdalwarp -co compress=lzw -dstalpha -cutline shape/nz-north-webmerc.shp nz-dem-north-11-relief.tif nz-dem-north-11-relief-cut.tif

Um eine gut aussehende Schummerung zu erstellen, werde ich die gleiche Technik wie bei der Meeresbodenkarte anwenden (wo Sie alle Details erhalten). Zuerst erstellen wir eine "normale" Schummerung:

gdaldem Schummerung -alt 60 nz-dem-north-11.tif nz-dem-north-11-hillshade.tif

Dann erstellen wir einen Slopeshade:


Dann verwenden wir Mapnik XML, um die Schummerung und die Hangschattierung zu kombinieren:

nik2img.py nz-dem-north-hillslopeshade.xml nz-dem-north-11-hillslopeshade.tif -d 10497 14188

(für das Südinsel-DEM ist die Dimension -d: 12637 14895)

Wir haben auch einige Schnitte, um das Meer loszuwerden:

Wir können das Farbrelief und die verbesserte Schummerung in TileMill kombinieren (ich halte sie getrennt, damit wir die Schummerung auf verschiedene Texturen anwenden können):


Ausgabe¶

Das Standardverhalten der MapTiler Engine besteht darin, jede Kachel in eine eigene Datei unter der Verzeichnisstruktur zu schreiben:

Dabei ist z die Zoomstufe und die x- und y-Kachelkoordinaten auf der entsprechenden Zoomstufe im Kachelprofil.

Die erstellte Verzeichnisstruktur enthält auch einen einfachen HTML-Viewer und eine Beschreibung des Datensatzes in metadata.json, kompatibel mit mb-util und TileServer-Projekten, die den OGC WMTS-Standard unterstützen.

MapTiler Engine unterstützt die direkte Ausgabe der gerenderten Kartenkacheln in eine SQLite-Datenbank (MBTiles- oder GeoPackage-Format). Dies vereinfacht die Übertragung und Verwaltung der Tilesets und ist praktisch für mobile Anwendungen.


Kataloge und Tile Layer IO¶

In jeder gegebenen Schicht oder Pyramide ist ein erheblicher Aufwand erforderlich, daher ist es ein üblicher Anwendungsfall, diese Schichten in einem Speicher-Back-End beibehalten zu wollen. Ein Satz gespeicherter Layer unter einem gemeinsamen Speicherort mit einem Metadatenspeicher wird als a . bezeichnet Katalog im Geotrellis-Sprachgebrauch. Ein Katalog kann mehrere verschiedene Pyramiden enthalten und die Metadaten können für einen bestimmten Anwendungsfall erweitert werden. In diesem Abschnitt werden die Komponenten eines Katalogs und die Durchführung von E/A zwischen einer Anwendung und einem Katalog erläutert.

Layer IO erfordert ein Kachel-Layer-Backend. Jedes Backend verfügt über einen AttributeStore, einen LayerReader und einen LayerWriter.


Schau das Video: GDAL and TensorFlow Installation in Python 4n