[ArcObjects]Define Projection...VBA

ArcToolBox의 Define Projection 은 하나의 레이어를 대상으로 하기때문에.. 여러개의 레이어를 한번에 Define 할수 있는 VBA 입니다. FeatureClass를 대상으로 하지만 IGeoDataset 인터페이스를 사용함으로 코드를 조금수정하면 Raster도 같은 방법으로 할수 있습니다. Public Sub DefineProjection() Dim sPrjPath As String sPrjPath = "C:\XXXXXXX.prj" Dim pSR As ISpatialReference Dim pSRS As ISpatialReferenceFactory2 Set pSRS = New SpatialReferenceEnvironment Set pSR = pSRS.CreateESRISpatialReferenceFromPRJFile(sPrjPath) Dim pDoc As IMxDocument Dim pMap As IMap Set pDoc = ThisDocument Set pMap = pDoc.FocusMap Dim pLayers As IEnumLayer Set pLayers = pMap.Layers Dim pLyr As IFeatureLayer Set pLyr = pLayers.Next Dim pFClass As IFeatureClass Dim pGeoDS As IGeoDataset Dim pGeoDsSchemaEdit As IGeoDatasetSchemaEdit Do While Not pLyr Is Nothing Set pFClass = pLyr.FeatureClass Set pGeoDS = pFClass Set pGeoDsSchemaEdit = pGeoDS Call pGeoDsSchemaEdit.AlterSpatialReference(pSR) Set pLyr = pLayers.Next Loop MsgBox "Success~!!" End Sub

OSGeo(Open Source GeoSpatial) 한국어 지부 홈페이지

이미지
OSGeo 한국어지부의 홈페이지가 개설되었습니다. 이곳에서는 OSGeo 한국어 지부와 오픈 소스 GIS 관련 정보를 제공합니다. ◎  OSGeo 한국어지부의 홈페이지  -->  http://osgeo-kr.tistory.com/ ◎  OSGeo 한국어지부 메일링리스트  -->  http://groups.google.com/group/osgeo-kr

스포츠정신 랜스 암스트롱

[원문출처: 풋살레볼루션 ]

[ArcObjects] Feature를 X, Y Offset만큼 이동하는 VBA 스크립트

