라벨이 vba인 게시물 표시

[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...

[ArcGIS]포인트 레이어에 TIN Elevation, Slope, Aspect 값 계산

이미지
포인트 레이어의 필드에 TIN의 Elevation, Slope, Aspect값을 계산하는 VBA 스크립트 예입니다. TIN(Triangulated Irregular Network) 레이어와 사용자가 수집한 포인트 레이어가 있을 경우 각  포인트 위치의 Elevation, Slope, Aspect값을 필드값으로 계산할 수 있습니다. ▣ 전제사항 - ArcMap에 포인트 레이어 및 TIN 레이어가 추가되어 있을 것 - 포인트 레이어는 Shapefile, Personal GDB(mdb), File GDB일 것 - 스크립트 실행 조건은 편집 상태가 아닐것(Update Cursor를 사용하기 때문임) ▣ 결과 - 포인트 레이어에 Elevation, Slope, Aspect 필드(Double형)가 생성되고, 각 필드에 TIN으로부터 추출한 값이 계산 ▣ 주요 인터페이스  -  ITinLayer,    ITinSurface2, ITinSurfaceElement Interface를 사용 ▣ 전체 소스코드 첨부 - TINValueCalculator.bas ▣ 계산결과 예시

[ArcGIS]포인트에 래스터 픽셀값 계산하기 VBA Script

이미지
포인트 레이어의 필드에 래스터의 픽셀값을 계산하는 VBA 스크립트 예입니다. 가령, DEM(Digital Elevation Model)과 사용자가 수집한 포인트 레이어가 있을 경우, 포인트 위치의 표고값을  필드값으로 계산하고자 할 때 사용할 수 있습니다. 소스를 수정/확장하면 더 많은 결과를 만들어 낼 수 있을 것입니다. ▣ 전제사항  - ArcMap에 포인트 레이어 및 래스터 레이어가 추가되어 있을 것  - 포인트 레이어는 Shapefile, Personal GDB(mdb), File GDB일 것  - 래스터 레이어는 단일밴드일 것  - 스크립트 실행 조건은 편집 상태가 아닐것(Update Cursor를 사용하기 때문임) ▣ 메인 코드 펼쳐두기.. [code vb] Option Explicit Private m_ipMap As IMap Public Sub CalculateRasterValue()     Dim ipDoc As IMxDocument     Set ipDoc = ThisDocument     Set m_ipMap = ipDoc.FocusMap     Dim ipFeatureLayer As IFeatureLayer, ipFeatureClass As IFeatureClass     Dim fieldName As String, idxField As Long, ipField As IField     Dim ipRasterLayer As IRasterLayer         Set ipFeatureLayer = GetFeatureLayer(m_ipMap, "POINT")     Set ipRasterLayer = GetRasterLayer(m_ipMap, "DEM")         If (ipFeat...

[ArcGIS]지적도 토지코드 분리 VBA Script

이미지
일반적으로 KLIS 지적도의 속성에는 토지코드(PNU), 지번(JIBUN) 이 있습니다. 토지코드(PNU)는 19자리의 숫자로 구성되어 있으며 각각의 의미는 다음과 같습니다.  - 시도(2)+시군구(3)+읍면동(3)+리(2)+토지구분1(1)+본번(4)+부번(4)  - 2720010200106040023(대구광역시 남구 봉덕동 604-23 번지) 지번(JIBUN)은 본번-부번 지목(551-27 대)으로 구성됩니다. ArcGIS 9.4버전부터는 VBA를 버리고 Python으로 대체한다고 들었습니다만, 현재까지는 가장 유용하게 사용할 수 있는 도구가 VBA입니다. 여기에서는 ArcMap에 지적도(편집/연속지적)를 추가한 후  행정코드(DONG_CODE, 10자리), 산구분(SAN, 1자리), 번지(BONBUN, 4자리), 호(BUBN, 4자리), 지목(JIMOK, 2자리), 필지중심점X(CX, Double), 필지중심점Y(CY, Double) 필드를 추가한 후 각 속성을 계산하는 스크립트입니다. 피쳐 유형은 폴리곤/포인트 모두 사용 가능합니다. ▣ 전제사항  - ArcMap에 지적도 레이어가 추가되어 있고 이름은 "지적도"일것  - 지적도에는 19자리의 PNU와 지번(마지막은 지목) 필드를 포함할 것  - 레이어는 Shapefile, Personal GDB(mdb), File GDB일것  - 스크립트 실행 조건은 편집 상태가 아닐것(Update Cursor를 사용하기 때문임) ▣ 메인 코드 펼쳐두기.. [code vb] Option Explicit Private m_ipMap As IMap '============================================================ '    title : 지적도 지번 및 지목 추출 '============================================================ Public ...

[ArcGIS]Field Calculator 활용

이미지
ArcGIS Desktop의 Field Calcula tor는 계산식을 입력하여 필드의 값을 계산하는데 사용합니다.  아래는 Field Calculator의 고급 기능인 VBA Function 및 Operator를 이용하여 속성값을 계산하기 위한 VBA Function 및 Operator를 예제와 함께 설명합니다. Field Calculator 다이얼로그 박스는 계산식을 입력하여 필드의 값을 계산하는데 사용합니다. 아래는 Field Calculator 의 고급 기능인 VBA Function 및 Operator 를 이용하여 속성값을 계산하기 위한 VBA Function 및 Operator 를 예제와 함께 설명합니다. Simple Field Calculator 계산식은 필드 필드와 *, /, +, -, & 등과 같은 간단한 산술식으로만 계산할 수 있으며, Advanced Field Calculator 는 VBA Script 를 이용한 Loop, 분기 등의 코드를 입력하여 계산할 수 있습니다. VBA 스크립트를 이용할 경우 저장 및 불러오기를 통하여 스크립트를 관리할 수 있습니다. Constraints Field Calculator 에서 ObjectID(esriFieldTypeOID), Shape(esriFieldTypeGeometry), BLOB(esriFieldTypeBlob) 및 Required Field(Shape_Area, Shape_Length) 등은 계산할 수 없습니다. ▣ 첨부 매뉴얼의 주요 예제 지적도의 토지코드(PNU)[시도(2)+시군구(3)+읍면동(3)+리(2)+토지구분1(1)+본번(4)+부번(4)]를 이용한 String, Math, Conversion Function 및 Geometry를 이용한 면적/둘레/중심점 계산 등이 포함됩니다. ▣ 목차 펼쳐두기.. 1.    Field Calculator소개    4 1.1.    Field Calculator의 일반...

[ArcGIS]색인도를 활용한 배치 프린트

이미지
ArcGIS로 색인도(1:1,000, 1:25,000, 1:50,000, 행정경계 등)를 이용하여 배치로 각각의 피쳐 범위별로 이미지로 내보내기하거나 출력해야 할 경우가 있습니다. 아래 설명 및 포함된 코드는 배치작업을 가능하게 해 줍니다. 색인도의 속성을 이용해서 제목이나 도엽번호 등을 자동으로 변경해 주는 기능까지 포함되어 있습니다. 1. 개요   - 다음 과정은 ArcMap에서 색인도를 이용하여 배치로 출력물을 생성하는 과정을 설명합니다.   - ArcGIS 9.3.0 버전을 사용합니다. 2. 데이터 준비  - 색인도 : 수치지형도 인덱스 또는 행정경계 등 배치로 출력할 도엽 리스트  - 출력대상 데이터 셋 ▣ 문서 : ArcMap_배치출력_스크립트사용법.pdf ▣ 샘플데이터 및 mxd 파일 : ArcMap_DataAndMxd.zip ▣ 결과 예시 펼쳐두기..