Python-Skripterstellung in Global Mapper Pro

Mackenzie Mills | 23.08.2022 |Optimierung von Arbeitsabläufen

Was ist Global Mapper Pro?

Global Mapper Pro, die neueste Entwicklung von Blue Marble Geographics, ist ein komplettes Geoinformationsprogramm, das Funktionen von der Datenerstellung bis zur erweiterten Bearbeitung und Analyse von Punktwolken enthält. Die Pro-Edition wurde als Erweiterung des Standardprogramms Global Mapper entwickelt und macht eine Reihe von hochmodernen Geodatenanalyse-Werkzeugen für Einsteiger und Experten zugänglich. Global Mapper Pro bietet die Möglichkeit, die Programmiersprache Python zu verwenden, um Arbeitsabläufe zu automatisieren und die Leistungsfähigkeit von Global Mapper Pro mit Werkzeugen aus Bibliotheken von Drittanbietern zu kombinieren.

Wenn Sie mehr darüber erfahren möchten, wie Global Mapper Pro Ihnen helfen kann, lesen Sie unsere Blog-Beiträge und die vergangenen Webinare auf unserem YouTube-Kanal. Um Global Mapper Pro zu testen, laden Sie noch heute eine kostenlose 14-Tage-Testversion herunter!

Was ist Python?

Python, eine der beliebtesten Programmiersprachen, ist eine interpretierte Sprache, die leicht zu erlernen, zu lesen und zu schreiben ist. Aufgrund seiner Beliebtheit als Open-Source-Sprache ist Python die Grundlage für einen Großteil der Workflow-Automatisierung in GIS und anderen Branchen.

Mit der Basisinstallation von Python, die eine umfassende Standardbibliothek enthält, können Benutzer sofort mit der Skripterstellung beginnen und die integrierten Schlüsselwörter, bedingten Anweisungen, Schleifen und Operatoren verwenden. Zusätzlich zur Grundinstallation von Python können Pakete und Bibliotheken (Sammlungen von Paketen) installiert und in Skripten verwendet werden. Da viele Bibliotheken verfügbar sind, können sie in einem einzigen Python-Skript kombiniert werden, um eine größere Aufgabe oder einen Arbeitsablauf zu bewältigen. 

Importieren der Global-Mapper-Bibliothek

Global Mapper Pro enthält eine Bibliothek von Python-Funktionen, die über die Programmiersprache Python aufgerufen und ausgeführt werden können. Um die Global Mapper-Funktionen über Python nutzen zu können, muss Global Mapper Pro installiert und lizenziert sein, und Python 3.9 muss installiert sein. Eine Grundinstallation von Python 3.9 kann über die Option „Extra Downloads“ im Installationsprogramm des Global Mapper-Programms zu einem Rechner hinzugefügt werden, oder es kann eine vorhandene Python-Installation verwendet werden. Um eine vorhandene Version von Python zu verwenden, fügen Sie den Pfad zum installierten Global Mapper Pro-Programm zur Umgebungsvariablen PythonPath hinzu.

Wie jedes Python-Paket oder jede Python-Bibliothek muss auch Global Mapper importiert werden, bevor die programmspezifischen Funktionen genutzt werden können. Verwenden Sie die Zeile import globalmapper, um die Global Mapper Pro-Bibliothek mit Python-Funktionen zu importieren. Oft wird dieser Name zu gm abgekürzt (import globalmapper as gm), um den Namen prägnanter zu machen, wenn später im Skript Funktionen aufgerufen werden.

Erstellen eines Python-Skripts

Die Programmiersprache Python kann in einem beliebigen Texteditor, einer integrierten Entwicklungsumgebung (IDE) oder dem Script-Editor der Benutzeroberfläche von Global Mapper Pro geschrieben werden. Wo auch immer Sie Ihre Python-Skripte erstellen, sie können mit einer *.py-Erweiterung gespeichert werden, die sie als ausführbares Python-Skript kennzeichnet, und in einem beliebigen Editor für zukünftige Änderungen wieder geöffnet werden.

