실습 13. 다기준 평가기법을 활용한 입지분석

[1] 입지 요인

도시공원을 입지시키기 위하여 적정성, 효용성, 접근성, 이용 성향과 같은 질적 기준과 1인당 공원면적 기준과 같은 양적 기준을 적용한다. 여기서는 수원시를 대상으로 근린생활권 안에 10,000 m2 이상의 공원을 만들고자 하며 다음과 같은 기준요인과 제한요인이 있다.

기준요인

인구밀도: 공원이용을 극대화하기 위하여 인구밀도가 높아야 유리

도로접근성: 도로에서 가까워야 접근성이 높아 유리

지가: 조성비용 최소화를 위하여 지가가 낮을수록 유리

녹지지역: 자원손실을 최소화하고 자원 활용을 위해 토지이용도에서 나지, 초지, 삼림 지역에 가까울수록 유리

제한요인

경사도: 편리한 공원이용을 위해 경사도가 5도 미만인 지역으로 한정함

중복성: 기존 공원과의 중복성을 피하기 위해 기존공원으로부터 100m 이내는 배제함

토지이용: 주거지역과 공업지역은 제한시키며, 수계지역은 환경보호를 위해 배제함

문화재: 문화재 보호를 위해 500m 이내지역은 제외함

[2] 제한요인 지도구축

데이터 불러오기 및 옵션세팅: ArcMap 구동하고 chapter12 폴더의 chapter13.mxd 파일 열기 -> Customize ~ Extensions 눌러 Spatial Analyst 활성화 -> Geoprocessing ~ Environments ~ Workspace에서 Current Workspace를 chapter13의 result 폴더 생성 후 지정, Scratch Workspace는 result 폴더에 New File Geodatabase 아이콘을 눌러 Scratch.gdb 파일을 생성하고 입력 -> Catalog ~ Toolboxes ~ My Toolboxes를 우클릭하여 New ~ Toolbox 선택하여 생성하고 이름을 Site Analysis Tools 로 변경 -> 생성된 Site Analysis Tools 우클릭 ~ New ~ Models 선택 -> Model ~ Model Properties 클릭하고 General 탭에서 Name은 FindPark 입력, Label은 Find Location for Park 로 입력, Store relative path names 체크 -> Environments 탭에서 Processing Extent의 Extent 체크, Raster Analysis의 Cell Size 체크한 후 Values 버튼 클릭 -> Processing Extent의 Extent를 Same as layer dem.img 선택하고 Raster Analysis의 Cell Size로 Same as layer dem.img 선택 후 OK ~ 확인 ~ 저장

경사 제한요인 지도구축: TOC의 dem.img 레이어를 모델빌더로 드래그 -> 오른쪽 Search 창에서 slope 검색하여 Slope (Spatial Analyst) 찾아 모델빌더로 드래그 -> 연결선 버튼 이용하여 dem.img를 Slope의 input raster로 설정 -> Slope 더블클릭하여 Output Measurement를 DEGREE 로 변경 -> 경사도 5도 이상인 지역을 설정하기 위해 Con 도구를 찾아 모델빌더로 드래그 -> Slope 결과물(Slope_img1)을 Con에 연결시키고 Input conditional raster로 지정 -> Con 우클릭 ~ Make Variable ~ From Parameter ~ Input true raster or constant value 선택 -> Con 우클릭 ~ Make Variable ~ From Parameter ~ Expression 선택 -> Expression 더블클릭하여 “value” > 5 라고 입력 후 OK -> Input true raster or constant value 더블클릭하여 1 입력 후 OK -> Con의 결과물(Con_Slope_im1) 더블클릭하여 chapter13\result\Scratch.gdb 폴더 안에 slopeconst 로 저장 -> slopeconst 우클릭하고 Add to Display 선택 -> Run 눌러서 경사제한요인 지도 구축하고 생성된 slopeconst만을 활성화하여, 경사가 5도 이상인 곳만 1의 값을 가지는지 확인 -> 모델빌더 저장

