论文部分内容阅读
摘要:本文通过对农村集体土地确权中形成的空间数据几何关系进行梳理,结合在生产过程中通过arcgis软件的自身检查功能、叠加功能或VBA程序语言。提出了检查界址点、界址线、宗地等空间数据的拓扑关系正确性的有效方法,为农村集体土地确权数据库建设提供基础数据质量保证。
关键词:空间数据 ArcGIS 拓扑检查
中图分类号:D80 文献标识码:A 文章编号:1009-914X(2013)29-033-02
前言
农村集体土地确权调查是为全面、准确查清农村集体土地所有权的权属、界址、面积、用途和位置[1],界址清楚、面积准确是农村集体土地确权调查的基本要求,而界址点、界址线、宗地三类要素之间的拓扑关系正确性是保证界址清楚、面积准确的必要条件,通过明确的要素拓扑关系规则,针对各项规则形成有效的解决方法是农村集体土地确权调查数据库建库的必要步骤。本文通过实际的生产实践,为各类拓扑关系的运用和检查提供思路。
1 通过arcgis自身拓扑规则检查
空间拓扑关系描述的是基本的空间目标点、线、面之间的邻接、关联和包含关系,界址点、界址线、宗地面是农村集体土地确权数据从权属空间位置上抽象形成的点线面模型,点线面之间的拓扑关系正确性体现了界址点、界址线、宗地面空间位置上的逻辑正确性。ArcGIS软件提供了多种类型的点线面之间的拓扑检查规则,界址点(JZD)、界址线(JZX)、宗地面(ZD)之间的检查规则如下:
宗地面重叠检查ZD Must Not Overlap
宗地面缝隙检查ZD Must Not Have Gaps
宗地界与DZJQ界一致性检查ZD Must Be Covered By DJZQ
宗地界与DZQ界一致性检查ZD Must Be Covered By DJQ
宗地界与JZX一致性检查ZD Boundary Must Be Covered By JZX
界址点必须落入宗地边线上检查JZD Must Be Covered By Boundary Of ZD
界址点必须落入界址线上检查JZD Point Must Be Covered By Line JZX
界址线重叠检查 JZX Must Not Self-Overlap
界址線自相交检查JZX Must Not Self-Intersect……
通过arcgis本身的拓扑检查规则可以自动进行检查的均可直接用此类方法进行。但是有部分检查是无法直接通过检查规则进行验证,需要通过将软件内多个步骤结合起来进行检查。
2 叠加arcgis功能进行复杂检查
界址点、界址线、宗地面的空间关系示意图如下:
图1 判断界址线属性中左右宗地号的正确性
其中,界址线与宗地面之间的邻接关系正确性往往不仅通过空间关系来判断,还会通过空间和属性共同的正确性来验证,例如判断某一根界址线左右宗地的宗地号的正确性,因此单纯的通过arcgis本身的拓扑规则就无法验证,所以必须通过软件的多种功能的叠加分析才能得到结果。本文以判断界址线左右宗地的宗地号属性正确性为例来讲述如何通过arcgis软件的多种功能叠加进行复杂检查。
首先,通过宗地面进行面到线的转换,运用ArcToolbox中的polygon to line工具,将宗地面转换为带LIFT_FID和RIGHT_FID的新“JZX”文件。
图2 生成属性含有左右图斑FID号的“JZX”文件
第二步,通过属性挂接Join attributes from a table将原宗地面属性表中的FID字段与新生成的“JZX”文件中LIFT_FID和RIGHT_FID两个字段分别挂接两次,将JZX的左右宗地号分别赋给新生成的“JZX”文件的属性表内。
第三步,通过空间位置挂接,将新生成的“JZX”文件的属性表中左右宗地号属性赋给原界址线(JZX)文件,即可获得准确的左右宗地号。
数据检查过程中,常碰到需要通过各种功能组合才能解决的问题,但是有些复杂空间关系无法用现有的软件功能去实现,只能通过程序语言才能实现。
3 基于VBA的复杂空间关系检查
农村集体土地确权数据一般是不存在“8字型”宗地的,所谓“8字型”宗地即只有一个结点与其它宗地相连,而该宗地又被另一宗所包围,示意如下:
“8字型”宗地是实地不存在,但实际生产过程中可能会出现的情况。arcgis软件本身无法检查这种类型的数据,通过人工检查不仅耗时耗力,更容易漏判,因此通过arcgis嵌入式宏语言VBA来进行定制开发,可以解决此类问题,下面将以检查“8字型”宗地的图斑为例来进行说明。
在arcgis的VB环境中定义矢量图层及检查对象,新建“Error”矢量图层。关键步骤代码如下:
'查看是否只有1个公共点
Function IsOnlyOneTouch(pTuBan1 As IPolygon, pTuBan2 As IPolygon) As Boolean
Dim back As Boolean
Dim pPointCollection1 As IPointCollection
Dim pPointCollection2 As IPointCollection
Set pPointCollection1 = pTuBan1
Set pPointCollection2 = pTuBan2
If IsGongbian(pPointCollection1, pPointCollection2) Then back = False
Else
back = True
End If
IsOnlyOneTouch = back
End Function
'查看是否共邊
'如果公用点个数超过1个则直接返回共边true
Function IsGongbian(pPointCollection1 As IPointCollection, pPointCollection2 As IPointCollection) As Boolean
Dim back As Boolean
Dim pPointCount1 As Integer
pPointCount1 = pPointCollection1.PointCount
Dim pPointCount2 As Integer
pPointCount2 = pPointCollection2.PointCount
Dim pGongCount As Integer
pGongCount = 0
For i = 0 To pPointCount1 - 2
Dim pPoint1 As IPoint
Set pPoint1 = pPointCollection1.Point(i)
If pGongCount < 2 Then
For j = 0 To pPointCount2 - 2
Dim pPoint2 As IPoint
Set pPoint2 = pPointCollection2.Point(j)
If pGongCount < 2 Then
If IsPointCloseEnough(pPoint1, pPoint2) Then
pGongCount = pGongCount + 1
End If
End If
Next
Else
IsGongbian = True
End If
Next
If pGongCount < 2 Then
back = False
Else
back = True
End If
IsGongbian = back
End Function
'判断这两点是否足够近,
'判断阀值0.1
Function IsPointCloseEnough(pPoint1 As IPoint, pPoint2 As IPoint) As Boolean
Dim back As Boolean
Dim pFaZhi As Double
pFaZhi = 0.1
If Abs(pPoint1.X - pPoint2.X) < pFaZhi And Abs(pPoint1.Y - pPoint2.Y) < pFaZhi Then
back = True
Else
back = False
End If
IsPointCloseEnough = back
End Function
在ArcGIS VB环境中如果运行可行,则可通过Customize中Commands选项添加“Macros”,自定义查找“8字型”图斑的工具按扭,存放于常用工具条中,即可进行日常“8字型”宗地的检查。
4 结论
农村集体土地确权数据是空间数据的一种表现形式,ArcGIS软件提供了多种类型的数据拓扑检查方式,软件本身提供了丰富的拓扑检查规则,可以直接利用,也可通过多项功能的叠加进行检查,还提供了开放式的平台,针对复杂的空间关系进行检查。
参考文献
[1] 江西省农村地籍调查技术规定.
关键词:空间数据 ArcGIS 拓扑检查
中图分类号:D80 文献标识码:A 文章编号:1009-914X(2013)29-033-02
前言
农村集体土地确权调查是为全面、准确查清农村集体土地所有权的权属、界址、面积、用途和位置[1],界址清楚、面积准确是农村集体土地确权调查的基本要求,而界址点、界址线、宗地三类要素之间的拓扑关系正确性是保证界址清楚、面积准确的必要条件,通过明确的要素拓扑关系规则,针对各项规则形成有效的解决方法是农村集体土地确权调查数据库建库的必要步骤。本文通过实际的生产实践,为各类拓扑关系的运用和检查提供思路。
1 通过arcgis自身拓扑规则检查
空间拓扑关系描述的是基本的空间目标点、线、面之间的邻接、关联和包含关系,界址点、界址线、宗地面是农村集体土地确权数据从权属空间位置上抽象形成的点线面模型,点线面之间的拓扑关系正确性体现了界址点、界址线、宗地面空间位置上的逻辑正确性。ArcGIS软件提供了多种类型的点线面之间的拓扑检查规则,界址点(JZD)、界址线(JZX)、宗地面(ZD)之间的检查规则如下:
宗地面重叠检查ZD Must Not Overlap
宗地面缝隙检查ZD Must Not Have Gaps
宗地界与DZJQ界一致性检查ZD Must Be Covered By DJZQ
宗地界与DZQ界一致性检查ZD Must Be Covered By DJQ
宗地界与JZX一致性检查ZD Boundary Must Be Covered By JZX
界址点必须落入宗地边线上检查JZD Must Be Covered By Boundary Of ZD
界址点必须落入界址线上检查JZD Point Must Be Covered By Line JZX
界址线重叠检查 JZX Must Not Self-Overlap
界址線自相交检查JZX Must Not Self-Intersect……
通过arcgis本身的拓扑检查规则可以自动进行检查的均可直接用此类方法进行。但是有部分检查是无法直接通过检查规则进行验证,需要通过将软件内多个步骤结合起来进行检查。
2 叠加arcgis功能进行复杂检查
界址点、界址线、宗地面的空间关系示意图如下:
图1 判断界址线属性中左右宗地号的正确性
其中,界址线与宗地面之间的邻接关系正确性往往不仅通过空间关系来判断,还会通过空间和属性共同的正确性来验证,例如判断某一根界址线左右宗地的宗地号的正确性,因此单纯的通过arcgis本身的拓扑规则就无法验证,所以必须通过软件的多种功能的叠加分析才能得到结果。本文以判断界址线左右宗地的宗地号属性正确性为例来讲述如何通过arcgis软件的多种功能叠加进行复杂检查。
首先,通过宗地面进行面到线的转换,运用ArcToolbox中的polygon to line工具,将宗地面转换为带LIFT_FID和RIGHT_FID的新“JZX”文件。
图2 生成属性含有左右图斑FID号的“JZX”文件
第二步,通过属性挂接Join attributes from a table将原宗地面属性表中的FID字段与新生成的“JZX”文件中LIFT_FID和RIGHT_FID两个字段分别挂接两次,将JZX的左右宗地号分别赋给新生成的“JZX”文件的属性表内。
第三步,通过空间位置挂接,将新生成的“JZX”文件的属性表中左右宗地号属性赋给原界址线(JZX)文件,即可获得准确的左右宗地号。
数据检查过程中,常碰到需要通过各种功能组合才能解决的问题,但是有些复杂空间关系无法用现有的软件功能去实现,只能通过程序语言才能实现。
3 基于VBA的复杂空间关系检查
农村集体土地确权数据一般是不存在“8字型”宗地的,所谓“8字型”宗地即只有一个结点与其它宗地相连,而该宗地又被另一宗所包围,示意如下:
“8字型”宗地是实地不存在,但实际生产过程中可能会出现的情况。arcgis软件本身无法检查这种类型的数据,通过人工检查不仅耗时耗力,更容易漏判,因此通过arcgis嵌入式宏语言VBA来进行定制开发,可以解决此类问题,下面将以检查“8字型”宗地的图斑为例来进行说明。
在arcgis的VB环境中定义矢量图层及检查对象,新建“Error”矢量图层。关键步骤代码如下:
'查看是否只有1个公共点
Function IsOnlyOneTouch(pTuBan1 As IPolygon, pTuBan2 As IPolygon) As Boolean
Dim back As Boolean
Dim pPointCollection1 As IPointCollection
Dim pPointCollection2 As IPointCollection
Set pPointCollection1 = pTuBan1
Set pPointCollection2 = pTuBan2
If IsGongbian(pPointCollection1, pPointCollection2) Then back = False
Else
back = True
End If
IsOnlyOneTouch = back
End Function
'查看是否共邊
'如果公用点个数超过1个则直接返回共边true
Function IsGongbian(pPointCollection1 As IPointCollection, pPointCollection2 As IPointCollection) As Boolean
Dim back As Boolean
Dim pPointCount1 As Integer
pPointCount1 = pPointCollection1.PointCount
Dim pPointCount2 As Integer
pPointCount2 = pPointCollection2.PointCount
Dim pGongCount As Integer
pGongCount = 0
For i = 0 To pPointCount1 - 2
Dim pPoint1 As IPoint
Set pPoint1 = pPointCollection1.Point(i)
If pGongCount < 2 Then
For j = 0 To pPointCount2 - 2
Dim pPoint2 As IPoint
Set pPoint2 = pPointCollection2.Point(j)
If pGongCount < 2 Then
If IsPointCloseEnough(pPoint1, pPoint2) Then
pGongCount = pGongCount + 1
End If
End If
Next
Else
IsGongbian = True
End If
Next
If pGongCount < 2 Then
back = False
Else
back = True
End If
IsGongbian = back
End Function
'判断这两点是否足够近,
'判断阀值0.1
Function IsPointCloseEnough(pPoint1 As IPoint, pPoint2 As IPoint) As Boolean
Dim back As Boolean
Dim pFaZhi As Double
pFaZhi = 0.1
If Abs(pPoint1.X - pPoint2.X) < pFaZhi And Abs(pPoint1.Y - pPoint2.Y) < pFaZhi Then
back = True
Else
back = False
End If
IsPointCloseEnough = back
End Function
在ArcGIS VB环境中如果运行可行,则可通过Customize中Commands选项添加“Macros”,自定义查找“8字型”图斑的工具按扭,存放于常用工具条中,即可进行日常“8字型”宗地的检查。
4 结论
农村集体土地确权数据是空间数据的一种表现形式,ArcGIS软件提供了多种类型的数据拓扑检查方式,软件本身提供了丰富的拓扑检查规则,可以直接利用,也可通过多项功能的叠加进行检查,还提供了开放式的平台,针对复杂的空间关系进行检查。
参考文献
[1] 江西省农村地籍调查技术规定.