ArcGIS에서의 ENVI Toolbox

저는 ArcGIS를 사용할 줄 모릅니다. 요즘 세상에, ‘내 업무 분야는 여기까지’라고 선을 그을 수는 없겠지만, 아직 본격적으로 GIS 업무를 수행해 본 적은 없습니다. 그렇지만 ArcGIS의 Toolbox에 ENVI를 등록시켜서 ArcGIS 인터페이스에서 ENVI를 사용하도록 양사(ESRI와 Harris Geospatial Solutions)가 협력 관계가 된 것은 이미 오래된 이야기입니다. 저는 ArcGIS 라이선스가 없어 제 컴퓨터에서 직접 실행해 본 적은 없으나, 아래 …

Continue reading ‘ArcGIS에서의 ENVI Toolbox’ »

ENVI Deep Learning을 랩탑에서 실행하기

게임용 랩탑을 쓰지만, 실제 게임을 잘 하지 못하니 제 랩탑의 성능을 제대로 뽑아내지 못하고 있었던 것 같습니다. 시연을 위해 ENVI Deep Learning을 제 랩탑에서 돌리다 겪은 문제들을 돌아보니, 어쩌면 많은 분들이 겪을 수 있는 상황인 듯 하여, 공유하고자 합니다. 제가 겪은 문제들은 다행히, 아래 Harris Geospatial Solutions 의 Help 문서에 해결책들이 있었습니다. https://www.harrisgeospatial.com/Support/Self-Help-Tools/Help-Articles/Help-Articles-Detail/ArtMID/10220/ArticleID/23721/ENVI-Deep-Learning-training-error-CUDNN-STATUS-ALLOC-FAILED 제 랩탑은 …

Continue reading ‘ENVI Deep Learning을 랩탑에서 실행하기’ »

영상의 지도상 위치 확인(Google Earth와 ESRI Map)

최근에, 외국 손님들과 함께 ENVI를 이용한 위성영상 분석 작업을 수행해 보았습니다. 이 분야에서 활동하시는 분들이어서, 기본적인 ENVI 작업에 대해서 모두들 쉽게 받아들이시는 느낌(확증은 없습니다)을 받았습니다. 감정을 표현할 수 있는 의사 소통이 이루어지지는 못했지만, 저는 그렇게 느꼈습니다. 끝! 저는 현실적인 데이터를 다루어보겠다고, 우리나라의 지역을 촬영한 Landsat-8이나 Sentinel-2 영상을 준비하였고, 이러한 영상으로 한참 작업이 진행되고 있는데, 의외의 …

Continue reading ‘영상의 지도상 위치 확인(Google Earth와 ESRI Map)’ »

ENVI “Download Webdata”

뜬금없이 ENVI 5.5.2가 발표되었습니다. 버전의 세번째 자리는 사소한 업데이트와 버그 수정 위주로 올라갑니다. 라이선스와 관련해서는, 기존의 라이선스를 그대로 사용하게 되는 서비스팩입니다. 그래서 공식명칭은 ENVI 5.5 Service Pack 2 입니다. 이와 연계하여, IDL 8.7.2가 함께 발표되었는데요, 이 버전의 신기능 중에는 WIDGET_BROWSER 함수가 있습니다. IDL GUI 안에 웹브라우저를 포함하는 기능인데, 과거에는(10년도 넘은 얘기입니다) MS-Windows 운영체제에 한해, ActiveX …

Continue reading ‘ENVI “Download Webdata”’ »

투영좌표 변환 (TM과 UTM)

TM(Transverse Mercator) 좌표를 변환하다가, 숫자가 계속 안맞는 안타까운 경험을 했습니다. 정말 오랜만에 TM 좌표를 써 본 것인지, 그 사이 우리 법이 바뀐 것을 몰랐습니다.  결국 검색을 하다보니 어이없게도 단 한문장을 제가 그동안 모르고 살았습니다. 측량, 수로업무 및 지적에 관한 법률(2009.12.14)에 따라 TM 투영원점의 가산수치는 600,000/200,000이 적용됩니다. 남북방향의 가산수치(FALSE NORTHING)을 500,000이라고 믿고 있던 저는, 제 기억을 …

