2011년 10월 20일 목요일

시군별 해안선 길이 계산해보기

전국의 해안선 길이는 어떻게 계산할까?

■ 공식자료
* 국토지킴이 - 국토해양부 공식 블로그
 - 해안선의 길이는 어떻게 측정할까요? 
* 국립해양조사원 해안선 조사측량
* 국립해양조사원 전국 해안선 연장길이 통계 자료

■ 시군구 행정구역 경계로 시군별 해안선 길이 계산해보기
시군구 행정경계가 해안선과 일치하지는 않으나(실제보다 훨씬 짧음) 아래에서는 일반적인 방법론을 소개한다.

① 시군구 행정경계 준비하기
한번에 작업을 끝내려면 시군별로 Dissolve를 한번 해 주는 것이 좋다.
② Rectangle Polygon Shapefile 생성
ArcCatalog에서 Polygon Feature Type으로 rectangle Shapefile을 하나 생성한다. Edit... 버튼을 눌러 좌표체계는 위 행정경계와 동일하게 정의한다.
ArcMap에 생성한 Shapefile을 추가한 후 Editor 도구로 행정경계를 충분히 포함하는 Rectangle 폴리곤 피쳐를 아래와 같이 하나 생성한다.
③ Erase
ArcToolbox --> Analysis Tools --> Overlay --> Erase 도구를 실행 후 다음과 같이 Input Features는 rectangle, Erase Features는 행정경계를 선택 후 실행한다.
결과는 다음과 같다
④ Intersect
ArcToolbox --> Analysis Tools --> Overlay --> Intersect 도구를 실행한다.
Input Features에 Erase 결과 및 행정경계를 차례대로 추가한다.
여기에서 중요한 포인트는 Output Type을 LINE으로 설정한다는 것이다.
⑤ Editing
Intersect 결과는 아래와 같다.
이 그림에서처럼 강원도/경기도 일부 지역은 해안과 접하지 않았으므로 Editor 도구를 사용하여 Intersect 라인 중에서 해안과 접하지 않은 라인을 제거한다.
만약 초기 준비한 행정경계를 Dissolve하지 않았다면(Single part) 이 과정에서 편집한 라인을 Dissolve해야 할 수도 있다.
⑥ Calculate Geometry
편집한 라인의 속성테이블을 열고 GEOM_LEN(Double) 필드를 추가한 후 아래 그림과 같이 Calculate Geometry 기능을 이용하여 각 피쳐별로 길이를 계산한다.
⑦ 결과

Combining multiple rasters

ArcGIS의 Combine (Spatial Analyst) 도구에 대한 이해

■ 개념
- 여러 래스터의 값을 조합하여 각 셀에 중첩되는 Unique한 값을 결과 래스터에 저장하며, input raster의 값도 모두 유지된다.- 적지분석 등 래스터 중첩분석에 많이 활용된다.
- 한 래스터의 각각의 래스터에 대한 정보가 포함되어 있어 데이터 조합이나 통계정보 생성이 쉽다.
■ 제약사항
- Attribute Table을 가진 Integer raster만 사용하며, 만약 Floating point raster의 경우에는 처리과정에서 자동으로 Integer로 변환한다. 따라서 Output Raster는 항상 Integer raster로 생성된다.
- 한번에 처리할 수 있는 raster는 20개로 제한
- Input raster 이름이 output raster의 attribute table 필드 이름으로 설정되므로 raster 명명규칙을 따를것
- NoData가 포함된 셀은 output raster 역시 NoData로 처리되므로 필요시 Null값을 0값 등으로 미리 대체할 것
- ESRI GRID 포맷 외의 포맷에 대해서는 기본값으로 output raster는 65536개의 unique 값을 가질 수 있으며, 이는 ArcMap의 Options 메뉴를 통해서 다음 그림처럼 값을 변경할 수 있다.
■ Combine 도구
○ ArcToolbox - Combine
○ Spatial Analyst Toolbar - Raster Calculator
○ Attribute Table
■ 참고
- ArcGIS Desktop Help: Combine

2011년 10월 19일 수요일

여러개의 래스터를 하나의 래스터로 합치기

