원격 감지를위한 권장 프로그래밍 언어?


14

원격 감지 전문가로서 오랜 경력을 쌓을 수있는 연구를 시작하고 있습니다. 현재 일부 응용 프로그램에서는 ArcGIS와 협력하고 다른 응용 프로그램에서는 ENVI를 배우고 있습니다. 나는 프로그래밍 언어를 배우는 것이 필수적이며 IDL과 Python 사이의 선택에 직면하고 있음을 깨달았다. 나는 지표면 프로세스의 원격 감지를 위해 커뮤니티가 어떤 프로그래밍 언어를 권장하는지 듣고 싶습니다.

답변:


28

IDL은 환상적인 독립형 프로그래밍 언어입니다 (ENVI가 필요하지 않습니다). 큰 배열에서 매우 빠른 매트릭스 처리를 위해 특히 좋습니다. @Aaron은 IDL 사운드를 훨씬 유연하게 만듭니다. IDL 개발의 대부분은 물리 및 천문학 커뮤니티에서 나왔습니다. 수학 및 통계 프로그래밍에 대한 강력한 지원이 있습니다. ENVI와 함께 번들로 제공되는 경우 공간 벡터 객체 지원을 포함하여 ENVI에서 사용 가능한 모든 라이브러리 호출 (함수)이 있습니다. 또한 사용자 커뮤니티가 개발 한 많은 기능과 모델이 있습니다. IDL 학습의 한 가지 장점은 "분석"원격 감지 상점에서 마케팅 할 수 있다는 것입니다.

또한 ERDAS에는 매우 훌륭하고 배우기 쉬운 스크립트 언어 (EML)가 있다는 것을 잊지 마십시오. EML은 그래픽 모델러의 중추이며 gmd는 그래픽 모델러 인터페이스 아래에있는 패키지화 된 EML 스크립트입니다. EML을 직접 사용하는 이점은 for / while 루프를 사용할 수 있고 스크립팅 언어로 더 많은 ERDAS 기능에 액세스 할 수 있다는 것입니다.

MATLAB은 매트릭스 처리에도 매우 적합하며 유사한 벤치 마크와 구문이 정확히 동일한 오픈 소스 버전 (예 : 옥타브)이 있습니다. 이것은 상당한 힘을 가진 매우 유연한 언어입니다. 응용 수학 및 공학에서 선호하는 언어 중 하나입니다.

파이썬 대안 NumPy 및 SciPy는 유연하지만 IDL 및 MATLAB만큼 최적화되지 않았습니다. 따라서 대형 어레이를 다룰 때 주소 공간과 속도를 처리해야합니다. 파이썬의 큰 장점 중 하나는 다양한 분석 작업을 수행하기위한 추가 라이브러리입니다. 원격 감지 , 비모수 통계 , 공간 클래스 (예 : GDAL, LibLAS)에 대한 바인딩을 위한 패키지가 있으며 패키지를 통해 사용 가능한 추가 기능 중 일부만 지정할 수 있습니다.

이것은 우리를 R로 데려옵니다. 저는 주로 공간 통계 학자입니다. 이것이 나의 일상 언어입니다. 이용 가능한 패키지의 수는 엄청나고, 이는 최첨단 학제 간 통계적 방법론에 대한 액세스를 제공합니다. 그러나 큰 데이터 문제를 처리 할 때는 매우 번거 롭습니다. 공간 클래스가 훨씬 향상되고 있으며 대용량 데이터를 메모리에서 보유 할 수있는 래스터 패키지로 인해 이제 대형 래스터 배열을 사용하는 상당히 복잡한 통계 모델을 구현할 수 있습니다. 그러나 여전히 큰 메모리 문제를 처리 할 때는 R이 느립니다. BigMatrix 패키지를 사용하면 디스크에서 거대한 어레이를 작성하고 처리 할 수 ​​있지만 코딩 오버 헤드는 중요하지 않습니다. GDAL 및 GIS 소프트웨어 (예 : GRASS, SAGA)는 GIS 특정 소프트웨어에서 공간 객체 처리가 R 외부에서 발생할 수있게하므로 요즘 GIS 소프트웨어와 상호 작용하는 방식입니다. 이를 통해 R을 떠나지 않고도 여러 소프트웨어에서 기능을 활용할 수 있습니다.