문화재 제한요인 지도구축: TOC의 유적지 레이어를 기존 모델빌더의 빈공간으로 드래그 -> Buffer (Analysis) 도구 찾아 모델빌더로 드래그 -> 유적지를 Buffer의 Input Features로 연결 -> Buffer 우클릭 ~ Make Variable ~ From Parameter에서 Distance와 Dissolve Type을 선택하여 차례로 생성 -> Dissolve 더블클릭하여 ALL로 변경 -> Distance 더블클릭하여 500 Meters로 입력 -> Add Field (Data Management) 도구 검색하여 모델빌더로 드래그 -> Buffer의 결과물(유적지_Buffer)을 Add Field에 Input Table로 연결 -> Add Field 더블클릭하여 Field Name은 boolean 으로 입력, Field Type은 SHORT 선택 후 OK -> Calculate Field (Data Management) 도구 검색하여 모델빌더로 드래그 -> Add Field의 결과물인 유적지_Buffer(2)를 Calculate Field에 Input Table로 연결 -> Calculate Field 더블클릭하여 Field Name은 boolean 선택, Expression은 1 입력후 OK -> Feature to Raster (Conversion) 도구 검색하여 모델빌더로 드래그 -> Calculate Field의 결과물인 유적지_Buffer(4)를 Feature to Raster 도구에 Input features로 연결 -> Feature to Raster 우클릭 ~ Make Variable ~ From Parameter에서 Field와 Output cell size를 모두 생성 -> Field 더블클릭하여 boolean 선택 후 OK -> Output cell size 더블클릭하여 30 입력 후 OK -> 마지막 결과물인 Feature_유적1 더블클릭하여 Scratch.gdb 안에 shrineconst로 저장 -> shrineconst 우클릭하여 Add to Display 선택 -> Run -> 모델빌더 저장

토지이용 제한요인 지도구축: TOC의 landcover 레이어를 모델빌더에 드래그 -> Select (Analysis) 도구를 검색하여 모델빌더에 드래그 -> landcover 레이어를 Select에 Input features로 연결 -> Select 우클릭 ~ Make Variable ~ From Parameter ~ Expression 클릭 -> 생성된 Expression (2) 더블클릭하고 오른쪽 SQL 버튼을 눌러서 “Sheet1$.categoryB” = ‘공업지역’ OR “Sheet1$.categoryB” = ‘주거지역’ OR “Sheet1$.categoryA” = ‘수역’ 으로 입력 후 OK ~ OK -> 위의 문화재 제한요인 지도제작에서 사용되었던 Add Field로부터 Feature to Raster 도구까지를 Select 버튼을 눌러 선택한 후 Ctrl-C, Ctrl-V로 복사 -> Add Field(2) 앞쪽의 연결선을 선택한 후 Del 키 눌러 삭제하고, 토지이용 제한요인 결과물인 landcover_Select를 Add Field(2)에 Input Table로 연결 -> 토지이용 제약요인 마지막 결과물을 더블클릭하여 result\Scratch.gdb 안에 landuseconst 로 저장 -> Run (만약 Feature to Raster (2)에서 에러가 발생하면 Feature to Raster의 Field 옵션을 지웠다가 다시 설정한다) -> 모델빌더 저장

