GIS VBA 结合ArcMap工具创建界址线

2023-11-22 17:50

本文主要是介绍GIS VBA 结合ArcMap工具创建界址线,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

江苏省地质测绘院 姜法明

本文介绍ArcMap VBA二次开发创建界址线的方法,宗地图层(面要素)有6426个宗地(要素),通过面转线得到权属线23006条,利用二次开发程序把权属线转为界址线,生成界址线 397722 条。

  1. 面转线

1打开宗地图层

2【ArcToolbok】-【数据管理工具】-【要素】-【面转线】

 

3

 

 

 

权属线是二个宗地的公共部份,私下条权属线中包含多条界址线。如上图所示,生成的权属线的属性表中,有左、右宗地的FID号,通过FID号,可以获取面要素的宗地号。

2.创建界址线图层

利用IFeatureWorkspace接口的CreateFeatureClass方法创建界址点Shape文件需要5个参数:

目录:利用IWorkspace接口 的PathName属性获取宗地图层的路径。

文件名:”888888JZX”

类型:esriGeometryPolyline

空间参考:利用ISpatialReference接口获取宗地图层的空间参考

字段清单:准备好的文本文件,文件内容如下:

 

每一行数据分别是:序号、字段名、字段类型、字段长度、字段精度(小数位数)。

3.加载Shape文件

利用IMxDocument接口的IMaps的AddLayer方法加载新建的界址线图层。

4.创建界址线要素

利用IFeatureCursor接口的Insertfeature方法创建界址点要素 。

 

附:核心源代码

