Empfohlene Programmiersprache für Fernerkundung?

14

Ich beginne ein Studium, das hoffentlich zu einer langen Karriere als Fernerkundungsspezialist führen wird. Derzeit arbeite ich mit ArcGIS für einige Anwendungen und lerne ENVI für andere. Ich habe erkannt, dass es unbedingt erforderlich ist, eine Programmiersprache zu lernen, und stehe vor der Wahl zwischen IDL und Python. Ich würde gerne hören, welche Programmiersprache die Community für die Fernerkundung von Landoberflächenprozessen empfiehlt.

Emily
quelle

Antworten:

28

IDL ist eine fantastische eigenständige Programmiersprache (Sie benötigen kein ENVI). Ich mag es besonders für die sehr schnelle Matrixverarbeitung auf großen Arrays. Mit @Aaron klingt IDL viel weniger flexibel als es wirklich ist. Der Großteil der IDL-Entwicklung stammte aus den Bereichen Physik und Astronomie. Es gibt eine solide Unterstützung für die mathematische und statistische Programmierung. In Kombination mit ENVI stehen Ihnen alle in ENVI verfügbaren Bibliotheksaufrufe (Funktionen) zur Verfügung, einschließlich der Unterstützung für räumliche Vektorobjekte. Es gibt auch eine große Anzahl von Funktionen und Modellen, die von der Benutzergemeinschaft entwickelt wurden. Ein Vorteil beim Erlernen von IDL ist, dass Sie damit in "analytischen" Fernerkundungsgeschäften marktfähig werden.

Vergessen Sie auch nicht, dass ERDAS eine Skriptsprache (EML) hat, die recht gut und einfach zu erlernen ist. EML ist das Rückgrat des Grafik-Modellierers und GMDs sind einfach verpackte EML-Skripte, die sich unter der Oberfläche des Grafik-Modellierers befinden. Der Vorteil der direkten Verwendung von EML besteht darin, dass Sie for / while-Schleifen verwenden und Zugriff auf weitere ERDAS-Funktionen in einer Skriptsprache haben können.

MATLAB eignet sich auch sehr gut für die Matrixverarbeitung, und es gibt Open-Source-Versionen (z. B. Octave), die dieselbe Syntax mit ähnlichen Benchmarks aufweisen. Dies ist eine hochflexible Sprache mit beträchtlicher Kraft. Es ist eine der bevorzugten Sprachen für angewandte Mathematik und Ingenieurwissenschaften.

Die Python-Alternativen NumPy und SciPy sind flexibel, aber nicht so optimiert wie IDL und MATLAB. Aus diesem Grund müssen Sie sich mit der Adressierung von Speicherplatz und Geschwindigkeit befassen, wenn Sie mit großen Arrays arbeiten. Ein großer Vorteil von Python sind die zusätzlichen Bibliotheken zur Durchführung einer Vielzahl von analytischen Aufgaben. Es gibt Pakete für Fernerkundung , nichtparametrische Statistiken und Bindungen an räumliche Klassen (z. B. GDAL, LibLAS), um nur einige der zusätzlichen Funktionen zu nennen, die durch Pakete verfügbar sind.

Das bringt uns zu R. Ich bin in erster Linie ein Raumstatistiker, das ist also meine Alltagssprache. Die Anzahl der verfügbaren Pakete ist unübersehbar, was wiederum den Zugang zu den neuesten disziplinübergreifenden statistischen Methoden ermöglicht. Allerdings muss ich sagen, dass es bei großen Datenproblemen sehr umständlich ist. Die räumlichen Klassen werden immer besser und da das Rasterpaket die Möglichkeit bietet, große Datenmengen außerhalb des Speichers zu speichern, kann ich jetzt einige recht komplexe statistische Modelle mit großen Raster-Arrays implementieren. Trotzdem ist R langsam, wenn es um Probleme mit großem Speicher geht. Das BigMatrix-Paket ermöglicht das Schreiben und Verarbeiten großer Arrays von der Festplatte, der Codierungsaufwand ist jedoch nicht unerheblich. Es gibt auch Bindungen zu GDAL- und GIS-Software (z. B. GRASS, SAGA), mit denen die räumliche Objektverarbeitung außerhalb von R in einer GIS-spezifischen Software erfolgen kann. So interagiere ich heutzutage mit GIS-Software. Auf diese Weise kann ich die Funktionalität für mehrere Softwareprogramme nutzen, ohne R zu verlassen.

