APP下载

Arcpy支持下城市控规DWG数据到ArcGIS文件格式的快速转换

2021-09-10张海龙

热带地貌 2021年1期
关键词:数据格式图层要素

张海龙

(三亚市国土资源和测绘地理信息中心,三亚572000)

1 引言

自2019年初开始,随着市县级国土资源和城市规划管理部门的合并及内部业务科室的整合,县市级自然资源管理体制下的信息化建设已经进入了各类资源整合及业务系统的升级重构阶段。在此背景下,原国土、规划等管理部门积累形成的各类业务管理数据,尤其是空间矢量数据,均面临着数据格式、坐标系统、存储方式等统一问题。对于采用ArcGIS 作为空间数据管理平台的单位,其他非ArcGIS 格式的空间矢量数据都需逐步完成数据格式的转换与整合,特别是基于CAD 软件完成的城市控制性规划成果数据,由于该类数据在城市建设发展过程中各类审批使用最为频繁,其数据格式转换需求也最为紧迫。

对于DWG 文件格式的城市控制性规划数据向ArcGIS 的GDB(Geodatabase)转换,除了需完成数据格式转换外,还需对控规地块的约束性(控制)指标信息做进一步的处理。通常情况下DWG数据中的控制指标信息以文本形式单独存放于注记层,经过格式转换,其注记文本导入GDB 时会存入Annotation 层,但与DWG 下的存放方式一样,该注记信息仍然独立于对应的控规地块,为建立ArcGIS 下“图-属”一体化控规地块成果的应用,还需要基于转换后的控规地块做更多的空间叠加分析处理,以规划数据格式的转换为例。除上述工作外,还需要对转换后的数据进行合并、拼接等处理,整个处理过程操作繁琐,且工作量大、效率低。为解决多DWG 文件存储格式下的控规数据向ArcGIS GDB 格式的转换问题,特别是可自动完成控制指标注记的匹配和赋值,快速构建并形成“图-属”一体化的控规数据。本人借助Python强大的编程处理能力和ArcGIS 底层数据处理、空间分析能力,以本单位控制性规划数据转换任务为契机,通过简单的编程实现多DGW 文件控规数据向ArcGIS GDB 格式的转换,并同时实现对点、线、面、注记类型分层数据间的合并及控制指标信息与控规地块的自动匹配和关联。

2 控制性规划数据的特点

控制性详细规划关注的是规划单元和用地地块的综合设计,重点是强调单个用地地块的空间范围、利用方式、用地大小、使用性质、利用强度等。同时,还考虑用地地块内部及周边公共交通路网、市政公共设施配套,以及地块内交通出入口的方位、停车泊位、建筑后退红线距离等管控要求。其设计过程形成的控制性规划成果除了不同用途规划地块在空间位置上的用地大小、形状、范围等空间信息外,还有记录规划地块上使用过程中的强度约束指标信息,如地块的用地性质、建筑限高、可承载的总建筑面积、地块内的绿化率、容积率等控制性指标信息。基于DWG 格式的控制性规划成果,一般会依据规划管控对象要素的几何类型(点、线、面),分层定义对应的存储图层[1],而对于重要的多个控制指标属性信息,一般是通过注记层的方式,以单个文字或文字块的形式注记在对应的要素对象边界内。

以三亚市形成的城市控制性规划成果为例,截止2018年底,整个建成区范围内的控规成果共分为中心城区、亚龙湾、海棠湾、崖州、天涯、吉阳和育才7 个片区。每个片区控规成果的DWG图层中分别设置了“RD-中线”、“RD-红线”、“0-规划范围线”、“HX-地块线”、“KZ-控制指标”以及以“YD-”+字母开头的用途管控地块图层。其中,用途管控地块图层名称与国标(GB50137-2018)中规定的城市建设用地分类相对应。共计设置了44个图层(如图1所示)。

图1 CAD格式控规成果分层情况