기존공원 중복성 제한요인 지도구축: TOC에서 공원 레이어를 모델빌더에 드래그 -> 위의 문화재 제한요인 지도제작 과정 중 Buffer부터 Feature to Raster 까지를 선택한 뒤 Ctrl-C, Ctrl-V (한꺼번에 선택하기 어려우면 Ctrl 누른 상태에서 클릭하여 추가선택 혹은 선택취소 가능) -> Buffer 앞쪽에 연결선 3개를 Del 키를 눌러 삭제 -> 공원 레이어를 Buffer 도구에 Input Features로 연결 -> Distance 파라미터 생성 후 100 m로 설정 -> Dissolve Type 파라미터 생성하여 ALL 선택 -> Buffer 결과물을 더블클릭하여 Output Feature Class는 result\Scratch.gdb 폴더에 공원_Buffer로 입력 후 OK -> 복사한 Feature to Raster 도구의 Field 파라미터를 더블클릭하여 boolean 으로 선택 -> 복사한 Feature to Raster 도구의 결과물을 더블클릭하여 Scratch.gdb 폴더에 parkconst 입력 후 OK -> Auto Layout 아이콘 눌러 모델 자동정렬 (수시로) 누른 후 Full Extent 눌러 전체보기를 하여 전체 흐름도를 확인 -> Run -> 모델빌더 저장

제한요인 지도결합: 모델빌더에 ArcToolbox ~ Spatial Analyst Tools ~ Map Algebra ~ Raster Calculator 드래그하고 더블클릭 -> Con(IsNull(“%slopeconst%”), 0, “%slopeconst%”) |  Con(IsNull(“%shrineconst%”), 0, “%shrineconst%”) | Con(IsNull(“%landuseconst%”), 0, “%landuseconst%”) | Con(IsNull(“%parkconst%”), 0, “%parkconst%”) 입력,  Output raster는 Scratch.gdb 폴더에 constaintmap 입력 후 OK -> Run -> 생성된 constraintmap 레이어만 활성화 시켜 확인 (여기서 Con 함수는 조건부 함수이며 IsNull 함수는 데이터값이 Null이면 참값을 도출한다. 즉, shrineconst가 Null 값을 가지면 0을 넣고, 그렇지 않으면 shrineconst 원래 값을 갖도록 한다는 뜻이고, | 기호는 논리합이다. 따라서 위 식은 네 가지 제한지역이 합쳐져 1의 값을 가지게 되고 제한지역이 아닌 지역은 0의 값을 가진다)

제한요인 지도 중에서 수원시 지역만 클립: 모데빌더에 ArcToolbox ~ Data Management ~ Raster ~ Raster Processing ~ Clip 드래그하고 더블클릭 -> Input Raster는 constraintmap 선택, Output Extent는 chapter13\map\수원시경계.shp 선택, Use Input Features for Clipping Geometry 체크, Output Raster Dataset은 Scratch.gdb 폴더에 constraintmap_Clip 입력, NoData Value는 삭제 후 OK -> Run -> 수원지역만 클립되었는지 확인 -> chapter13_성명_1.mxd로 저장

[3] 기준요인 지도구축

인구밀도 기준요인 표준화 및 지도 구축 (인구밀도 38명 이하 0점 ~ 880명 이상 1점) : TOC에서 pop_density 레이어 더블클릭 ~ Symbology 탭에서 Show의 Classified 선택하고 Classify... 버튼 눌러 Method를 Standard Deviation으로 변경, Interval Size는 1 Std Dev로 변경 후 OK ~ 확인 (분류 결과에 의거하여 인구밀도 38명 이하는 0점, 880명 이상은 1점, 그 사이는 0~1점을 주고자 함) -> 모델빌더에 ArcToolbox ~ Spatial Analyst Tools ~ Overlay ~ Fuzzy Membership 드래그하고 더블클릭하여 Input raster는 pop_density 선택, Output raster는 Scratch.gdb 폴더에 pop_fuzzy 입력, Membership type은 Linear 선택, Minumum은 38 입력, Maximum은 880 입력 후 OK -> TOC에 생성된 pop_fuzzy 레이어 확인

지가 기준요인 표준화 및 지도구축 (최고지가는 0점 ~ 최저지가는 1점): TOC에서 landprice 레이어 더블클릭 ~ Symbology 탭에서 Show의 Stretched 선택하고 Histograms 눌러보면 최대지가 9279167, 최소지가 0 임을 확인 (여기서 최대지가는 0점, 최소지가는 1점을 주고자 함) -> 모델빌더에 ArcToolbox ~ Spatial Analyst Tools ~ Overlay ~ Fuzzy Membership 드래그하고 더블클릭하여 Input raster는 landprice 선택, Output raster는 Scratch.gdb 폴더에 price_fuzzy 입력, Membership type은 Linear 선택, Minimum은 9279167 입력, Maximum은 0 입력 후 OK -> TOC에 생성된 price_fuzzy 확인