Bei der Erstellung eines Skripts in vielen Texteditoren, IDEs und dem Skripteditor von Global Mapper Pro hilft die Syntaxhervorhebung dabei, Teile des Skripts zu unterscheiden, so dass es leichter zu lesen und zu verstehen ist. Auch wenn es sich um eine leicht lesbare Sprache handelt, hilft das Hinzufügen von Kommentaren zu jedem Skript dabei, den Arbeitsablauf und einzelne Abschnitte und Zeilen zu verdeutlichen. Kommentare sind besonders wichtig, wenn Sie ein Skript mit anderen Benutzern teilen.

Die Python-Bibliothek Global Mapper ist objektorientiert, d. h., der Funktion werden definierte Objekte mit spezifischen Parametern übergeben, um eine Aufgabe zu erfüllen. Dadurch können Teile des Skripts in einem längeren Arbeitsablauf wiederverwendet werden. Da GIS-Workflows meist datengesteuert sind, arbeiten Skripte, die die Python Global Mapper-Bibliothek verwenden, häufig mit importierten Datendateien, um neue Daten zu verarbeiten, zu ändern oder zu extrahieren. Durch den Zugriff auf die Global Mapper Pro-Funktionalität über Python können Benutzer Werkzeuge aus Python-Bibliotheken von Drittanbietern einbeziehen, um einen Prozess effizienter auszuführen, der über installierte Programmschnittstellen mühsam, zeitaufwändig oder nahezu unmöglich wäre.

Ausführen eines Python-Skripts

Ein erstelltes Python-Skript kann von einer IDE, der Befehlszeile oder über den Skript-Editor von Global Mapper Pro ausgeführt werden. Jede dieser Methoden verwendet die importierte Befehlsbibliothek von Global Mapper, sofern Global Mapper Pro auf dem Rechner installiert und lizenziert ist.

Ein typischerer Weg, ein Python-Skript über die Befehlszeile oder eine IDE auszuführen, erfordert nicht, dass das Global Mapper-Programm geöffnet ist. Wenn Sie das Skript über ein Schnittstellenmenü oder durch einfaches Zeigen auf eine *.py-Datei in der Befehlszeile ausführen, werden die Global-Mapper-Funktionen und die Werkzeuge anderer Python-Bibliotheken von Drittanbietern im Hintergrund genutzt. Alle Fehler oder protokollierten Meldungen werden in die angegebene Datei oder das angegebene Fenster gedruckt, während das Skript ausgeführt wird.

Ein Python-Skript, das über den Global Mapper Pro Skript-Editor ausgeführt wird, kann aktuell geöffnete Datenebenen im Arbeitsbereich verwenden und/oder importierte und erstellte Daten laden, während das Skript ausgeführt wird. Die Checkbox Skript im Kontext der Hauptansicht ausführen im Skript-Editor-Fenster ist zwar nicht erforderlich, zeigt aber Daten in der Programmoberfläche an, während das Skript ausgeführt und abgeschlossen wird. Wenn die Checkbox nicht aktiviert ist, dient der Script-Editor als Umgebung für die Ausführung des Scripts und meldet alle Fehler oder protokollierten Meldungen im Fenster „Scriptergebnisse“.

Beispiel-Skript: Von einer Punktwolke zum Geländemodell

Das folgende Beispiel-Skript, das wir in mehreren Screenshots zeigen, prüft, ob in der aktiven Global-Mapper-Oberfläche offene Punktwolkenebenen vorhanden sind, fordert den Benutzer auf, Daten zu laden, falls keine gefunden werden, und verarbeitet dann die Lidar-Rohdaten zu einem gerasterten digitalen Geländemodell.

1-comments-import.jpg

Um die Global-Mapper-Werkzeuge in diesem Python-Skript zu verwenden, wird die Global-Mapper-Bibliothek mit dem Kurznamen gm importiert. Ein weiteres Modul, tkinter, wird ebenfalls in das Skript importiert und dient zur Erstellung interaktiver Windows-Dialoge, in denen der Benutzer einen Speicherort für die generierten Daten auswählen kann.

Die erste Aktion in diesem Skript prüft den aktiven Global Mapper-Arbeitsbereich, um festzustellen, ob bereits Ebenen geladen sind und, falls ja, ob es sich um Lidar-Punktwolken handelt. Mithilfe von IF-Anweisungen wird je nach Vorhandensein von Daten einer von zwei Kontrollflüssen verfolgt. Wenn keine Lidar-Ebenen gefunden werden, wird der Benutzer aufgefordert, eine Lidar-Datei zum Laden auszuwählen.