따라서 소프트웨어 치어 리딩이 중단되었으므로 나의 권장 사항은 "위의 모든 옵션에 대한 예"입니다. 프로그래밍은 일단 배우면 다른 언어에도 쉽게 적용 할 수있는 기술입니다. C ++, R, IDL과 Python 사이에는 놀라운 유사점이 있습니다. 코딩 고유 특성 외에, 주어진 모델 / 태스크를 구현할 수있는 기능이 무엇인지 배워야합니다. 이 작업이 완료되면 일반적인 코딩 구조를 구현하는 구문 문제 일뿐입니다.

때로는 다른 소프트웨어 나 언어에서 더 잘 작동하는 것이 있습니다. 주어진 작업에 가장 적합한 선택이기 때문에 가끔 FORTRAN 또는 C ++로 코드를 작성합니다. 적응성의 문제입니다. 스크립팅 언어로서 다양한 작업에 적용 할 수 있으며 특수 분석을위한 패키지의 가용성을 제공하고 많은 무료 온라인 리소스를 가지고 있으며 배우기가 다소 쉽기 때문에 Python으로 시작할 수 있습니다.


나는 글이 잘 작성되어 있고 반응이 좋았을뿐만 아니라 (Fortran :-으로 가끔씩 돌아 오는 것을 포함하여) 비슷한 경험을했으며 이러한 언어와 응용 프로그램 환경에 대해 비슷한 결론을 내 렸습니다.
whuber

+1 사용 가능한 도구를 요약 한 것입니다. EML을 언급 해 주셔서 감사합니다. 스크립팅 관점에서 EML은 Python (IMOP)에 비해 약간 복잡하지만 Erdas가 선택한 RS GUI 인 경우 매우 유용합니다. 불행히도 GIS와 RS를 최대한 활용하는 통일 된 언어는 없습니다. 본인은 각 개인이 최선의 방법을 사용해야하며 다양한 언어를 사용해야한다는 데 동의합니다. 한 언어 RS 전문가는이 분야에서 드물다.
Aaron

파이썬으로 시작하는 것이 오픈 소스이고 많은 온라인 리소스가 있다는 사실을 감안할 때 내 최선의 방법이라고 생각합니다. ENVI에 액세스 할 수 있지만 현재 연구를 위해 IDL을 몰라도 관리 할 수 ​​있습니다. 공간 통계도 연구하고 있으므로 R도 중요합니다. @Aaron이 옳은 것 같습니다. RS 전문가는 다국어를 사용해야합니다! 자세한 답변에 다시 한번 감사드립니다. 이것은 실제로 현장에서 시작하는 누군가에게 큰 도움이됩니다.
Emily

@Emily, Python의 공간 통계는 PySAL 패키지 ( geodacenter.asu.edu/pysal )를 살펴보십시오 . Kenneth Bowman의 저서 인 "IDL을 사용한 프로그래밍 소개"는 꽤 일반적인 소개입니다. 이 책 하나만으로도 당신이 얼마나 멀리 갈 수 있을지 놀랄 것입니다. 내가 언급했듯이, 많은 구문과 코딩 구조는 언급 된 언어들 사이에서 유사하므로 시간 낭비가 없습니다. ENVI로 작업하고 있으므로 IDL에 대한 기본 지식이 연구에 도움이 될 것입니다. 주어진 언어의 전부 또는 전부는 아닙니다.
Jeffrey Evans

이 게시물은 좋은 요약입니다-내 경험에 추가 된 내용 : ArcGis, Envi, Matlab 및 기타 도구의 높은 가격을 고려할 때 무료 인 OpenSource를 선호합니다. 나에게 Python / gdal과 QuantumGIS의 조합은 완벽하게 작동합니다. 내 직장의 다른 사람들은 Matlab을 사용하지만 매우 비쌉니다. 내 주변에서 R은 어떤 이유로 생물 학자에 의해 주로 사용되는 것 같습니다.
Max

15

