[ArcObjects]Workspace의 모든 FeatureClass를 지도에 추가하기

다음은 ArcObjects에서 IWorkspace에 포함된 모든 레이어(일반적으로 IFeatureClass)를 지도에 추가하는 코드 샘플입니다. C#으로 작성되었으며, 개념만 확인하세요... 핵심 코드는 IEnumDataset  enumDataSet = srcWorkspace.get_Datasets(esriDatasetType.esriDTAny); 입니다. ▣ IFeatureClass로부터 IFeatureLayer를 생성하는 함수 private IFeatureLayer CreateFeatureLayer ( IFeatureClass srcFc , string layerName , bool isVisible ) { IFeatureLayer featureLayer = new FeatureLayerClass ( ) ; featureLayer . FeatureClass = srcFc ; featureLayer . Visible = isVisible ; if ( string . IsNullOrEmpty ( layerName ) ) { featureLayer . Name = srcFc . AliasName ; } else { featureLayer . Name = layerName ; } return featureLayer ; } ▣ IWorkspace의 모든 FeatureClass를 IMap(지도)에 추가하기 여기에서 IWorkspace는 SDE Workspace뿐만 아니라 Shapefile, File GeoDatabase 등의 FeatureWorkspace를 모두 포함합니다. private void AddAllFeatuerClassToMap ( IMap srcMap , bool layerVisible , IWorkspace srcWorkspace ) { IFeatureL...

[foursquare]100일째 기념

이미지
요즘 foursquare 를 즐기고 있습니다. ^^ 오늘이 제 셋째 딸 100일임과 동시에 foursqure 사용일도 100일째 되는 날입니다. 하루하루 빠뜨리지 않고 사용해서 언젠가 제 딸에게 계정을 승계(?)할 생각입니다. ㅎㅎ 어제는 주간 서울 순위( 편집왕 님의 [2010.10.01~10.17] 포스퀘어 Seoul 지역 순위표 (Leaderboard) )에서 12위에 올랐네요 foursquare가 궁금하신 분은 여기에 들러 보세요. ▣ 어라님의 포스퀘어 한국 사용자그룹 ▣ 편집왕의 포스퀘어 따라잡기 (Seize the Foursquare) ▣ 제 포스퀘어 웹 : http://foursquare.com/user/mapplus ▣ 기념 스크린샷

세종대학교 도시공간정보사업단에 다녀와서

금요일 세종대학교 도시공간정보사업단에서 OGC 공간정보 표준 웹 프로세싱 서비스( WPS )에 관한 최신동향 및 질의응답 시간을 가졌습니다. WPS 분야의 선구자 역할을 담당하고 있는 52°North 의 Bastian Schaffer(OGC WPS Standard Working Group Chairman)님 및 염재홍 교수님께서 다양한 조언을 해 주셨습니다.   기술적인 문제는 제외하고 "문화적 차이"에 대한 일화 2가지만 소개할까 합니다. Open Source 사용에 대해 얘기 나누다가 질의에 대한 답이 참 와 닿았습니다.   다음은 "속도"문제에 대한 Bastian Schaffer 답변입니다.   1. 혹시 응급 시스템인가요?   2. 처리 시간이 길어 지면 그 사이 다른 일도 할 수 있고...   빨리빨리만 외치는 우리 나라에서 이런 생각을 가질 수 있을까요?   혹시 GIS 업계에 계신분들 OGC WPS 및 52°North에 관심 있으신 분들은 다음 메일링 리스트에 가입해 보세요... Geoprocessing mailing list   끝으로, 뜻깊은 자리 마련해 주신 염재홍 교수님, 김승용 소장님! 초청해 주셔서 정말 감사합니다.

ArcSDE 관련 문제해결

문제발생  : 기존 사용자(아래 예에서는 BASEMAP)의 테이블스페이스, 데이터 파일, 사용자를 오라클에서 물리적으로 삭제 후 새로 BASEMAP 사용자를 생성한 상태에서 ArcCatalog 등에서 피쳐클래스 및 테이블을 업로드 할 경우 이미 테이블이 있다고 나오는 경우  : 이는 SDE 시스템 테이블에 기존 데이터 정보가 남아 있어서 발생하는 오류이며 아래 순서대로 관련 테이블의 BASEMAP 사용자 관련 테이블 정보를 삭제하면 됨   1. SQL/PLUS 등에서 SDE 유저로 접속 2. SDE 시스템 테이블은 지오데이터베이스로 관리하는 GDB_*로 시작하는 테이블 및 SDE 관리테이블(LAYERS, SPATIAL_REFERENCES 등)이 있습니다.  : 수정 대상 테이블은 다음과 같으며 하나씩 확인해 가면서 수정하세요.  : UI 도구를 사용한다면 되도록이면 수정 전에 테이블에 어떤 내용이 들어 있는지 확인해 보세요. ArcSDE 테이블 이해에 도움이 됩니다. : 만약 버저닝을 사용하면 더 많은 테이블이 관련되어 있습니다. 자세한 내용은 다음을 참고하세요 : System tables of a geodatabase stored in Oracle 3. 테이블 수정 내용 ▣ LAYERS  : SELECT COUNT(*) FROM LAYERS WHERE OWNER = 'BASEMAP';  : 갯수가 0개 이상이면 다음을 수행  : DELETE FROM LAYERS WHERE OWNER = 'BASEMAP';   ▣ GEOMETRY_COLUMNS  : SELECT COUNT(*) FROM GEOMETRY_COLUMNS WHERE F_TABLE_SCHEMA = 'BASEMAP';  : 갯수가 0개 이상이면 다음을 수행  : DELETE FROM GEOMETRY_COLUMNS WHERE F_TABLE_SCHEMA = 'BASEMAP'; ▣ COLUMN_REGIS...

