라벨이 ArcGIS인 게시물 표시

Clipping Contest 후기

이미지
약 한달전 FOSS4G 분야를 뜨겁게 달구었던 이슈가 하나 있었다. 바로 대용량 데이터 Clipping Contest! 다양한 상업 및 오픈소스 GIS 프로그램들이 참여(?)했으며, 수많은 댓글이 달렸다. 자세한 내용은 아래 참조 사이트들을 방문해 보면 된다. ESRI의 경우 이에 이의(?)를 제기하고 10.1 버전에 반영하겠다고도 하니 집단 지성의 힘은 참으로 대단하다. ▣ 샘플 데이타 개요  - Contours20Ft : 52,521개로 구성된 등고선 라인 데이터  - StudyArea1MileBuffer : 938개의 버텍스로 구성된 단일 폴리곤 데이터 ▣ 정리  - GIS엔진에서 Clip 성능에 영향을 주는 요인들  : Spatial Indexing  : Geometry Engine & Robustness  : Spatial Data I/O  : Clip 전략 및 방법  - 주요 Geometry(Topology) Engine들   : Open Source Java 계열: JTS Topology Suite(GeoTools/uDig/gvSIG...)   : Open Source C 계열: GEOS, 자체(GRASS 등)   : 상용: ESRI(ArcGIS Topology Engine), 기타 자체 엔진 - JTS Topology Suite/GEOS는 이미 충분히 검증됨  - Clip function에 대한 이해  : 다음과 같이 1개 이상 피쳐로 구성된 원본데이터(위 샘플데이터에 의하면 등고선), 여러개의 폴리곤 피쳐로 구성된 클립 영역 데이터가 있다고 가정하자.  : ArcGIS의 경우에는 아래 그림의 왼쪽과 같이 한 개의 라인이 생성  : 몇몇 GIS 프로그램에서는 아래 그림의 오른쪽과 같이 한개 이상의 라인이 생성  ...

[ArcObjects]Spatial Grid Index 계산하기..

- ArcCatalog에서 SDE로 FeatureClass(특히 Shapefile)를 업로드 할 때 Spatial Index가 모두 빠져 있는 경우가 있다. - GDB나 FGDB 라면 그냥 Copy & Paste로 데이터를 복사할 경우엔 Spatial Index가 모두 딸려와 정상적으로 생성이 되지만.. ArcCatalog의 Import나 Export 기능을 사용할 때 (Shapefile의 경우에는 Copy & Paste가 되지 않음) 난감한 경우가 있다. - ArcCatalog에서 FeatrueClass 속성 창을 보면 Spatial Index를 자동 계산해주는 버튼이 있지만 하나씩 해야 한다. 100개 이상의 레이어를 올리고 하나씩 눌러가며 계산했던 적이 있다. 헐~ - ArcToolBox > Feature Class > Calculate Default Spatial Grid Index 툴을 사용하면 계산이 가능하다. Batch로 해서 하면 되지만 해본 결과 계산은 잘되지만 적용이 잘 되지 않는 듯 하다. 속성창에는 계산된 값이 보여지는데 Preview를 하면 여전히 로드되지 않는다. - 아래 코드는 ArcObjects를 사용하여 FeatureClass의 Default Spatial Index를 계산해 주는 코드이다. - 참조된 라이브러리는 > ESRI.ArcGIS.Geoprocessor > ESRI.ArcGIS.Geoprocessing - Geoprocessor 인터페이스의  Excute 메서드를 사용하여 직접 ArcToolBox를 사용한다. - CalculateDefaultGridIndex > RemoveSpatialIndex > AddSpatialIndex   순서로 생성한다.   1: private bool CalculateDefaultSpatialIndex(IFeatureClass pDestFc) 2: { 3: i...

[ArcObjects]INeighborhoodOp.FocalStatistics…

이미지
* esriSpatialAnalyst 라이브러리의 INeighborhoodOp 인터페이스는 다양한 집계함수를 제공한다. 해당 인터페이스를 사용하기 위해서는 부가적으로 [Spatial Analyst Extension]이 필요하다. * 다양한 집계 함수들 중에 프로젝트에서는 FocalStatistics 를 사용했다. 집계할 값이 들어 있는 라스터 레이어를 특정 탐색 범위에 맞게 Sum을 수행한 결과 라스터를 필요로 했다. * FocalStatistics의 기본적인 계산과정은 다음 그림과 같다. * Block과는 다르게 Focal은 탐색영역을 Overlap 하면서 픽셀 하나하나의 값을 계산해 나간다. 그럼으로 분석에 있어서 탐색영역의 크기와 모양을 정하는 것이 키 포인트 였다. * FocalStatistics의 탐색영역은 esriGeoAnalyst라이브러리의 IRasterNeighborhood 인터페이스를 통해 다양한 모양과 크기로 정의할 수 있다. * 기본적인 탐색영역의 모양은 다음과 같다. * 이번 프로젝트의 탐색영역과 분석환경에 대한 제약사항은 다음과 같았다.    > 분석 Raster의 CellSize는 10m * 10m 으로 한다.    > 탐색영역의 모양은 원형으로 하며, 원의 지름은 총 110m로 한다.    > 원형의 탐색영역에 포함되는 Cell의 갯수는 총 101개가 되어야 한다. * ArcGIS의 ToolBox를 활용하여 반지름이 55m의 원형으로 탐색했을 경우의 탐색반경에 포함되는 Cell은 다음과 같았다. * Raster 분석에 있어서 반지름이 55m인 원을 그리고 해당 원안에 개별 Cell의 중심점이 포함 된다면 탐색범위에 포함된다고 기술문서에 나와 있었지만 실제 위 그림처럼 이해가 안가는 부분이 있다. * 결국 해답은 다음과 같았다. 바깥쪽 점선이 반지름이 55m인 원이지만 해당 선상에는 대상 Cell의 중심점이 존재하지 않는다. ...

OGC SLD Converter for ArcGIS

이미지
자체 프로젝트로 진행된 ArcMap에서 설정한 레이어의 렌더러 + 심볼을 OGC SLD 포맷으로 변환하는 도구 구현 결과물 ArcObjects의 Symbol 인터페이스 및 SLD에 대해 다시한번 공부할 수 있어서 의미 있는 프로젝트였음 ▣ 관련 내용  - ArcGIS to SLD(Styled Layer Descriptor) 기능정의  - SLD(Styled Layer Descriptor) Converter & Editor?  - [GeoTools]Filter Encoding Quick Reference  - GeoServer & SLD(Styled Layer Descriptor) ▣ OGC SLD Converter for ArcGIS  - GeoServer : SLD 1.0.0 + Vendor Option  - ArcGIS 10 + .NET C# + Custom ICommand 구현  - 처음 기능정의에서 Drop shadow 등의 효과 추가  - download sample sld :  http://www.mediafire.com/?77av7f4fh00ezxv ▣ ArcGIS + GeoServer 아래 이미지에서 OpenLayers Control이 있는 이미지는 GeoServer에서 미리보기한 이미지임 ▣ 다양한 심볼 stroke-dasharray를 이용한 철도심볼(++++)의 표현 < sld : Rule > < sld : Name > 108 </ sld : Name > < sld : Title > 108 </ sld : Title > < sld : MaxScaleDenominator > 60000 </ sld : MaxScaleDenominator > < ogc : Filter > ...