녹지지역 기준요인 표준화 및 지도구축 (녹지지역에서 거리가 0이면 1점, 1000미터이면 0.5점, 2000미터 이상이면 0점) : 모델빌더에 ArcToolbox ~ Analysis Tools ~ Extract ~ Select 도구를 드래그하고 더블클릭하여 Input Feature는 landcover 선택,  Output Feature Class는 Scratch.gdb 폴더에 select_green 입력, Expression의 오른쪽 아이콘을 눌러 “Sheet1$.categoryA”= ‘나지’ OR “Sheet1$.categoryA”= ‘초지’ OR “Sheet1$.categoryA”= ‘산림지역’ 으로 질의문 작성 후 OK -> ArcToolbox ~ Spatial Analyst Tools ~ Distance ~ Euclidean Distance 도구를 모델빌더에 드래그하고 더블클릭 -> Input raster or feature source data는 select_green 선택, Output distance raster는 Scratch.gdb 폴더에 green_dist 입력 후 OK -> ArcToolbox ~ Spatial Analyst Tools ~ Overlay ~ Fuzzy Membership을 모델빌더로 드래그하여 더블클릭 -> Input raster에 green_dist 선택, Output raster는 Scratch.gdb 폴더에 green_fuzzy 입력, Membership type은 Small 선택, Midpoint는 1000, Spread는 5 입력 후 OK -> green_fuzzy 우클릭하여 Add to Display 선택 -> Run -> 모델저장 -> TOC에 생성된 green_fuzzy 레이어 확인

도로접근성 기준요인 표준화 및 지도구축 (도로에서 거리가 0이면 1점, 500미터이면 0.5점 1000미터 이상이면 0점): 녹지지역 기준요인 지도구축에서 사용한 모델도구 전체를 Ctrl-A로 선택하여 Ctrl-V로 붙여넣기 -> Select 더블클릭하여 Input Features를 road로 선택, Output Feature Class는 select_road 입력, Expression은  “ROAD_TYPE” <= 1 입력 후 OK -> Euclidean Distance 더블클릭하여 Input raster or feature source data는 select_road 선택, Output distance raster는 Scratch.gdb 폴더에 road_dist 입력 후 OK -> Fuzzy Membership 더블클릭하여 Input raster는 road_dist 선택, Output raster는 Scratch.gdb 폴더에 road_fuzzy 입력, Membership type은 Small 선택, Midpoint는 500 입력, Spread는 5 입력 후 OK -> 최종결과물 road_fuzzy 우클릭하여 Add to Display 체크 -> Run -> 모델저장 -> TOC에 생성된 road_fuzzy 레이어 확인

AHP 가중치를 고려한 평가지도 구축: Chapter13\data\AHP_Calculator_with_CI.xls 더블클릭하여 Excel 구동 -> 보안경고 옵션 버튼을 눌러 ‘이 콘텐츠 사용’ 체크 후 확인 -> ‘AHP를 고려한 설문지’ sheet를 열어 설문내용 확인 -> ‘AHP 분석 툴’ sheet를 눌러 비교행렬의 하얀색 부분에 점수를 입력하는데, 예를 들면 (Factor 01, Factor 02)는 2점, (Factor 01, Factor 03)은 3점 등과 같이 입력 후 AHP Calculating Start 버튼을 누름 -> 가중치 산정 결과 인구밀도 0.450, 지가 0.288, 녹지 0.137, 도로 0.125 임을 확인 -> 모델빌더에 ArcToolbox ~ Spatial Analyst Tools ~ Overlay ~ Weighted Sum 드래그하고 더블클릭하여 Input rasters에 pop_fuzzy, price_fuzzy, green_fuzzy, road_fuzzy를 선택하고 Weight 컬럼에 각각 0.45, 0.288, 0.137, 0.125 입력, Output raster는 Scratch.gdb 폴더에 MCEmap으로 저장 후 OK -> TOC에서 MCEmap 레이어 확인 -> chapter13_성명_2.mxd로 저장