'权属线 23006 条,生成界址线 397722 条,运行36分钟。
Public Sub 权属线To界址线()
'访问数据集的变量
Dim 权属线  As IFeatureClass, 权属线表名 As String
Dim 界址线  As IFeatureClass, 界址线表名 As String
Dim 宗地表  As IFeatureClass, 宗地表名 As String
Dim pFeatureCursor As IFeatureCursor       '记录集
Dim pFeature As IFeature                   '记录
Dim mFeature As IFeature                   '记录
'创建线要素的变量
Dim pLine As IPolyline                     '线对象
Dim pPointCol1 As IPointCollection         '点的集合
Dim pts        As IPointCollection
Dim pPoint1    As IPoint                   'Path 的 Point(组成路线的点)
Dim pPoint2    As IPoint                   'Path 的 Point(组成路线的点)
Dim 记录编号 As Long, N As Long
Dim 左宗地 As String, 右宗地 As String, 宗地号 As String
Dim s As Double
On Error Resume Next
权属线表名 = "340523QSX"
界址线表名 = "340523JZX"
宗地表名 = "340523NewZD"
Set 权属线 = 表名打开图层(权属线表名)
Set 界址线 = 表名打开图层(界址线表名)
Set 宗地表 = 表名打开图层(宗地表名)
If 权属线 Is Nothing Or 界址线 Is Nothing Or 宗地表 Is Nothing ThenMsgBox ("打开记录集失败!!")Exit Sub
End If
Debug.Print Now
Call 开始编辑(界址线)Set pFeatureCursor = Nothing
Set pFeatureCursor = 权属线.Update(Nothing, False)
Set pFeature = pFeatureCursor.NextFeature
Do While Not pFeature Is Nothing宗地号 = ""N = pFeature.Value(2)If N >= 0 ThenSet mFeature = 宗地表.GetFeature(N)宗地号 = Left(mFeature.Value(3), 19)End IfN = pFeature.Value(3)If N >= 0 ThenSet mFeature = 宗地表.GetFeature(N)宗地号 = IIf(宗地号 = "", Left(mFeature.Value(3), 19), 宗地号 + "\" + Left(mFeature.Value(3), 19))End IfSet pLine = pFeature.ShapeSet pPointCol1 = pLineFor N = 0 To pPointCol1.PointCount - 2Set pPoint1 = pPointCol1.point(N)Set pPoint2 = pPointCol1.point(N + 1)'定义并初始化一个线对象Dim PlyLine As IPolylineSet PlyLine = New PolylineSet pts = PlyLine    '点集合=线pts.AddPoint pPoint1pts.AddPoint pPoint2s = PlyLine.LengthDim 属性表(12) As Variant属性表(2) = 1                                                '2,"BSM",标设码,int,10(>0)属性表(3) = 宗地号                                           '3,"ZDZHDM",宗地代码,Varchar(50位)属性表(4) = "3001060000"                                     '4,"YSDM",要素代码,Char,10(6011060000)属性表(5) = s                                                '5,"JZXCD",界址线长度,Float,15,2(>0)属性表(6) = "7"                                              '6,"JZXLB",界址线类别,Char ,2(7:两点边线)属性表(7) = "2"                                              '7,"JZXWZ",界址线位置,Char,1(2:中)属性表(8) = "600001"                                         '8,"JXXZ",界结性质,Char,6(600001:已定界)属性表(9) = "321456789gfhtt"                                 '9,"QSJXXYSBH",权属界线协议书编号,Char,30属性表(10) = "gfhni987562fgmif999ht"                         '10,"QSJXXYS",权属界线协议书,Varbin'属性表(11) = 0                                             '11,"QSZYYYSBH",权属争议原由书编号,Char,30'属性表(12) = 0                                             '12,"QSZYYYS",权属争议原由书,VarbinIf s > 0.001 Then 记录编号 = AddFeature(界址线, PlyLine, 属性表)NextSet pFeature = pFeatureCursor.NextFeature
Loop
Call 停止编辑(界址线)
Debug.Print Now
Debug.Print 记录编号
MsgBox ("恭喜你,完成了!")
End Sub

这篇关于GIS VBA 结合ArcMap工具创建界址线的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/411872

相关文章

使用Python和Pyecharts创建交互式地图

《使用Python和Pyecharts创建交互式地图》在数据可视化领域,创建交互式地图是一种强大的方式,可以使受众能够以引人入胜且信息丰富的方式探索地理数据,下面我们看看如何使用Python和Pyec... 目录简介Pyecharts 简介创建上海地图代码说明运行结果总结简介在数据可视化领域,创建交互式地

Java中的工具类命名方法

《Java中的工具类命名方法》:本文主要介绍Java中的工具类究竟如何命名,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java中的工具类究竟如何命名?先来几个例子几种命名方式的比较到底如何命名 ?总结Java中的工具类究竟如何命名?先来几个例子JD

MySql match against工具详细用法

《MySqlmatchagainst工具详细用法》在MySQL中,MATCH……AGAINST是全文索引(Full-Textindex)的查询语法,它允许你对文本进行高效的全文搜素,支持自然语言搜... 目录一、全文索引的基本概念二、创建全文索引三、自然语言搜索四、布尔搜索五、相关性排序六、全文索引的限制七

Python结合PyWebView库打造跨平台桌面应用

《Python结合PyWebView库打造跨平台桌面应用》随着Web技术的发展,将HTML/CSS/JavaScript与Python结合构建桌面应用成为可能,本文将系统讲解如何使用PyWebView... 目录一、技术原理与优势分析1.1 架构原理1.2 核心优势二、开发环境搭建2.1 安装依赖2.2 验

基于Java实现回调监听工具类

《基于Java实现回调监听工具类》这篇文章主要为大家详细介绍了如何基于Java实现一个回调监听工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录监听接口类 Listenable实际用法打印结果首先,会用到 函数式接口 Consumer, 通过这个可以解耦回调方法,下面先写一个

使用Python构建一个Hexo博客发布工具

《使用Python构建一个Hexo博客发布工具》虽然Hexo的命令行工具非常强大,但对于日常的博客撰写和发布过程,我总觉得缺少一个直观的图形界面来简化操作,下面我们就来看看如何使用Python构建一个... 目录引言Hexo博客系统简介设计需求技术选择代码实现主框架界面设计核心功能实现1. 发布文章2. 加

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

基于Python打造一个全能文本处理工具

《基于Python打造一个全能文本处理工具》:本文主要介绍一个基于Python+Tkinter开发的全功能本地化文本处理工具,它不仅具备基础的格式转换功能,更集成了中文特色处理等实用功能,有需要的... 目录1. 概述:当文本处理遇上python图形界面2. 功能全景图:六大核心模块解析3.运行效果4. 相

springboot项目中常用的工具类和api详解

《springboot项目中常用的工具类和api详解》在SpringBoot项目中,开发者通常会依赖一些工具类和API来简化开发、提高效率,以下是一些常用的工具类及其典型应用场景,涵盖Spring原生... 目录1. Spring Framework 自带工具类(1) StringUtils(2) Coll

基于Python实现高效PPT转图片工具

《基于Python实现高效PPT转图片工具》在日常工作中,PPT是我们常用的演示工具,但有时候我们需要将PPT的内容提取为图片格式以便于展示或保存,所以本文将用Python实现PPT转PNG工具,希望... 目录1. 概述2. 功能使用2.1 安装依赖2.2 使用步骤2.3 代码实现2.4 GUI界面3.效