Nachdem das Software-Cheerleading nun aus dem Weg geräumt ist, lautet meine Empfehlung "Ja zu allen oben genannten Optionen". Das Programmieren ist eine Fähigkeit, die, sobald sie gelernt ist, leicht auf andere Sprachen angewendet werden kann. Es gibt bemerkenswerte Ähnlichkeiten zwischen C ++, R, IDL und Python. Abgesehen von einigen Kodierungsidiozentrien müssen die verfügbaren Funktionen zur Implementierung eines bestimmten Modells / einer bestimmten Aufgabe erlernt werden. Sobald dies erledigt ist, ist es nur eine Frage der Syntax, die allgemeine Codierungsstrukturen implementiert.

Manchmal gibt es Dinge, die in einer anderen Software oder Sprache besser funktionieren. Ich schreibe gelegentlich Code in FORTRAN oder C ++, weil es für eine bestimmte Aufgabe einfach die beste Wahl ist. Es geht um Anpassungsfähigkeit. Möglicherweise möchten Sie mit Python beginnen, da es als Skriptsprache auf zahlreiche Aufgaben angewendet werden kann, außerdem die Verfügbarkeit von Paketen für spezielle Analysen bietet, über eine Reihe kostenloser Online-Ressourcen verfügt und relativ einfach zu erlernen ist.

Jeffrey Evans
quelle
Ich habe dies nicht nur deshalb positiv bewertet, weil es gut geschrieben und ansprechend ist, sondern auch, weil ich ähnliche Erfahrungen gemacht habe (einschließlich des gelegentlichen Streifzuges zurück nach Fortran :-) und ähnliche Schlussfolgerungen zu diesen Sprachen und Anwendungsumgebungen gezogen habe.
Whuber
+1 Eine gute Zusammenfassung der verfügbaren Tools. Vielen Dank, dass Sie EML erwähnt haben. Aus Sicht der Skripterstellung ist EML im Vergleich zu Python (IMOP) etwas umständlich, obwohl es sehr praktisch ist, wenn Erdas Ihre bevorzugte RS-GUI ist. Leider gibt es keine einheitliche Sprache, die das Beste aus GIS und RS herausholt. Ich stimme voll und ganz zu, dass jeder die beste verfügbare Methode anwenden und über eine Vielzahl von Sprachen verfügen muss. Ich glaube, ein einsprachiger RS-Spezialist ist auf diesem Gebiet selten.
Aaron
Ich bin damit einverstanden, dass das Starten mit Python meine beste Wahl ist, da es sich um Open Source handelt und viele Online-Ressourcen zur Verfügung stehen. Ich habe zwar Zugang zu ENVI, aber für meine aktuelle Forschung kann ich ohne IDL-Kenntnisse auskommen. Ich studiere auch Raumstatistik, also wird R auch wichtig sein. @Aaron scheint richtig zu sein - RS-Spezialisten müssen mehrsprachig sein! Nochmals vielen Dank für die ausführliche Antwort. Dies ist wirklich eine große Hilfe für jemanden, der gerade erst im Feld anfängt.
Emily
@Emily, für räumliche Statistiken in Python werfen Sie einen Blick auf das PySAL-Paket ( geodacenter.asu.edu/pysal ). Es gibt ein Buch von Kenneth Bowman, "Eine Einführung in die Programmierung mit IDL", das eine recht gute allgemeine Einführung darstellt. Ich denke, Sie wären überrascht, wie weit Sie kommen würden, wenn Sie nur dieses eine Buch durcharbeiten würden. Wie ich bereits erwähnt habe, ähnelt ein Großteil der Syntax und der Codierungsstruktur zwischen den genannten Sprachen, so dass keine Zeitverschwendung entsteht. Da Sie mit ENVI arbeiten, sind einige Grundkenntnisse von IDL für Ihre Recherche hilfreich. Es ist nicht alles oder nichts mit einer bestimmten Sprache.
Jeffrey Evans
Dieser Beitrag ist eine gute Zusammenfassung - eine Ergänzung aus meiner Erfahrung: Angesichts des hohen Preises für ArcGis, Envi, Matlab und andere Tools bevorzuge ich OpenSource, das kostenlos ist. Für mich funktioniert eine Kombination aus Python / gdal und QuantumGIS perfekt. Andere an meinem Arbeitsplatz benutzen Matlab (aber auch sehr teuer). In meiner Umgebung scheint R aus irgendeinem Grund hauptsächlich von Biologen verwendet zu werden.
Max
15

