¿Lenguaje de programación recomendado para la teledetección?


14

Estoy comenzando estudios que con suerte conducirán a una larga carrera como especialista en teledetección. Actualmente estoy trabajando con ArcGIS para algunas aplicaciones y aprendiendo ENVI para otras. Me di cuenta de que es imperativo que aprenda un lenguaje de programación, y estoy atrapado frente a una elección entre IDL y Python. Me encantaría saber qué lenguaje de programación recomienda la comunidad para la detección remota de los procesos de la superficie terrestre.

Respuestas:


28

IDL es un fantástico lenguaje de programación independiente (no necesita ENVI). Particularmente me gusta para el procesamiento matricial muy rápido en matrices grandes. @Aaron hace que IDL suene mucho menos flexible de lo que realmente es. La mayoría del desarrollo de IDL provino de las comunidades de Física y Astronomía. Existe un sólido soporte para la programación matemática y estadística. Si se incluye con ENVI, tiene todas las llamadas a la biblioteca (funciones) disponibles en ENVI, incluido el soporte para objetos vectoriales espaciales. También hay una gran cantidad de funciones y modelos desarrollados por la comunidad de usuarios. Una ventaja de aprender IDL es que lo hará comercializable en tiendas "analíticas" de teledetección.

Además, no olvide que ERDAS tiene un lenguaje de script (EML) que es bastante bueno y fácil de aprender. EML es la columna vertebral del modelador gráfico y los gmd son scripts EML empaquetados que se encuentran debajo de la interfaz del modelador gráfico. La ventaja de usar EML directamente es que puede usar bucles for / while y tener acceso a más funciones ERDAS en un lenguaje de script.

MATLAB también es muy bueno para el procesamiento matricial y hay versiones de código abierto (por ejemplo, Octave) que tienen exactamente la misma sintaxis con puntos de referencia similares. Este es un lenguaje muy flexible con un poder considerable. Es uno de los idiomas preferidos para la matemática aplicada y la ingeniería.

Las alternativas de Python NumPy y SciPy son flexibles pero no tan optimizadas como IDL y MATLAB. Como tal, debe lidiar con el espacio y la velocidad de direccionamiento cuando trabaje con matrices grandes. Una gran ventaja de Python son las bibliotecas adicionales para realizar una variedad de tareas analíticas. Hay paquetes para sensores remotos , estadísticas no paramétricas , enlaces a clases espaciales (por ejemplo, GDAL, LibLAS) para nombrar solo algunas de las funcionalidades adicionales disponibles a través de paquetes.

Esto nos lleva a R. Soy principalmente un estadístico espacial, así que este es mi lenguaje cotidiano. La cantidad de paquetes disponibles es asombrosa, lo que, a su vez, brinda acceso a metodologías estadísticas de vanguardia entre disciplinas. Sin embargo, debo decir que es muy engorroso cuando se trata de grandes problemas de datos. Las clases espaciales están mejorando mucho y debido a que el paquete ráster proporciona la capacidad de mantener grandes datos fuera de la memoria, ahora puedo implementar algunos modelos estadísticos bastante complejos que utilizan grandes matrices ráster. Pero aún así, R es lento cuando se trata de grandes problemas de memoria. El paquete BigMatrix permite escribir y procesar grandes matrices desde el disco, pero la sobrecarga de codificación no es insignificante. También hay enlaces al software GDAL y GIS (por ejemplo, GRASS, SAGA) que permiten que el procesamiento de objetos espaciales ocurra fuera de R en un software SIG específico, que es cómo interactúo con el software SIG en estos días. Esto me permite aprovechar la funcionalidad en múltiples programas sin salir de R.

Entonces, ahora que el software de animación está fuera del camino, mi recomendación es "sí a todas las opciones anteriores". La programación es una habilidad que, una vez que se aprende, se aplica fácilmente a otros idiomas. Hay sorprendentes similitudes entre C ++, R, IDL y Python. Además de algunas idiocentricidades de codificación, lo que uno debe aprender son las funciones disponibles para implementar un modelo / tarea dada. Una vez hecho esto, es solo una cuestión de sintaxis que implementa estructuras de codificación comunes.

A veces hay cosas que simplemente funcionan mejor en un software o idioma diferente. Ocasionalmente escribo código en FORTRAN o C ++ porque es la mejor opción para una tarea determinada. Es una cuestión de adaptabilidad. Es posible que desee comenzar con Python porque, como lenguaje de secuencias de comandos, se puede aplicar a numerosas tareas, también proporciona disponibilidad de paquetes para análisis especializados, tiene una serie de recursos en línea gratuitos y es algo fácil de aprender.


Elegí esto no solo porque está bien escrito y responde, sino también porque he tenido experiencias similares (incluida la incursión ocasional en Fortran :-) y sacar conclusiones similares sobre estos lenguajes y entornos de aplicación.
whuber

+1 Un buen resumen de las herramientas disponibles por ahí. Gracias por mencionar EML. Desde una perspectiva de secuencias de comandos, EML es un poco torpe en comparación con Python (IMOP), aunque muy útil si Erdas es su RS GUI de elección. Desafortunadamente, no existe un lenguaje unificado que brinde lo mejor de GIS y RS. Estoy totalmente de acuerdo en que cada persona necesita usar el mejor método disponible y tener una variedad de idiomas a su disposición. Creo que un especialista en RS de un solo idioma es raro en el campo.
Aaron