2-Load-Layers.jpg

Nachdem das Skript die zu verwendenden Lidar-Daten ermittelt hat, beginnt der Prozess mit der Auswahl von Punkten und dem Aufruf der Methode LidarClassifyNoise. Diese Methode bereinigt jedes Rauschen, das in der Rohdatendatei vorhanden ist, wie z. B. Vögel, Reflektionen oder Sensoranomalien. Das Entfernen von Rauschen aus der Punktwolke ermöglicht eine bessere Klassifizierung im weiteren Verlauf des Arbeitsablaufs.

3-Classify.jpg

Nachdem die Rauschpunkte entfernt wurden, wird der Boden in der Punktwolke mit der Methode LidarClassifyGround aus der Python-Bibliothek von Global Mapper Pro identifiziert. Für dieses Beispiel werden die Standardverarbeitungsparameter verwendet, und alle vorklassifizierten Bodenpunkte werden mit der Klasse GM_ClassifyGroundSetup_t() gelöscht, die an die Methode ClassifyGround übergeben wird.

Die klassifizierten und bereinigten Daten werden dann durch Anwendung der Methode GetLidarClassFilter gefiltert. Dieser Filter kann verwendet werden, um beliebige Punktwolkendaten auf der Grundlage ihrer identifizierten Klassifizierung zu identifizieren und zu trennen. Da die Methode LidarClassifyGround bereits aufgerufen wurde, kann der Prozess mit dem Typ GM_LidarClass_Ground initialisiert und dann mit dem Aufruf SetLidarClassFilter auf die Daten angewendet werden.

Der nächste Schritt des Skripts identifiziert die geografischen Grenzen, die für die Erstellung und den Export eines digitalen Höhenmodells verwendet werden. Diese Werte werden im Koordinatensystem des Lidar-Layers durch einen Aufruf der Methode GetLayerInfo zurückgegeben. In diesem Fall wird die GetLayerInfo-Methode verwendet, um den Parameter mGlobalRect explizit zu betrachten.

4-Grid.jpg

Das Höhenraster wird dann aus dem gefilterten Lidar-Datensatz mit dem Aufruf GenerateElevationGrid erzeugt. Diese Methode wird mit der Klasse GM_GridGenSetup_t initialisiert, die mit der erforderlichen Auflösung, dem Algorithmus zur Gittergenerierung und den Parametern zum Füllen von Lücken definiert wird. Ein erfolgreicher Aufruf der Methode GenerateElevationGrid gibt eine neue Variable namens grid_layer zurück, die die neu erzeugte Datenschicht darstellt.

5-Export.jpg

Unter Verwendung der zuvor ermittelten Grenzen rechnet CalcDistance die Einheiten des Koordinatensystems in Meter um und verwendet diese Werte zur Berechnung des Maßstabs für die Exportauflösung. In diesem Beispiel werden die Daten mit einer Auflösung von einem Meter exportiert, aber das kann mit der Variable pixel_resolution am Anfang der Datei geändert werden.

Schließlich wird der Benutzer mit Hilfe der üblichen Python tk-Schnittstellendialoge aufgefordert, einen Pfad für die Ausgabedatei anzugeben. Die oben erzeugte Variable grid_layer wird dann als Basis für den Export einer DEM-Datei verwendet. Die Details werden an die ExportElevation-Methode übergeben, und es wird eine Datei erstellt und auf die Festplatte geschrieben.

Lidar.jpg
Grid.jpg

Weitere Quellen

Weitere Informationen zum Python-Skripting mit Global Mapper Pro finden Sie in den folgenden Blogs:

Diese kurzen Videos zeigen die Verwendung von Python in Global Mapper Pro (Sie verlassen diese Seite und werden auf die Seiten von YouTube weitergeleitet):

Die Global Mapper-Bibliothek mit Python-Befehlen finden Sie hier: www.bluemarblegeo.com/knowledgebase/global-mapper-python/index.html

Weitere Beispiele für Python-Skripte finden Sie hier: www.bluemarblegeo.com/knowledgebase/global-mapper-python/sampleCode/DemoMisc.html

Warenkorb (0 Artikel)