Unter dem Gesichtspunkt der Fernerkundung besteht der Hauptvorteil von IDL darin, dass es die Funktionen von ENVI erweitert, ähnlich wie das Site-Paket Python arcpy die Funktionen von ArcGIS erweitert. Wenn Sie keinen Zugriff auf die ENVI-Plattform haben, sollten Sie eine andere Programmiersprache lernen. Zusätzlich ist IDL ein kommerzielles Produkt, wohingegen Python Open Source ist und eine riesige Supportbasis hat.

Aus praktischer Sicht sind Python , R (Open Source) und MATLAB (kommerziell) die wichtigsten Sprachen für meine tägliche Arbeit mit Fernerkundung. Ich benutze MATLAB für einen Großteil der digitalen Bildverarbeitung, Python für mehr GIS-bezogene Aufgaben und R für Grafik- / Analysezwecke.

Wenn ich mich auf eine Sprache konzentrieren müsste, würde ich Python hauptsächlich deshalb lernen, weil die Python-Funktionalität neben der RS-basierten Funktionalität viel besser für die GIS-bezogene Verarbeitung geeignet ist. Mit anderen Worten, Python ist ein Alleskönner, IDL nicht. Außerdem benutzt die NASA Python !

Aaron
quelle
1
Es gibt viele Module in Python, wie pyh5 und numpy / scipy. Es gibt auch größere Bibliotheken wie OSSIM , speziell für die Bildverarbeitung.
Roland
1
+1 auf Python. Es ist eine Allzwecksprache, und wenn Sie Tools verwenden müssen, die bei der Verwendung von GIS-Skripten "out of the box" sind, kann Python dies tun.
Vielen Dank, hört sich so an, als würde ich anfangen, an Python zu arbeiten und auf andere Sprachen erweitern, sobald ich diese habe. Vielen Dank für deine Hilfe.
Emily
1
Vergessen Sie nicht Rasterio: github.com/mapbox/rasterio eine neue Bibliothek für Raster für Python.
Alex Leith
2

Ich empfehle dringend, grundlegende Informatik-Theorie zu lernen, anstatt sich auf eine prozedurale Sprache zu konzentrieren. Wenn Sie eine Grundlage in CS-Theorie erwerben, können Sie Programmiersprachen austauschbar verwenden. Täglich verwende ich zwei bis drei Sprachen zum Schreiben von Code (hauptsächlich Matlab, R, Python), und im letzten Monat habe ich auch Code in VB, BATCH und EASE (PCI Focus) geschrieben.

Dies ist nicht nur wichtig, um problemlos mehrere Sprachen zu lernen, sondern auch, um grundlegende Fehler zu vermeiden.

Einige empfohlene Themen sind:

  • Datentypen, Speichernutzung
  • Bedingungen
  • Wiederholung
  • Mustervergleich
  • Verfahrensparadigma, Modularität

Wenn Sie Probleme beim Schreiben von Code haben, gehen Sie einen Schritt zurück und schreiben Sie Pseudocode. Schreiben Sie im Grunde Schritt für Schritt die Logik hinter Ihrem Code und was Sie damit erreichen möchten.

Wenn Sie Student sind, empfehle ich die Teilnahme an Comp-Sci-Kursen im ersten und zweiten Jahr.

Prost.

Jean B.
quelle
2

Ich denke , das wert ist , eine separate Antwort: Eine absolut tolle Seite für das Lernen, wie man Python verwenden , für Fernerkundung ist dieser, Skriptum ein großes Tutorial zu sein: http://www.gis.usu.edu/~chrisg/python / 2009 /

Für mich erfüllt eine Kombination aus Python und QuantumGIS alle meine Anforderungen an Fernerkundung und GIS.

Max
quelle
0

Es hängt wirklich von den Paketen ab, die Sie für die Fernerkundung (Bildanalyse) verwenden möchten. ArcGIS (ESRI) ist kein Fernerkundungspaket. Wenn Sie Open-Source-Pakete verwenden möchten, würde ich zustimmen, dass Python und R großartige Sprachen sind. Ich würde auch C ++ und C in Betracht ziehen, so dass Sie tiefer in einige der Bibliotheken eintauchen können (dh: GDAL). Wenn Sie bei COTS-Paketen (Commercial Off-the-Shelf) bleiben möchten, sollten Sie sich eingehender mit den C-Sprachen (C, C ++ und C #) befassen. Fröhliches Codieren.

Ryan Garnett
quelle