What is a mosaic?
여러개의 Raster 파일을 하나의 Raster로 합치는 과정
mosaic operation example
[그림출처: http://help.arcgis.com/en/arcgisdesktop/10.0/help/009t/GUID-BCA5B031-B811-424B-9F54-BAB2224FBAD0-web.gif]
■ 모자이크 전에 고려해야 할 사항
① 좌표체계
on-the-fly projection을 지원하긴 하지만 미리 좌표체계를 통일하는 것이 좋다.
 서로 다른 해상도
Mosaic 대상 Raster가 서로 다른 해상도일 경우에는 미리 Resample을 하는 것이 좋다. Continuous data type을 경우에는 Bilinear interpolation or Cubic convolution을 Discrete data type일 경우에는 Nearest neighbor resampling을 일반적으로 사용한다.
Mosaic를 하는동안 서로 다른 해상도일 경우에 자동으로 Resample을 수행하지만 기본값으로 Nearest neighbor resampling으로 처리한다는 것에 유의한다.
③ 인접부분의 Null값을 최소화하려면
수치지형도를 사용하여 도곽별로 DEM을 생성 후 Mosaic을 수행하는 경우가 있는데 이런 경우 도곽보다 약간 큰 사이즈의 DEM을 만든 후 Mosaic을 수행하는 것이 좋다.
 처리시간을 줄이려면
Mosaic 대상 Raster의 수가 많을 경우 Mosaic 수행 시 Last Mosaic Operator를 사용하고, 도구는 Raster Catalog To Raster Dataset 도구나 Workspace To Raster Dataset을 사용하는 것이 좋다.
--> 원본 Raster의 특성에 맞게 Mosaic 정책을 세우는 것이 중요

* ArcGIS에서 Raster 저장 명명규칙: [ArcGIS]Naming Output Rasters
* Mosaic Operator : Mosaic operators

■ ArcGIS에서 활용가능한 mosaicking 도구들
○ Mosaic
○ Mosaic To New Raster
○ Raster Catalog To Raster Dataset
○ Workspace To Raster Dataset
○ ArcMap Spatial Analyst Toolbar
■ Raster Catalog는 어떻게 만드나?
Raster Catalog는 GeoDatabase(File, Personal, SDE)에서만 생성 관리될 수 있다. 따라서 Raster Catalog를 생성하기 전에 미리 GeoDatabse를 생성해야 하며 로컬에서 사용할 경우 File GeoDatabse를 추천한다.
다음 과정은 폴더에 합칠 Raster 데이터셋이 특정 폴더(Raster Workspace)에 있으며 이를 Raster Catalog로 등록하는 과정이다.
○ Create Raster Catalog
ArcToolbox --> Data Management Tools --> Raster --> Raster Catalog --> Create Raster Catalog 도구를 실행한다.
GeoDatabse에서는 Raster Management 유형은 Managed, Unmanaged by GDB 방식의 2가지가 있다.
Managed 방식은 GeoDatabse 내에 Raster 데이터를 저장/관리하며, Unmanaged by GDB 방식은 Raster의 메터데이터(셀, Extent 등)와 저장경로만을 포함한다.
Mosaic을 위한 Raster Catalog를 생성하는 경우 속도면에서 Unmanaged by GDB 방식이 효율적이다.
① Managed by GDB
Raster Catalog에 Raster 로딩 후 각각의 등록정보를 보면 다음 그림과 같이 Managed by GDB 속성이 Yes로 표시된다.
② Unmanaged by GDB
Raster Catalog에 Raster 로딩 후 각각의 등록정보를 보면 다음 그림과 같이 Managed by GDB 속성이 No로 표시되고 실제 데이터 경로가 Full Path 속성으로 표시된다.
○ Raster Catalog에 래스터를 로딩하는 방법 
Raster를 Catalog에 로딩하는 방법은 일반적으로 2가지를 사용한다.
 ① Workspace To Raster Catalog 
같은 Raster Workspace에 포함된 모든 Raster를 Catalog에 로딩하는 기능이다.
ArcToolbox --> Data Management Tools --> Raster --> Raster Catalog --> Workspace To Raster Catalog 도구를 실행한다.
Raster Catalog는 미리 생성되어 있어야 하며, 서브 디렉터리를 포함할지 좌표체계가 다를 경우 좌표변환을 수행할 지 여부를 체크할 수 있다.

 ② Raster To GeoDatabase(Multiple)
 ArcCatalog에서 Raster Catalog를 선택 후 오른쪽 마우스를 눌러 Load --> Load Data... 메뉴를 실행한다.
 다음 그림과 같이 Load할 Raster를 추가하여 변환할 수 있다.
이 기능은 로딩 후 Calculate Default Spatial Grid Index 가 필요하며 ArcToolbox의 기능 외에, 이는 다음 그림과 같이 Raster Catalog 등록정보에서도 갱신할 수 있다.
데이터 로딩 후 Raster Catalog는 다음과 같다.
미리보기를 하면 각각의 Raster Extent를 격자단위의 셀로 확인할 수 있으며 속성정보 확인을 통해서 각 타일별 Raster를 미리보기할 수 있다.
ArcMap에서는 Raster Catalog에 포함된 Raster를 여러 옵션을 통해서 시각화할 수 있다.
■ Mosaicking 도구들 활용하기
○ Mosaic
결과에 사용될 Target Raster를 준비한다. 이는 ArcCatalog에서 템플릿 Raster(Mosaic 대상 Raster 중 하나를 선택)를 복사하여 저장할 위치에 붙여넣거나 빈 Raster(Create Raster Dataset 도구를 사용하며 셀크기나 좌표체계는 Mosaic 대상 레이어와 동일하게 설정할 것)를 준비하면 된다.

ArcToolbox --> Data Management Tools --> Raster --> Raster Dataset --> Mosaic 도구를 실행한다. Mosaic Method는 Input Raster의 특성에 맞게 선택한다.
○ Mosaic To New Raster
위 Mosaic 도구와 유사하나  Output Raster를 사용자가 직접 설정할 수 있다.
ArcToolbox --> Data Management Tools --> Raster --> Raster Dataset --> Mosaic To New Raster 도구를 실행한다.
○ Raster Catalog To Raster Dataset
Mosaic To New Raster 도구처럼 Output Raster를 사용자가 직접 설정할 수 있다.
ArcToolbox --> Data Management Tools --> Raster --> Raster Dataset --> Raster Catalog To Raster Dataset 도구를 실행한다.
○ Workspace To Raster Dataset
결과에 사용될 Target Raster를 준비한다.
ArcToolbox --> Data Management Tools --> Raster --> Raster Dataset --> Workspace To Raster Dataset 도구를 실행한다.
○ ArcMap Spatial Analyst Toolbar --> Raster Calculator
ArcMap 환경에서 Spatial Analyst Toolbar의 Raster Calculator를 이용해서 Mosaic 기능을 수행할 수 있다.
■ 합쳐야 할 래스터가 많은 경우 
Mosaic 대상 Raster가 아래 그림처럼 아주 많을 경우(아래 예는 1:25,000 전국이므로 약 750여 도엽)에는 Mosaic 시간을 고려해야 한다.

도구 측면에서는 Workspace To Raster Dataset, Raster Catalog To Raster Dataset이 다른 도구들보다 빠르며, Mosaic operator는 LAST 옵션이 속도면에서 가장 효율적이다.

Raster Catalog To Raster Dataset, Workspace To Raster Dataset 도구도 오래 걸리는 경우
다음 그림과 같이 임의의 타일을 구성 후 타일 별로 Raster를 나누고 모자이킹 후 다시 전체 모자이킹하는 방법도 고려해 볼 만 하다.
■ 참고
What is a mosaic?
Mosaic operators
What mosaicking tools are available in ArcGIS?
Mosaic(Data Management)
Mosaic To New Raster(Data Management)
Workspace To Raster Dataset (Data Management)
Raster Catalog To Raster Dataset (Data Management)

2011년 10월 17일 월요일

격자 폴리곤을 생성하고 각 셀에 도로와의 거리를 계산하기

■ 미션
격자 폴리곤을 생성하고 각 셀에 도로와의 거리를 계산하기
■ 데이터 준비
 - 도로데이터의 이름 : line

■ ArcToolbox 처리과정
1. Euclidean Distance 분석

ArcToolbox --> Spatial Analyst Tools --> Distance --> Euclidean Distance 도구를 실행한다.

셀의 크기는 500(원본 데이터 단위, 여기에서는 미터)으로 설정하였다.
Direction 래스터가 필요하면 옵션으로 설정해도 된다.
또는 Spatial Analyst Toolbar --> Distance --> Straight Line 역시 Euclidean Distance 도구와 같은 분석 도구이다.

결과는 다음과 같은 도로와의 거리값이 계산된 래스터이다.
2. Point 생성
ArcToolbox --> Conversion Tools --> From Raster --> Raster to Point 도구를 실행한다.

Input Raster는 Euclidean Distance 분석결과 래스터를 선택한다.
결과값은 거리값이 GRID_CODE 필드에 저장된 포인트 shapefile이다.
3. Fishnet Line 생성
먼저 Euclidean Distance 분석결과 래스터 등록정보를 확인해 보면 셀의 크기는 500이고 Columns는 70, Rows는 59이다.
ArcToolbox --> Data Management Tools --> Feature Class --> Create Fishnet 도구를 실행한다.
Template Extent는 Euclidean Distance 분석결과 래스터를 선택하고 Columns와 Rows 수를 위 등록정보에서 확인한 값으로 입력한다.
Fishnet Line의 생성결과는 다음과 같다.
4. 격자 폴리곤에 도로와의 거리 계산
ArcToolbox --> Data Management Tools --> Features --> Feature To Polygon 도구를 실행한다.
Input Features는 위에서 생성한 Fishnet Line을 선택하며, Label Features는 Euclidean Distance 분석결과 래스터를 포인트로 변환한 Shapefile을 선택한다.
폴리곤으로 변환한 격자 폴리곤의 결과는 다음과 같으며, 격자 폴리곤의 GRID_CODE 필드에 도로와의 거리값이 계산되었다.
5. Direction
위 Euclidean Distance 분석시 Direction 분석을 동시에 수행했다면 다음과 같은 Direction Point를 심볼로 표현할 수도 있다.

레이어를 격자 폴리곤으로 잘라내기

■ 미션
도로 데이터셋을 일정 격자 크기 단위로 잘라서 Shapefile로 저장하기
■ ArcToolbox에서 생성하기
1. 데이터셋 준비
잘라낼 데이터셋(여기에서는 도로 )을 준비한다.
2. Fishnet 생성 
ArcToolbox --> Data Management Tools --> Feature Class --> Create Fishnet 도구를 실행한다
Create Fishnet 도구의 실행 결과는 폴리곤이 아닌 Fishnet 라인(옵션으로 중심점 포인트를 생성할 수 있음)만을 생성한다.

Extent는 레이어의 Extent를 참조하거나 임의로 직접 입력할 수 있다.
Extent를 정의하고 나면 셀의 크기 또는 셀의 갯수를 정의한다.
아래 예에서는 구경계 Extent를 기준으로 가로 4개, 세로 4개의 셀 갯수로 설정하였다.
생성한 결과는 아래 그림과 같은 라인 및 중심점 포인트 데이터이다.
3. 폴리곤 생성 
ArcToolbox --> Data Management Tools --> Features --> Feature To Polygon 도구를 실행한다.
Input Features는 위에서 생성한 fishnet_line이며 Output Feature Class는 생성될 폴리곤(fishnet)이다.
4. ID 계산 
Feature To Polygon으로 생성된 fishnet 폴리곤 레이어 선택 후 팝업메뉴의 Open Attribute Table...  메뉴를 실행한다.

4.1 테이블 우 하단의 Options --> Add Field...  메뉴를 실행 후 필드이름(TID), 유형(Text, String), 길이는 적절한 크기(아래에서는 50)을 설정 후 필드를 추가한다.

4.2 테이블의 TID필드 헤더를 선택한 후 팝업메뉴 --> Field Calculator... 실행한다.
필드 규칙은 사용자가 임의로 정의할 수 있으며 여기에서는 T_1 ~T_16(셀이 16개 임)의 규칙으로 ID가 부여되도록 설정하였다.   규칙 계산 : "T_" & ([FID] + 1)


ID는 좌하단에서 오른쪽, 위로 넘버링 된다는 것을 기억하자(이 페이지의 결과 참조)

Field Calculator를 이용해서 TID 값을 계산한 결과는 다음과 같다.
이 TID는 이후에 각 폴리곤마다 피쳐를 잘라낸 후 저장에 사용될 이름이라 보면 된다.
5. Split Features 
마지막으로 생성한 격자별로 도로를 잘라내면 된다. ArcToolbox --> Analysis Tools --> Extract --> Split 도구를 실행한다.

Input Features는 도로, Split Features는 폴리곤 fishnet, Split Field는 생성한 타일 규칙(ITD), Target Workspace는 저장할 Shapefile 폴더(폴더 외에도 Personal GeoDatabase나 File GeoDatabase와 같은 Workspace를 선택할 수 있음)
6. 결과
타일별로 잘라낸 결과는 다음과 같다. 만약 시군구경계별로 잘라내기 하려면 5. Split Features 도구에서 Split Feature를 구경계로 선택하면 된다.