- This topic has 2개 답변, 2명 참여, and was last updated 10 years, 1 month 전에 by Hyun Woo Kim.
-
글쓴이글
-
-
안녕하세요. 옛날 IDL 6x/ENVI 4x 시절 사용자인데, 한 2년 다른 일을 하다가 직장을 새로 옮기게 되어 다시 IDL/ENVI 의 세계(!!!)로 돌아온 김 현우라고 합니다.
옛날에 쓰다가 묵혀두었던 소스 코드를 복습하는 의미에서 다시 꺼내어 새 버전의 IDL/ENVI 로 돌려보며 이것저것 둘러보니 도끼자루 썩는 줄 모르겠습니다… 그.러.나.
당연한 결과이긴 하겠지만 바로 에러가 뜨네요.
MODIS Land product의 sinusoidal projection 을 우리나라의 TM 좌표계로 변환시키는 코드인데요.
문제의 syntax는 다음과 같습니다.
map_info=ENVI_MAP_INFO_CREATE(type = 16, name=Projection_Name1, params=params1, $
UNITS = units, MC = mc, PS = ps)실행을 시켰더니 이런 에러 메시지가 뜹니다.
map_info=ENVI_MAP_INFO_CREATE(type = 16, name=Projection_Name1, params=params1, $
^
% Syntax error.그래서 도움말로 가봤더니… 제일 먼저 이런 문장이 있네요.
“This routine has been replaced with the CreateRasterSpatialRef method to ENVI. Also see the WriteMetaData method to ENVIRaster, and the SPATIALREF_OVERRIDE keyword in various methods.”
음 그럼… 결국 새 버전에서는 이 루틴이 없어졌으니 createrasterspatialref 로 다시 짜라는 얘기인가요? 그게 아니라면 대안이 있을까요? (classic 으로 다시 해 보는 건 왠만하면 안하고 싶네요. 왠지 새 술은 새 부대에 담으라는 말이 생각나서요… ㅋㅋㅋㅋㅋ)
답변 부탁드리겠습니다.
-
Jonghyuk회원
ENVI New Interface가 나오면서 기존의 ENVI routine 들도 New API로 대체되고 있는 중입니다. 더 편해진 면이 있겠지만 아직 많은 부분이 Classic API에 의존해야 합니다.
ENVI Classic은 그대로 (업데이트가 되진 않더라도) 지속될 것이고, Classic API도 여전히 그대로 지원됩니다.
다만, 올려주신 함수 ENVI_MAP_INFO_CREATE()가 예전에는 문제 없이 컴파일이 되었는지 제가 잘 모르겠습니다. 저는 평소 사용하던 함수는 아닙니다. 어쨌든 지금 해보니 Syntax Error가 나오는데, 새 루틴으로 대체되었기 때문은 아닐 거라고 생각합니다. 기존 ENVI Classic의 기능을 없애거나 하는 작업은 하지도 않았고 계획도 없습니다. ENVI New와 ENVI Classic이 함께 존재하는 상태입니다.
해결은 일단 이렇게 하시면 됩니다.
envi, /restore
를 커맨드에서 실행하셔서 IDL에게 ENVI API를 모두 인식시킵니다.그 이후에 컴파일을 하니 문제 없이 진행이 되는 것 같습니다.
-
아, 역시! 포스는 여전 하시군요… ㅎㅎㅎ 잘 해결되었습니다. 감사합니다. ^^
-
-
-
글쓴이글