地形图自动分幅模型的设计与实现
2021-04-20李小强杨俊山
李小强 杨俊山
(1. 郑州铁路职业技术学院 铁道工程学院, 河南 郑州 451460; 2. 河南省地球物理空间信息研究院, 河南 郑州 450009)
0 引言
地形图的分幅与编号,在地图的生产、管理和使用中都有重要意义。我国国家基本比例尺有1∶100万~1∶500共11种比例尺,各种比例尺地形图在1∶100万分幅和编号的基础上逐级分幅和编号[1]。ArcGIS是一个全面的、可伸缩的地理信息系统(Geographic Information System,GIS)平台,提供了400余个地理处理(Geoprocessing)工具,为用户提供完整的解决方案[2-3]。利用ArcGIS进行地形图分幅需要操作者熟练掌握各个地理处理工具和图幅编号的计算方法,通过多步骤配置建立[4-5],操作起来较为复杂,且对于不同研究区分别构建地形图分幅空间数据库(以下简称“分幅数据库”)时会造成大量重复劳动。有学者利用ArcPy[6]、ArcObject[7]、ArcEngine[8]等结合高级编程语言实现了分幅数据库的构建,但需要操作者具有较高的编程能力。另外,实际生产中,生产单位技术实力参差不齐,有些单位将任意间隔的矩形分幅出图,不利于成果的统一管理和使用。所以有必要找出一种更快捷、便利的分幅数据库构建方法。
本文基于ArcGIS Model Builder设计了一套地形图自动分幅的地理处理模型,实现了自动构建适应研究区范围的多种比例尺地形图分幅空间数据库的功能,从而为地形图的批量分幅编制与输出提供基础[9-10]。
1 原理与流程
ArcGIS系统下的Model Builder是用于构建工作流的可视化编程语言,可用来创建、编辑和管理模型,而模型是将一系列地理处理工具串联在一起的工作流[11-12],使用户能够在短时间内设计出满足特定任务要求的模型[13-15]。利用Model Builder进行建模的关键是将整个建模过程分解为一系列GIS数据批处理、文件转换和空间分析操作,图1为地形图自动分幅模型的设计流程。
图1 模型设计流程
2 模型设计实现
模型中通过变量来保存值或对磁盘数据进行引用,数据的类型多种多样,可以是数据库中的要素类、表、栅格数据集、shapefile、coverage等。本文研究以矢量数据为输入数据的分幅数据库构建实现过程,其他类型数据可以通过相关地理处理完成向矢量数据的转换。
2.1 自动预处理
2.1.1投影变换
我国基本比例尺地形图是按规定的经差和纬差进行分幅的,当一个矢量数据的地理空间参考未定义或与目标地理坐标系(如2000国家大地坐标系、1980国家大地坐标系)不同时,需要进行投影变换。首先调用ArcToolBox下数据管理工具箱(Data Management Tools)中的投影(Project)工具实现投影变换。为使用户能够在模型工具对话框中指定相关变量的值,增加模型工具对话框的友好性和共享性,设置相关变量为模型参数(变量右上角带P标识)(图2)。
2.1.2数据融合
通过融合操作,可以将包含多个要素的矢量数据融合成为只有一个要素的数据,从而可以方便地获取矢量数据的空间几何信息,如几何中心点、西南角、东北角坐标,而这些信息将用来计算分幅参数。
图2 投影变换和数据融合 注:P是标识出变量的符号
2.1.3分幅参数计算
分幅参数主要包括比例尺、经差、纬差、原点坐标、Y轴坐标、右上角坐标等,各个参数的含义及作用如表1。通过向融合后的矢量成果中添加相关字段并计算来存储分幅参数,各字段名称及计算表达式如表2所示。在Data Management Tools中调用添加字段(Add Field)工具依次完成相关字段的添加,调用计算字段(Calculate Field)工具依次完成字段的计算存储。经过分幅参数计算后,得到预处理结果图层,模型如图3所示。
图3 自动预处理模型 注:P是标识出变量的符号
表1 各分幅参数含义及作用
表2 字段计算详细说明
2.2 自动分幅
2.2.1分幅数据库几何构建
创建渔网(Create Fishnet)地理处理工具可实现分幅矢量数据的创建。Create Fishnet需要的分幅参数包括:图幅的空间范围、宽度和高度以及旋转的角度。通过获取字段值(Get Field Value)地理处理工具获取预处理矢量结果中的相关字段值,作为Create Fishnet工具的输入,便将分幅参数传递给Create Fishnet工具,实现分幅数据库几何空间的构建(图4)。新构建的图幅缺少空间参考信息,调用Define Projection(定义投影)将图幅定义为指定的地理坐标系。
2.2.2分幅数据库属性赋值
图4 分幅初步构建处理 注:P是标识出变量的符号
图幅属性赋值主要是本图幅及其邻接图幅编号的计算。图幅编号由其所在1∶100万地形图的图号、比例尺代码和各图幅行列号组成。通过向图幅图层中添加并计算字段来实现,字段计算VB代码如下,图幅编号等于A&B&C&D&E。邻接图幅编号的计算方法与之类似,只需在图幅的行号D和列号E计算时调整±1即可,在此不在赘述。
‘A、B为1∶100万地形图图号的行号和列号,[CY]、[CX]为图幅中心点纬度和经度坐标。
A=CHR(Int([CY]/4)+65)
B=Right("0"& (Int([CX]/6)+31),2)
‘JC、WC为经差和纬差,C为比例尺代码,三个参数均通过模型行内变量替换获取。
JC=%宽度%
WC=%高度%
C="%比例尺代码%"
If (C="B" or C="C" or C="D" or C="E" or C="F" or C="G" or C="H" or C="I") Then
‘D、E表示图幅在指定比例尺中的行号和列号。
D=Right ("000"& Round((4/WC-Int(([CY]-Int([CY]/4)*4)/WC)),0),3)
E=Right ("000"& (Int(([CX]-Int ([CX]/6)*6)/JC)+1),3)
ElseIf (C="J" or C="K") Then
D=Right ("0000"& Round((4/WC-Int(([CY]-Int([CY]/4)*4)/WC)),0),4)
E=Right ("0000"& (Int(([CX]-Int ([CX]/6)*6)/JC)+1),4)
End If
分幅数据库几何构建和属性赋值后,即完成了分幅数据库的初步构建,模型如图4所示。
2.2.3图幅筛选
经过以上步骤得到的分幅数据库初步构建结果的空间范围为原点坐标和右上角坐标构成的矩形区域,含有多余图幅。为获得与原始矢量数据范围相适应的图幅,调用按位置选择(Select Layer By Location)工具将预处理结果与初步构建的分幅数据库进行叠置筛选,再用复制要素(Copy Features)输出即可。至此,完成了地形图自动分幅模型的设计,实现了覆盖某一矢量数据范围的用户指定比例尺地形图分幅数据库的自动构建功能。模型整体设计如图5所示。
图5 完整的地形图自动分幅模型 注:P是标识出变量的符号
3 应用实例
以信阳市浉河区第三次全国土地调查(简称“三调”)外业调查工作底图分幅编制为例,验证地形图自动分幅模型的有效性、便利性。三调的主要任务包括土地利用现状调查、土地权属调查、专项用地调查与评价、国土调查数据库建设及成果汇总等[16]。为保证项目进度、做好任务分发,提高精细化、标准化管理水平,需将相关基础数据渲染制作成工作底图分幅输出。利用地形图分幅空间数据库自动构建模型,利用模型对数据进行自动化、流程化处理,ArcGIS初学者即可快速实现1∶5 000、1∶2 000分幅数据库的构建,为外业调查工作底图批量分幅编制输出提供了数据基础,有利于项目的快速开展。
4 结束语
本文利用ArcGIS Model Builder对相关地理处理工具进行流程化组合,设计了一套基于ArcGIS Model Builder的地形图自动分幅模型,实现了自动构建适应研究区范围的多种比例尺地形图分幅空间数据库的功能。(1)该模型可在任一搭载有符合ESRI空间建模标准环境的计算机中运行,可以很好地实现共享与复用;(2)避免了常规方法的烦琐操作,省去了中间数据,大大提高了地理数据处理效率,降低作业人员的劳动强度;(3)该模型可应用在国土、测绘、城建、规划、林业、地矿等行业生产和管理中,具有较好的推广意义。