Estoy de acuerdo en que comenzar con Python suena como mi mejor apuesta, dado que es de código abierto y que hay muchos recursos en línea disponibles. Tengo acceso a ENVI, pero para mi investigación actual, puedo administrar sin conocer IDL. También estoy estudiando estadísticas espaciales, por lo que R también será importante. @Aaron parece tener razón: ¡los especialistas en RS deben ser multilingües! Gracias de nuevo por la respuesta detallada. Esto es realmente una gran ayuda para alguien que recién comienza en el campo.
Emily

@ Emily, para estadísticas espaciales en Python, eche un vistazo al paquete PySAL ( geodacenter.asu.edu/pysal ). Hay un libro de Kenneth Bowman, "Una introducción a la programación con IDL" que es una muy buena introducción general. Creo que se sorprendería de lo lejos que llegaría simplemente trabajando en este libro. Como mencioné, gran parte de la sintaxis y la estructura de codificación son similares entre los idiomas mencionados, así que no se pierde tiempo. Dado que está trabajando con ENVI, algunos conocimientos básicos de IDL serían útiles en su investigación. No es todo o nada con un idioma dado.
Jeffrey Evans

esta publicación es un buen resumen, una adición de mi experiencia: considerando el alto precio de ArcGis, Envi, Matlab y otras herramientas, prefiero OpenSource, que es gratis. Para mí, una combinación de Python / gdal y QuantumGIS funciona perfectamente. Otros en mi lugar de trabajo usan Matlab (pero también muy caro). En mi entorno, R parece ser utilizado principalmente por los biólogos por alguna razón.
Max

15

Desde una perspectiva de detección remota, el principal beneficio de IDL es que extiende la capacidad de ENVI de forma similar a cómo el paquete de sitio Python arcpy extiende la funcionalidad de ArcGIS. Si no tendrá acceso a la plataforma ENVI, considere aprender un lenguaje de programación diferente. Además, IDL es un producto comercial, mientras que Python es de código abierto y tiene una gran base de soporte.

Desde una perspectiva práctica, Python , R (código abierto) y MATLAB (comercial) son los lenguajes más importantes para mi trabajo diario basado en la teledetección. Utilizo MATLAB para gran parte del procesamiento de imágenes digitales, Python para más tareas relacionadas con SIG y R para gráficos / fines analíticos.

Finalmente, si tuviera que concentrar todos mis esfuerzos en un idioma, elegiría aprender Python principalmente porque la funcionalidad de Python es mucho más adecuada para el procesamiento relacionado con SIG, además de la funcionalidad basada en RS. En otras palabras, Python es un comercio de todo tipo, mientras que IDL no lo es. Además, ¡la NASA usa Python !


1
Hay muchos módulos dentro de python, como pyh5 y numpy / scipy. También hay bibliotecas más grandes como OSSIM , específicamente para el procesamiento de imágenes.
Roland

1
+1 en python. Es un lenguaje de propósito general, y si necesita usar herramientas que pueden caer 'fuera de la caja' dentro de las secuencias de comandos SIG, Python puede hacerlo.

Gracias chicos, parece que comenzaré a trabajar en Python y me expandiré a otros idiomas una vez que tenga ese uno abajo. Muchas gracias por su ayuda.
Emily

1
No se olvide de Rasterio: github.com/mapbox/rasterio, una nueva biblioteca para rásters para Python.
Alex Leith

2

Sugiero encarecidamente que aprenda la teoría básica de la informática en lugar de centrarse en un lenguaje de procedimiento. Adquirir una base en la teoría de CS le permitiría usar lenguajes de programación indistintamente. En el día a día uso dos o tres idiomas para escribir código (principalmente Matlab, R, Python), y en el último mes también escribí código en VB, BATCH y EASE (PCI Focus).

Esto no solo es importante para poder aprender fácilmente varios idiomas, sino también para evitar cometer errores básicos.

Algunos temas recomendados son:

  • tipos de datos, uso de memoria
  • condiciones
  • iteración
  • la coincidencia de patrones
  • paradigma procesal, modularidad

Además, si tiene problemas para escribir código, dé un paso atrás y escriba pseudocódigo. Básicamente, escriba paso a paso la lógica detrás de su código y lo que desea que logre.

Si eres estudiante, te recomiendo que tomes cursos de ciencias de primer y segundo año.

Salud.


2

Creo que vale la pena responder por separado: esta es una página absolutamente excelente para aprender a usar Python para la detección remota, las notas de clase son un excelente tutorial: http://www.gis.usu.edu/~chrisg/python / 2009 /

Para mí, una combinación de Python y QuantumGIS resuelve todas mis necesidades de detección remota y SIG.


0

realmente depende de los paquetes que espera usar en la teledetección (análisis de imágenes). ArcGIS (ESRI) no es un paquete de detección remota. Si desea utilizar paquetes de código abierto, estaría de acuerdo en que Python y R son excelentes lenguajes. También consideraría C ++ y C, para que pueda profundizar en algunas de las bibliotecas (es decir: GDAL). Si desea seguir con los paquetes comerciales disponibles (COTS), entonces querrá buscar más en los lenguajes C (C, C ++ y C #). Feliz codificación

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.