라벨이 Code Snippet인 게시물 표시

[ArcObjects] Layer와 Feature Class/Table의 필드 별칭 설정

이미지
▣ 미션  - ArcMap에서 아래 그림과 같이 테이블과 속성정보 조회시 영문필드에 한글필드로 별칭을 보여주고 싶다. - 면적 등과 같이 Numeric 필드일 경우 소숫점 2째자리까지만 보여주고 천단위 구분자를 두고싶다. - GeoDatabase(Personal, File, ArcSDE)에서 레이어를 불러올 경우 한글별칭을 기본값으로 사용하고 싶다. ▣ 설명  - Layer의 필드정보는 Feature Layer 수준, FeatureClass, Table의 필드정보는 GeoDatabase 수준에서 변경.  - 따라서 FeatureClass, Table의 필드정보 변경은 물리적으로 저장되고 Layer의 필드정보는 ArcMap과 같이 Application 내에서만 임시 적용됨.  - FeatureClass에 이미 한글별칭이 적용되어 있더라도 Application에서 실시간 조인이 이루어지는 경우는 별칭이 적용되지 않을 수 있음. ▣ ArcObjects Interface  - INumberFormat  - ITableFields  - IFieldInfo  - IClassSchemaEdit  - ISchemaLock ▣ Code Snippet using System . Runtime . InteropServices ; using ESRI . ArcGIS . esriSystem ; using ESRI . ArcGIS . Geodatabase ; using ESRI . ArcGIS . Carto ; ■ 필드이름과 매칭되는 Alias 정보 생성 System . Collections . Hashtable FieldAliasTable = new System . Collections . Hashtable ( ) ; public void AddFieldAlias ( ) { FieldAliasTable . A...

[ArcObjects]How to identify on a map layer

▣ ArcObjects Interface  - IIdentify ▣ Code Snippet using ESRI . ArcGIS . Carto ; using ESRI . ArcGIS . Display ; using ESRI . ArcGIS . Geometry ; using ESRI . ArcGIS . Geodatabase ; using ESRI . ArcGIS . esriSystem ; ■ Identify on a map public static void IdentifyMap ( IMap focusMap , IPoint mapPoint ) { if ( focusMap . LayerCount = = 0 ) return ; ESRI . ArcGIS . esriSystem . UID uid = new UIDClass ( ) ; uid . Value = " {6CA416B1-E160-11D2-9F4E-00C04F6BC78E} " ; IEnumLayer enumLayer = focusMap . get_Layers ( uid , true ) ; enumLayer . Reset ( ) ; ILayer layer = enumLayer . Next ( ) ; while ( layer ! = null ) { if ( layer . Valid && layer . Visible ) { IdentifyLayer ( focusMap , layer , mapPoint ) ; } layer = enumLayer . Next ( ) ; } } ■ Identify on a layer static void IdentifyLayer ( IMap focusMap , ILayer layer , IPoint mapPoint ) { boo...

[ArcObjects]GRID VAT(Value Attribute Table) 활용

이미지
ArcGIS의 Grid 포맷을 사용할 때 Integer Grid일 경우 아래 그림과 같이 테이블을 열어 조작할 수 있습니다. 다음은 Grid의 VAT(Value Attribute Table)를 C# 코드에서 활용하는 예제입니다.  - VAT에 필드 추가하기  - VAT에 셀값의 면적 계산하기 ▣ Sample Integer GRID ▣ ArcObjects Interface  - IGridTableOp ▣ Code Snippet using System ; using ESRI . ArcGIS . Geodatabase ; using ESRI . ArcGIS . DataSourcesRaster ; using ESRI . ArcGIS . GeoAnalyst ; ■ VAT에 필드 추가하기 public static bool AddVatField ( IRaster raster , string fieldName , esriFieldType fieldType , int fieldLength ) { IRasterBandCollection bandCol = ( IRasterBandCollection ) raster ; IRasterBand band = bandCol . Item ( 0 ) ; bool hasTable = false ; band . HasTable ( out hasTable ) ; if ( hasTable ) { ITable attTable = band . AttributeTable ; if ( attTable . FindField ( fieldName ) ! = - 1 ) { return true ; } IField newField = new FieldClass ( ) ; IFieldEdit fieldEdit =...

[GeoTools]GridCoverage Statistics

GeoTools 에서 GridCoverage(Raster)의 단순통계를 계산하는 Java 샘플 코드입니다.  - JAI의 RectIter 인터페이스를 이용하여 계산  - AWT의 RenderedImage인터페이스를 이용하여 계산  - 단일 밴드에 대한 샘플입니다. ▣ Code Snippet import java . awt . image . Raster ; import java . awt . image . RenderedImage ; import java . text . DecimalFormat ; import javax . media . jai . PlanarImage ; import javax . media . jai . iterator . RectIter ; import javax . media . jai . iterator . RectIterFactory ; import org . geotools . coverage . grid . GridCoverage2D ; import org . geotools . coverage . grid . GridEnvelope2D ; ■ JAI(Java Advanced Imaging): RectIter Interface static void calculateStatistics1(GridCoverage2D inputGc) { int count = 0 ; double minVal = Double . MAX_VALUE ; double maxVal = Double . MIN_VALUE ; double sumOfVals = 0.0 ; double sumOfSqrs = 0.0 ; double noDataValue = ( Double ) inputGc . getProperty ( "GC_NODATA" ) ; PlanarImage renderedImage = ...

[ArcObjects]Raster Statistics & RasterCursor

ArcObjects에서 RasterDataset의 단순통계를 계산하는 C# 샘플 코드입니다.  - IRasterStatistics 인터페이스를 이용하여 계산  - IRasterCursor 인터페이스를 이용하여 계산, 이 코드에서는 Raster cursor를 이용해서 raster dataset의 pixel data에 어떻게 접근하는지도 잘 살펴 보시기 바랍니다. ▣ Code Snippet ■ Reference using System ; using System . Diagnostics ; using ESRI . ArcGIS . Geodatabase ; using ESRI . ArcGIS . DataSourcesRaster ; ■ IRasterStatistics void RasterStatistics1 ( IRasterDataset2 inputRasterDs , int bandIndex ) { // Create a raster. IRaster2 inputRaster = ( IRaster2 ) inputRasterDs . CreateFullRaster ( ) ; IRasterBandCollection bands = ( IRasterBandCollection ) inputRaster ; IRasterBand rasterBand = bands . Item ( bandIndex ) ; // Get statistics IRasterStatistics rs = rasterBand . Statistics ; Debug . WriteLine ( string . Format ( " RasterDataset Path = {0} " , inputRasterDs . CompleteName ) ) ; Debug . WriteLine ( string . Format ( " Minimum = {0} " , rs . Minimum ) ) ...