¿Lenguaje de programación recomendado para la detección remota?

14

Estoy comenzando estudios que, con suerte, conducirán a una larga carrera como especialista en sensores remotos. Actualmente estoy trabajando con ArcGIS para algunas aplicaciones y aprendiendo ENVI para otras. Me he dado cuenta de que es imperativo que aprenda un lenguaje de programación, y me quedo con la opción de elegir 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.

    
pregunta Emily 04.02.2014 - 22:05

5 respuestas

28

IDL es un fantástico lenguaje de programación independiente (no necesita ENVI). Me gusta la particularidad para el procesamiento de matriz muy rápido en grandes matrices. @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 soporte robusto para la programación matemática y estadística. Si se incluye con ENVI, tiene todas las llamadas de biblioteca (funciones) disponibles en ENVI, incluida la compatibilidad con objetos vectoriales espaciales. También hay una gran cantidad de funciones y modelos desarrollados por la comunidad de usuarios. Una de las ventajas de aprender IDL es que lo hará comercializar en tiendas de detección remota "analíticas".

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

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

Las alternativas de Python NumPy y SciPy son flexibles pero no tan optimizadas como IDL y MATLAB. Como tal, debe ocuparse del 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 agregadas 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, proporciona acceso a metodologías estadísticas de vanguardia y multidisciplinar. 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 matrices de trama grandes. Pero aún así, R es lento cuando se trata de grandes problemas de memoria. El paquete BigMatrix permite escribir y procesar enormes arreglos 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 se produzca fuera de R en un software específico de GIS , que es como interactúo con el software GIS en estos días. Esto me permite aprovechar la funcionalidad en múltiples software sin salir de R.

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

A veces hay cosas que funcionan mejor en un software o idioma diferente. De vez en cuando 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, puede aplicarse a numerosas tareas y también proporciona disponibilidad de paquetes para análisis especializados, cuenta con una serie de recursos en línea gratuitos y es algo fácil de aprender.

    
respondido por el Jeffrey Evans 05.02.2014 - 00:03
15

Desde una perspectiva de detección remota, el principal beneficio de IDL es que extiende la capacidad de ENVI similar a cómo el paquete de sitios arcpy de Python amplía 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 base de soporte enorme.

Desde una perspectiva práctica, Python , R (código abierto) y MATLAB (comercial) son los idiomas más importantes para mi día a día. -Día trabajo basado en teledetección. Utilizo MATLAB para gran parte del procesamiento de imágenes digitales, Python para más tareas relacionadas con SIG y R para fines gráficos / 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 todo un éxito, mientras que IDL no lo es. Además, ¡ la NASA usa Python !

    
respondido por el Aaron 04.02.2014 - 22:33
2

Sugiero encarecidamente aprender 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 la CS le permitiría utilizar los lenguajes de programación de manera intercambiable. 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
  • coincidencia de patrones
  • paradigma procesal, modularidad

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

Si eres estudiante, recomiendo tomar cursos de comp sci de primer y segundo año.

Saludos.

    
respondido por el Jean B. 17.02.2014 - 21:10
1

Creo que vale la pena una respuesta por separado: esta es una página absolutamente genial para aprender a usar Python para la detección remota. Las notas de clase son un excelente tutorial: enlace

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

    
respondido por el Max 05.03.2014 - 08:13
0

realmente depende de los paquetes que espera utilizar en la detección remota (análisis de imagen). 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 idiomas. También consideraría C ++ y C, por lo que puede profundizar en algunas de las bibliotecas (es decir, GDAL). Si desea seguir con los paquetes comerciales disponibles (COTS), querrá ver más en los lenguajes C (C, C ++ y C #). Feliz codificación.

    
respondido por el Ryan Garnett 05.02.2014 - 06:39

Lea otras preguntas en las etiquetas