在DWG文件中,除“RD-中线”、“RD-红线”、“0-规划范围线”等线状要素定义了线型样式外,其他面状用地地块图层均做了符号化的样式填充。而“KZ-控制指标”图层则用于存放控规地块的控制指标信息,涉及地块的编号、用地性质、地块面积、建筑面积、道路面积、容积率、建筑密度、建筑限高、绿地率,以及主出入口等,以九宫格(3*3 格网)方式进行了文字块标注(如图2)。

图2 控制指标注记内容及注记样式

由于CAD 下图层类型定义及要素存储的结构原因,控制指标注记信息与规划地块本身并未建立起数据间的关联关系,从视角上看只是在标注在规划地块的边界范围内[1]。因此,在处理此类DWG 格式控规数据格式转换时,需重点考虑如何将控制指标信息与对应的规划地块建立匹配关系,转换后形成“图-属”一体化的数据存储,并确保该部分信息在转换后保持对应关系的准确性、一致性。

3 DWG 格式控规成果向ArcGIS 格式转换的方法介绍

CAD 数据向ArcGIS 数据的转换,通常是借助CAD 或ArcGIS 软件下自带的转换工具来实现。但使用较多是采用ArcGIS 软件下工具箱中自带的转换工具,如在“转换工具(Cover tools)”下有“转出SHP”或“转出至地理数据库”工具。两种转换工具的处理过程相似,其中“转出SHP”工具是按CAD 下点、线、面、注记四种要素类型分别转成不同的SHP 文件(并不是按业务管理分类需要进行的数据分层处理),并且将DWG 下的注记类型数据转换成ArcGIS 下的Point 类型加以存储;而“转出至地理数据库”工具则是将整个DWG 文件中存在的要素类型一次性整体转换至一个指定的地理数据库中,并在地理数据库中按DWG 文件名创建相应的存储数据集,数据集内以要素类型存储成图层。

使用两个工具转换后的SHP 文件或GDB 数据库对应的图层中,都会自动生成一个存储要素在原DWG 下图层名称信息的字段(Layer),通过该字段可对转换后的数据要素再次进行分类提取和数据分离处理操作。但使用“转出至地理数据库”工具,对于DWG 下创建的文字块标注,在转换过程中除了能将对应文字转换成Annotation 图层外,还会按照标注文字块的空间区域大小,自动建立一个对应的矩形Polygon 要素对象,该对象的属性字段中会建立与所标注的控制指标信息数量一致且名称相对应的存储字段,并将转换前标注的文字信息以属性值加以存储,利用该结构可方便、快速实现注记文字与控规地块的挂接、关联处理。

在ArcGIS 下使用“转出至地理数据库”工具实现CAD 格式数据到ArcGIS 格式的数据转换过程主要工作步骤如下:

图3 DWG控规数据到ArcGIG数据转换基本流程

4 ArcGIS Python介绍及特点分析

Python 是一种简单易学、功能强大的编程语言,其语法简洁,支持动态输入,写法独特,再加上解释性语言的本质[2],使得它在大多数平台上的许多应用领域都是一个理想的脚本语言,特别适用于快速的应用程序开发,ArcGIS 从10.0 开始内置一个使用Python 进行ArcGIS 调用的开发包Arcpy,即ArcGIS 的Python API,它为用户提供了使用Python 语言操作所有地理处理工具(包括扩展模块)的入口,并提供了大量的函数和类,用于处理和访问ArcGIS数据[3]。通过这些函数或类,可以轻松调用ArcGIS Desktop 下所有工具箱工具,并能通过Python语言再次进行个性化的扩展。

因此,通过Python+ArcGIS 开发,对于处理一些相对简单的数据处理操作,简单的代码编写即可实现,十分方便快捷。目前Arcpy(Python2.7 以上)版本中包含了常用的数据处理(DA)、制图(Mapping)、分析(SA)和网络分析(NA)扩展模块[4]。使用Python 和Arcpy 直接编写代码,可开发出大量用于处理空间数据的应用程序或工具,如不同类型的数据格式转换、空间数据剪裁、数据融合等批量操作。