[4] 최종 입지 후보지 결정

평가지도에서 배제지역 제거:  모델빌더에 ArcToolbox ~ Spatial Analyst Tools ~ Conditional ~ Con 도구를 드래그하고 더블클릭 -> Input conditional raster는 constraintmap_Clip 선택, Expression은 “Value”=0 입력, Input true raster or constant value에는 MCEmap 선택, Output raster는 Scratch.gdb 폴더에 Final_Park 로 입력 후 OK -> Run -> Final_Park 우클릭하여 Add to Display 선택 후 생성된 레이어 확인 -> 모델빌더 저장

공원입지 후보지 탐색 및 보완작업 (토지이용 제한요인을 더 가중할 필요 발생): 모델빌더에서 토지이용 제한요인 지도구축과정 중에서 처음의 Expression 더블클릭하면 “Sheet1$.categoryB”= ‘공업지역’ OR “Sheet1$.categoryB”= ‘주거지역’ OR “Sheet1$.categoryA”= ‘수역’ 되어있음을 확인 -> 여기에 추가하여 다음과 같이 변경 “Sheet1$.categoryB”= ‘공업지역’ OR “Sheet1$.categoryB”= ‘주거지역’ OR “Sheet1$.categoryA”= ‘수역’ OR “Sheet1$.categoryB”= ‘공공시설지역’ OR “Sheet1$.categoryB”= ‘교통지역’ OR “Sheet1$.categoryB”= ‘상업지역’ OR “Sheet1$.categoryB”= ‘골프장’ OR “Sheet1$.categoryB”= ‘논’ OR “Sheet1$.categoryB”= ‘밭’ OR “Sheet1$.categoryB”= ‘과수원’  -> Run -> Final_Park 열어서 이전보다 훨씬 적은 지역이 선택됨을 확인 -> 모델 저장

면적조건 고려: 모델빌더에 ArcToolbox ~ Spatial Analyst Tools ~ Map Algebra ~ Raster Calculator 끌어놓고 Final_Park를 입력으로 연결한 후 더블클릭 ->  Int(“Final_Park”*100) 입력, Output raster는 int_final 입력 후 OK (다음에 사용할 Majorit Filter가 정수형만을 사용하기 때문) -> ArcToolbox ~ Spatial Analyst Tools ~ Generalization ~ Majority Filter 끌어놓고 int_final을 입력으로 연결 후 더블클릭 -> Output raster는 Scratch.gdb 폴더에 Major_final 입력, Number of neighbors to use는 EIGHT 선택, Replacement threshold는 MAJORITY 선택 후 OK -> ArcToolbox ~ Conversion Tools ~ From Raster ~ Raster to Polygon 끌어넣고 Major_final을 입력으로 연결 후 더블클릭 -> Output polygon features는 Scratch.gdb 폴더에 final 입력 후 OK -> Select 도구를 끌어넣고 final을 입력으로 연결 후 더블클릭 -> Shape_Area >= 10000 입력하고 Output은 final_selection로 설정 -> final_selection 속성테이블 열어 gridcode 컬럼을 기준으로 Sort Descending해 가장 높은 점수인 85점을 가진 feature를 선택해보면 수원 남동쪽에 위치한 면적 17612 m2 지역임을 확인 -> Chapter13_성명_3.mxd로 저장

[4] 결과물 제출

위 결과물 중에서 의미 있는 내용들을 레이아웃으로 만들고 pdf로 출력하여 게시판에 올릴 것. 끝.