Continue reading ‘투영좌표 변환 (TM과 UTM)’ »

콜론 연산자와 인덱스 생성 함수

[0, 1, 2, 3, 4] 이와 같은 배열을 만드는 일은 IDL에서 매우 흔하게 발생하는 일입니다. IDL이 반복문을 쓰기 보다는 배열의 인덱스를 배열로 지정하여 처리하는 쪽을 독려하기 때문에, 그렇습니다. 예를 들면 이런 거죠.

이렇게 반복문을 써서 배열의 요소를 하나 하나 뽑아내기 보다는, 다음과 같이 쓰는게 IDL 스타일입니다.

여기서는 i 변수가 배열이고, x 라는 배열의 …

Continue reading ‘콜론 연산자와 인덱스 생성 함수’ »

GetTemporaryFileName() 으로 생성된 파일은 왜 자동으로 지워지지 않는가?

GetTemporaryFileName()은 ENVI 프로그래밍 예제에서 매우 많이 등장하는 메쏘드입니다. 그 이름이 주는 느낌 때문에, 임시파일 이름을 받아오는 기능이라고 생각하고, 임시파일이니까, ENVI를 닫으면 자동으로 지워지는 파일이 될 거라고 예상하기 쉽습니다. 오해입니다. 자동으로 지워지는 파일과 아무런 연관이 없습니다. 이 글의 제목이 질문인데요, 결론부터 말씀드리면, GetTemporaryFileName() 메쏘드는, Temporary Directory 에 쓸 파일의 이름을 자동으로 받아오는 것이지, ENVI가 관리하는 임시 …

Continue reading ‘GetTemporaryFileName() 으로 생성된 파일은 왜 자동으로 지워지지 않는가?’ »

WHERE 함수의 속사정

저는 IDL을 처음 접하시는 분들에게 WHERE를 소개할 때, OK = WHERE(조건문) 으로 소개합니다. 이렇게 하면 배열 중 조건에 부합하는 요소의 위치(WHERE)를 리턴값으로 준다고 말씀 드립니다. 거의 사실이죠. 당장은 느낌도 좋구요, 데이터베이스의 WHERE 문을 쓰는 기분으로 사용할 수 있기 때문에 저는 이렇게 설명을 드리는 방식을 선호했습니다. 다음과 같이 다섯개의 원(circle) 정보 중에 반경이 7보다 큰 원을 …

Continue reading ‘WHERE 함수의 속사정’ »

JULDAY(1, 9, 2017) – JULDAY(4, 16, 2014)+1 eq 1000

Julian Day는 하루에 1씩 증가하는 날짜 체계입니다. 어제의 이시각은 오늘 보다 1이 작고, 내일의 이시각은 오늘보다 1이 큽니다.  이 숫자의 셈이 기원전 4713년 1월 1일 정오를 Julian Day 0으로 정하여 카운트된다고 하지만, 기원전 4713년이란 기준을 기억하는 사람은 별로 없습니다. 거의 없습니다. 매우 무심한 숫자이고, 과학자들 말고는 사용하지도 않는 날짜입니다. 2017년 1월 9일이 Julian Day로 2457763 …

Continue reading ‘JULDAY(1, 9, 2017) – JULDAY(4, 16, 2014)+1 eq 1000’ »

minmax 함수, 그리고 일타이피

배열에서 최대값을 찾는 일은 배열 전체를 한번 훑어야 하는 일입니다. 최소값을 찾는 일도 배열 전체를 한번 훑어야 하는 일입니다. 그러지 않고서는 이 값이 최대값(또는 최소값)이라는 확신을 할 수 없을 테니까요. 여기에 어떤 신비로운 비법은 없습니다. 그런데, 배열에서 최대값과 최소값을 모두 알고자 한다면, 배열 전체를 두 번 훑어야 할까요? 그건 아닙니다. 한번만 스캔하면 최대값과 최소값을 다 …

Continue reading ‘minmax 함수, 그리고 일타이피’ »