5 使用Arcpy 编程实现DWG 格式控规成果转换方法介绍

通过Arcpy 编程实现对多DWG 文件控规数据成果格式的转换,主要工作是借助程序代码调用ArcGIS 内置的数据处理功能,模拟手工操作过程,将数据处理过程间的衔接交由程序来完成,从而减少人工参与或处理的时间。整个代码的编写,主要是完成以下几部分事务的处理:

(1)是调用转换工具将多DWG 文件的控规成果数据逐个导入到指定的GDB 中,并在GDB 中自动生成以原DWG 文件名为数据集名,数据集下包含了转换后的点、线、面和注记的图层数据;

(2)在完成各DWG 文件导入GDB 数据库基础上,按照要素类型,对各数据集下的不同要素数据进行合并;

(3)对合并后的面状要素(Polygon)数据进行冗余字段的处理,删除不必要的转换过程临时存储字段,主要是删除记录要素转换前DWG 数据文件中图层样式信息的字段, 如DocPath、DocName、LyrFrzn、Entity、LyrLock 等字段,仅保留跟控规地块有关的地块面积、用地面积、建筑面积等控制指标信息字段;

图4 数据格式转换程序代码处理流程

(4)对合并后的面状要素(Polygon)数据依据字段“Layer”值进行分离提取,删除图层中Layer=“00-图框”(DWG 下定义的出图图廓范围);提取并删除原图层中Layer=“RD-红线”、“0-规划范围线”、“KZ-控制指标”的数据,其中Layer 字段值为“KZ-控制指标”的是DWG 中注记控制指标文字块所对应的多边形对象。既完成从合并的Polygon 图层中分离出控制指标注记文字块类数据和不同规划用途的控规地块数据;

(5)对分离出的控制指标注记文字块数据转换成点状要素数据,然后再与分离出的控规地块数据开展空间叠加分析,将指标信息与控规地块进行位置的匹配与赋值。

代码的编写主要工作流程是实现和处理以下内容:

具体的编写代码过程中,编写环境使用了pyCharm Professional 2020.2+Python2.7.14。主要功能代码如下:

6 结束语

通过以上代码可以看出,利用简短的Python程序代码既实现了对DWG 数据到GDB 数据格式的转换,同时在转换过程中还加入了类似数据的导出、合并、要素记录的删除、字段的删除,以及空间叠加分析等复杂操作。特别是对于处理类似DWG 格式下城市控规指标注记信息到ArcGIS 格式下,并实现多个注记属性值与指定空间要素对象的自动匹配、赋值问题,利用Arcpy 强大的数据处理能力和Python 本身简单易用的编码方式,可快速实现相应的转换及信息提取、更新的自动化处理,大大节省人工处理的操作时间,提高工作效率。作者结合单位正在开展的三亚市建设用地综合监管系统项目对DWG 格式规划数据的转换任务,使用上述代码几分钟内完成了7个片区控规成果的格式转换及规划指标注记信息的入库与挂接,实现了控规地块属性信息由CAD 下的文字标注方式向数据库存储方式的同步转换。

因此,对于多文件CAD 数据到ArcGIS 数据格式转换,借助GeoProcessing 工具,充分利用ArcGIS 下内嵌的Arcpy 编程来实现自动化转换处理,是一种简单、易行、高效的解决方法。不仅能快速实现数据格式间的转换,更重要的是可通过简单的语句随时加入特定数据处理动作或任务处理需求。构建出高效、便捷、实用的数据处理工具。

猜你喜欢

数据格式图层要素
为《飞舞的空竹龙》加动感
以假乱真窥探湿玻璃后的风景
与众不同“跳出”画面更个性
MIT—BIH心率失常数据库的识读
基于RFID的户外广告监管系统的设计与实现
一种融合多业务的信息化系统框架研究
2015年8月债券发行要素一览表
2015年6月债券发行要素一览表
随心所欲制作逼真阴影效果