수치지도 Ver.2.0(NGI 포맷)의 변환 및 활용 2

이미지
지난 시간에 수치지도 Ver 2.0(NGI 포맷, 국토지리정보원 내부포맷)에 대해서 간략히 살펴보았습니다. 앞서 살펴보았듯이 NGI 포맷의 변환 도구들을 쉽게 구할 수 없습니다. 여기에서는 ArcObject를 활용하여 Custom Plug-in Data Source를 구현했습니다. 일반적으로 ArcObject에서 Custom Data Source를 구현하는 방법 은 3가지로 알려져 있으니 한번 확인해 보시기 바랍니다. 1. 구현 환경 - Microsoft Visual Studio 2008 Visual C# 및 .NET Framework 3.5 - ArcGIS Engine Developer Kit 9.3 2. 제약사항 - NGI 및 NDA, 즉 ASCII 포맷만 지원 - NGI 데이터에 읽기전용만 지원 - ArcGIS Desktop이나 ArcGIS Engine 9.3 이상에서 지원하며 반드시 .NET Support 옵션을 설치해야 함 - 국토지리정보원에서 제공하는 샘플 데이터 및 기타 샘플 데이터에서만 테스트 했으므로 다양한 환경에서의 테스트를 못함 - NGI 포맷에서 TEXT(주기) 유형은 포인트(Point)로 인식하도록 설정 - 만약 NGI(공간데이터)만 포함되어 있고 NDA(속성데이터)가 없을 경우에도 확인 및 불러오기 등이 가능하나 변환시 속성정보는 포함하지 않음 3. 향후 일정 - 내보내기 일괄작업을 위한 도구 제공  : 대량의 NGI 파일 레이어 분류 후 Merge 등  : 내보내기 일괄작업을 위한 UI - 속도 개선  : 현재 그리기할 때 마다 파일 읽기 --> 캐쉬적용 - 기타 버그 수정 4. 프로그램 다운로드 및 라이센스 ▣ 라이센스 공지 - 상업적 이용을 제외한 아무나 사용 가능하며, 사용상 오류에 대한 어떤 책임도 없음을 밝혀둡니다. - 이 프로그램은 이 블로그에서만 배포될 수 있으며, 업데이트 역시 이 블로그를 통해서 이루어집니다. ▣ 프로그램 다운로드 NgiPluginForArcGIS93_Setup_201...

[foursquare]Where Do You Go

이미지
foursquar e에서 내가 체크인한 장소를 활용한 heatmap 서비스입니다. foursquare 사용자라면 홈에 가서 다양한 App들을 활용해 보실 수 있습니다. 전 조만간 월별/시간대별로 SpiderMap 같은 지도를 만들어 보려고 합니다. 아마 이미 App들이 있을 지도 모르겠네요... 1. URL Where Do You Go 2. 활동반경

KLIS 지적 및 주제도 코드 설명

이미지
KLIS(한국토지정보시스템)에서 제공하는 지적도 및 주제도의 Primary Key에 대한 설명입니다. ▣ 토지코드(19자리)  - 지적도 및 개별공시지가(토지특성) 테이블 등 필지의 Unique ID  - 지적도(연속/편집)에서는 PNU, 개별공시지가(토지특성)에서는 LAND_CD 등의 필드 이름으로 사용  - 필드 구성   : 시도(2)+시군구(3)+읍면동(3)+리(2)+필지구분(1)+본번(4)+부번(4) - 참고설명 :  필지구분: 1(일반), 2(산) ▣ 용도지역지구관리코드(33자리)  - 각종 용도지역지구(KLIS에서 LT_*로 시작하는 주제도)주제도의 Unique ID  - MNUM이라는 33자리의 필드로 사용  - 필드 구성   : 지정권자(7) + 시도코드(2) + 시군구코드(3) + 고시년도(4) + 고시번호(4) + 용도지역지구코드(6) + 도면표시번호본번(4) + 도면표시번호부번(3) ▣ 참고: KLIS 레이어의 일반적인 구성  - KLIS의 GIS 레이어는 크게 지적도(LP*), 주제도(LT*), 지형도(LB*)로 구성  - LP = LMIS Parcel, LT = LMIS Thematic, LB = LMIS Base Layer를 의미  - Geometry 유형은 폴리곤(A-Area), 라인(L-Line), 포인트(P-Point), 주기(T-Text)로 구분  - 지형도 관련 레이어 : LB10_*, LB50_*로 시작하는 레이어  : LB10_BT_NAME(1:1,000 지형도의 건물레이어 중 주기, BT = Building Text)  : LB50_RL_ROAD(1:5,000 지형도의 도로레이어 중 도로경계, RL = Road Line)  : LB50_BA_BLDG (1:5,000 지형도의 건물레이어 중 건...