이미지
▣ 미션  - ArcGIS를 사용하여 아래 그림과 같이 레이어의 모든 피쳐를 X 축의 방향으로 dX 만큼, Y 축의 방향으로 dY 만큼 이동하고 싶습니다. ▣ ArcObjects  ITransform2D .Move Method [이미지출처:  http://help.arcgis.com/en/sdk/10.0/arcobjects_net/componenthelp/index.html#/Move_Method/002m000003w4000000/ ] ▣ VBA Script  - Feature의 Geometry를 X, Y Offset만큼 이동  - Undo/Redo가 가능하도록 Editor를 사용  - 따라서 정상적으로 편집이 되었을 경우 Editor 툴바에서 저장할 것 Option Explicit Sub MoveGeometry ( ) ' get map Dim ipDoc As IMxDocument Dim focusMap As IMap Set ipDoc = ThisDocument Set focusMap = ipDoc . focusMap ' get featurelayer Dim featureLayer As IFeatureLayer Set featureLayer =  focusMap.Layer(0) ' start editing Dim pID As New esriSystem . UID pID . Value = "esriEditor.Editor" Dim editor As IEditor Set editor = Application . FindExtensionByCLSID ( pID ) If ( editor . EditState < > esriStateEditing ) T...

[ArcObjects] ArcObjects에서 필드의 통계정보 계산하기

ArcObjects에서 필드의 통계정보를 계산하는 IDataStatistics라는 인터페이스가 있습니다. 아래 C# 코드는 다음과 같습니다.  - IDataStatistics 인터페이스를 이용하여 하나의 필드를 계산  - ICursor 인터페이스를 이용하여 하나의 필드를 계산  - ICursor 인터페이스를 이용하여 여러 필드를 계산 ▣ ArcObjects   IDataStatistics ▣ Code Snippet using System ; using System . Diagnostics ; using ESRI . ArcGIS . Geodatabase ; using ESRI . ArcGIS . esriSystem ; using System . Collections . Generic ; ○  IDataStatistics 인터페이스를 이용하여 하나의 필드를 계산 public static void DataStatistics ( ) { IFeatureClass featureClass = OpenShapefile ( shapefilePath ) ; string fieldName = " POP2008 " ; IQueryFilter queryFilter = new QueryFilterClass ( ) ; queryFilter . SubFields = fieldName ; ICursor cursor = ( ICursor ) featureClass . Search ( queryFilter , true ) ; IDataStatistics dataStatistics = new DataStatisticsClass ( ) ; dataStatistics . Field = fieldName ; dataStatistics . Cursor = cursor ; ...

다양한 포맷을 지원하는 .NET C#용 GIS Viewer 프로그램 만들기

이미지
간단한 GIS Viewer 프로그램을 하나 만들면서 진행한 과정입니다. ▣ 미션  - WPS 결과물(Vector, Raster, Geometry)을 시각화하는 프로그램  - Vector = Shaepfile, GML2, GML3 등  - Raster = GeoTiff, Jpeg2000 등  - Geometry = GML, WKT, WKB, GeoJSON, KML 등 ▣ 요구사항  - Visual Studio 2008 C# .NET Framework 2/3.5 환경  - WPS 결과물로 리턴되는 다양한 GIS 포맷을 읽을 수 있어야 함  - 이미 만들어진 프로그램에 Map Control 2개만 들어가야 함 - Shapefile, Grid, Graphic 등을 사용자가 설정한 스타일에 맞게 렌더링  - 자체 뷰어를 만들기보다 오픈소스나 무료로 사용가능한 라이브러리 검토 ▣ 오픈소스 및 라이브러리 검토  ○ 검토대상 라이브러리     - MapWindow6     - SharpMap V2      - 김형준 GIS 연구소 (for Developers) - DuraMap-Xr  ○ 포맷변환  - GDAL/OGR CSharp bindings  ○ 검토결과  - MapWindow6, SharpMap 등은 .NET Framework4에서만 운영되며기본 포맷 외 확장 포맷 변환은 GDAL/OGR 라이브러리 사용 - 대상에서 제외  - 포맷 변환은 GDAL/OGR 사용  - DuraMap-Xr은 COM 기술로 제작되어 .NET Framework 제약을 받지 않음  - DuraMap-Xr은 Shapefile, Graphic(Geometry), GeoTiff 등을 직접 읽을 수 있음  - DuraMap-Xr의 ...

[ArcObjects] Join Data & Export Layer Code Snippet

이미지
레이어와 속성테이블간의 조인 후 데이터 내보내기 코드 샘플입니다. 일반적으로 ArcMap에서 위와 같이 테이블 조인 후 레이어 내보내기를 하려면 아래와 같이 3 단계를 그치면 됩니다. ▣ ArcGIS for Desktop - ArcMap 1. Join Data 2. Export Data 3. Remove joins ▣ Custom Interface 위 3 단계를 다음과 같은 인터페이스를 만들어 조인 후 데이터 저장하는 기능을 한번에 제공할 수도 있습니다. ▣ C# Custom Code  레이어와 테이블간 조인 후 내보내기하는 코드는 아래와 같습니다. 아래 코드는 ESRI.ArcGIS.GeoDatabaseUI의 IExportOperation 인터페이스를 사용하므로 ArcGIS Desktop에서만 사용가능합니다.  - 주요 인터페이스  : IMemoryRelationshipClassFactory , IDisplayRelationshipClass, IExportOperation using System ; using ESRI . ArcGIS . esriSystem ; using ESRI . ArcGIS . Geodatabase ; using ESRI . ArcGIS . GeoDatabaseUI ; using ESRI . ArcGIS . Carto ; using GeoSpatial . ArcGIS . Core ; namespace ArcGIS . Utility { class JoinExporter { public IFeatureClass ExportJoinLayer ( IFeatureLayer featureLayer , String primaryKey , ITable joinTable , String foreignKey , esriRelCardinality re...