원격 감지 관점에서 IDL의 주요 이점은 Python arcpy 사이트 패키지가 ArcGIS의 기능을 확장하는 방식과 유사하게 ENVI 의 기능을 확장한다는 것입니다. ENVI 플랫폼에 액세스 할 수없는 경우 다른 프로그래밍 언어를 배우십시오. 또한 IDL은 상용 제품이지만 Python은 오픈 소스이며 큰 지원 기반을 가지고 있습니다.

실용적인 관점에서, Python , R (오픈 소스) 및 MATLAB (상업용)은 일상적인 원격 감지 기반 작업에 가장 중요한 언어입니다. 나는 많은 디지털 이미지 처리를 위해 MATLAB을 사용하고, 더 많은 GIS 관련 작업을 위해 Python을, 그래픽 / 분석을 위해 R을 사용합니다.

마지막으로, 모든 노력을 하나의 언어에 집중해야한다면, 파이썬 기반 기능은 RS 기반 기능 외에 GIS 관련 처리에 훨씬 더 적합하기 때문에 주로 파이썬을 배우려고합니다. 다시 말해서, 파이썬은 모든 거래의 대가 인 반면 IDL은 그렇지 않습니다. 게다가 NASA는 Python을 사용합니다 !


1
파이썬에는 pyh5 및 numpy / scipy와 같은 많은 모듈이 있습니다. 특히 이미지 처리를 위해 OSSIM 과 같은 더 큰 라이브러리가 있습니다 .
Roland

1
파이썬에서 +1. 그것은 범용 언어이며, GIS 스크립팅과 함께 사용 가능한 도구를 사용해야 할 경우, 파이썬이이를 수행 할 수 있습니다.

고마워요, 파이썬 작업을 시작하고 다른 언어로 확장하면 다른 언어로 확장되는 것처럼 들립니다. 도와 주셔서 감사합니다.
Emily

1
Rasterio : github.com/mapbox/rasterio를 잊지 마십시오 . Python 용 래스터를위한 새로운 라이브러리입니다.
Alex Leith

2

하나의 절차 적 언어에 중점을 두지 않고 기본적인 컴퓨터 과학 이론을 배우는 것이 좋습니다. CS 이론의 기초를 습득하면 프로그래밍 언어를 서로 바꾸어 사용할 수 있습니다. 나는 매일 2 ~ 3 개의 언어를 사용하여 코드 (대부분 Matlab, R, Python)를 작성하고 지난 달에는 VB, BATCH 및 EASE (PCI Focus)로 코드를 작성했습니다.

여러 언어를 쉽게 배울 수있을뿐만 아니라 기본적인 실수를 피하는 것이 중요합니다.

몇 가지 권장 주제는 다음과 같습니다.

  • 데이터 유형, 메모리 사용량
  • 정황
  • 되풀이
  • 패턴 매칭
  • 절차 적 패러다임, 모듈성

또한 코드 작성에 문제가있는 경우 한 걸음 물러서 의사 코드를 작성하십시오. 기본적으로 코드의 논리와 원하는 것을 단계별로 작성하십시오.

당신이 학생이라면 1 학년과 2 학년 comp sci 과정을 수강하는 것이 좋습니다.

건배.


2

나는 이것이 별도의 답을 얻을 가치가 있다고 생각합니다 : 원격 감지를 위해 Python을 사용하는 방법을 배우는 데 절대적으로 훌륭한 페이지는 강의 노트입니다 .http : //www.gis.usu.edu/~chrisg/python / 2009 /

저에게 Python과 QuantumGIS의 조합은 모든 원격 감지 및 GIS 요구를 해결합니다.


0

원격 감지 (이미지 분석)에 사용하려는 패키지에 따라 다릅니다. ArcGIS (ESRI)는 원격 감지 패키지가 아닙니다. 오픈 소스 패키지를 사용하려면 Python과 R이 훌륭한 언어라는 데 동의합니다. 또한 C ++과 C도 고려하므로 일부 라이브러리 (예 : GDAL)에 대해 자세히 살펴볼 수 있습니다. 상용 상용 선반 (COTS) 패키지를 고수하려면 C 언어 (C, C ++ 및 C #)를 더 자세히 살펴보고 싶을 것입니다. 행복한 코딩.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.