CAD格式转ARCGIS格式多图层数据的处理——以某县社界为例

(整期优先)网络出版时间:2023-10-20
/ 3

CAD格式转ARCGIS格式多图层数据的处理——以某县社界为例

刘波

达州市自然资源和规划局东部经开区分局

摘要日常工作中有大量的CAD格式(DWG)的数据需要转换成ARCGIS格式(SHP)在ARCGIS中使用,但转换时有许多数据信息会丢失、变化,如何保存尽可能多的准确、完整的信息,是数据转换质量的关键指标。本文以某县CAD格式的社界转为ARCGIS格式为例,介绍了如何将社界转换为shp格式的同时,将社名,幅员面积,图幅号等注记转为社界shp文件的属性字段。尽管CAD文件情况和数据千差万别,但其中的处理方具有一定的普遍用途,一些处理技巧希望能够对有需要的同行有所裨益,也希望能够抛砖引玉,与广大同行探讨交流。

关键词:CAD;ARCGIS;数据格式;转换

某县的“全县社界总图.DWG”为54坐标系,坐标未加带号,包含全县社界、社名、所在图幅号、面积等信息。其中社界在“社界层”图层,社名在“社界注记”图层(社名中含乡镇村社名),面积和图幅号在“实测面积及所在图幅”图层,面积与所在图幅号为分数标注形式,面积在上,图幅号在下,中间有一分数线,分数线也在此图层中。其他还有“征地线”、“指标范围”等图层共计15个图层。

本次拟提取社界、社名、面积、图幅号信息,将社界范围转为Arcgis(shp)格式文件并将社名、面积、图幅号信息导入该shp文件的属性表中,

总体思路是用转换工具将CAD信息先导入到地理数据库中,将线文件转换为shape后,将annotation注记层转换为点文件;将线文件中除社界外的其他线(分数线、征地线等)剔除,只保留社界线再转为面,将点文件中的社名、图幅号、面积分离成3个点文件;再用拓扑检查后的社界面文件与三个点文件分别进行“空间连接”,将社名、图幅号、面积赋给社界面文件的属性表中;再用Arcgis自动计算出来的shape area几何面积核实与从CAD注记导出到属性表的面积是否一致验证验算,修改错误后完成转换。如果需要,可以用制图综合工具的融合工具,按社名字段将各社区飞地与本社融合为一个面。

一、导入数据库

1、新建地理数据库和数据集

在ArcCatalog中新建文件地理数据库“sj.gdb”,在库中新建要素数据集“sj”,选择54坐标系“GK CM 108E”,其他接受默认。右键sj.gdb,选择将它“设为默认地理数据库”(后面工作生成文件时免去反复选库的麻烦。注意:后面生成的文件均要进入到sj要素数据集中,才能拓扑)

2、导入数据

在arcmap中打开社界CAD图。打开arctoolbox工具箱中“转换工具-转出至地理数据库-要素类至地理数据库(批量)”工具,在输入要素中选Annotation图层和Polyline图层两个图层,在输出地理数据库中选sj.gdb中sj要素数据集,确认转换。转换后注记生成为点图层,社界等线生成为线图层(转换工具也可以用“转换工具-转出至地理数据库-CAD至地理数据库”工具,但这种转换出来的注记点文件位置偏移比“要素至地理数据库批量”工具要大)。

二、转换社界SHP图层

先仔细观察分析,此时每个社和飞地均包含三个点和一根分数线,也还有征地线、规划范围线等线,仔细分析两个图层和其属性表,发现有layer字段和refname字段,利用layer字段通过属性选择可以灵活地将我们需要的要素提取出来。Refname字段中面积、图幅号、社界名也各有显著特征,可以通过相关函数对它们进行分离。

1、提取社界线

打开polyline线图层的属性表,其layer字段中有“社界层”、“实测面积”、“所在图幅”、“征地边线”、“0-征地线”等值,通过检查对比属性表记录与图形,其中“实测面积及所在图幅”值是分数线,“社界层”是社界线,其它值与社界无关,因此只有字段值为“社界层”记录才是我们需要的社界线。打开“按属性选择”窗口(SQL查询),双击layer字段,单击“=”,再点击“获取唯一值”,在唯一值中选择双击“社界层”,点击“应用”,此时将所有社界选中了,(此时观察看到属性表最后,有两条“社界层”记录与其他社界层没在一起,这两条记录可以用“缩放至”或双击记录选中查看其图形,发现并非社界,可能是其它范围线,且未封闭,要特别注意)。在点击切换选择,此时所有非社界记录被选中,进入编辑状态,点击属性表上方的“×”删除按钮删除选中的记录,此时属性表中就是剩下“社界层”记录了。观察此时属性表中最后两条记录。就是上述发现的两条记录,查看其图形,确定其并非社界,删除后其相邻或重叠的其他社界仍然完整,再观察其Entiy字段值也与其他社界记录的值不一样,其他社界值都是“2Dpolyline”,而这两条是“LWpolyline”,再查看其他记录是否也还有“LWpolyline”值,如有,对比记录也要认真分析比对,不是社界的也要删除。检查处理完成后,就全是社界的线了。

2、拓扑检查社界线(地图拓扑)

对上面提取的社界线用是否存在悬挂、是否封闭的规则进行拓扑检查(地图拓扑),对出现拓扑错误的地方进行处理,删除悬挂线,修正各社界至封闭。

3、社界线生成社界面

打开工具中“数据管理工具-要素-要素转面”,输入要素选择社界线图层,输出要素也要选择在数据集sj中新命名为“社界面”,其他选择默认,确定后生成社界面图层。此时其属性只有默认的属性(有面自动生成的shape-area面积字段属性),无社名、图幅、面积等属性字段。至此线图层处理完毕。社界的矢量范围转换完成。

三、分离注记图层

接下来开始处理点图层(注记图层)。点图层有layer、refname等字段。在layer字段中,有“社界注记”、“实测面积及所在图幅”等值。观察分析发现,layer字段中为“社界注记”值的记录对应的refname字段中的值就是社名,因此可以直接用layer字段选择将社名记录提取出来;而图幅号与面积注记在layer字段中的值均为“实测面积及所在图幅”,因此用layer字段无法将此二者分离出来,而在refname字段值中发现,图幅号与面积并未在同一条记录中,该字段值以字母H开头的就是图幅号的记录,该字段值以数字开头且全为数字的就是面积的记录。因此可以先用layer字段将“实测面积及所在图幅”所有记录选出来,这些记录就是图幅号和面积注记,将其他记录删除,再用refname字段将图幅号记录提取出来,剩余的就是面积注记记录了。

根据点图层上述特点,拟将三类记录分别提取出来导出为新的图层,从而分离出社名、图幅号、面积三个新的点图层。

1、从点图层分离社名

打开点图层属性表,打开“按属性选择”,点击layer字段,点击“=”,点获取唯一值,在唯一值中点击“社界注记”,点击应用,此时将所有社界名注记选中,在弹出菜单中直接选择“数据-导出数据”,导出选“所选要素”,输出要素类要选择在sj集中,输入要保存的文件名,确定即可生成新的社界名注记图层

2、从点图层分离图幅号和面积

在表上点击按属性选择,双击layer字段,双击“=”,点击“获取唯一值”,在唯一值中选择“实测面积及所在图幅”,点击应用,就选中了所有面积和图幅号注记,再在表上点击“切换选择”,反选中不是图幅号和面积注记的记录,打开编辑状态,点击属性表上方的“×”删除按钮删除选中的所有不是图幅号和面积注记的记录,保存编辑内容,表中剩下的就是图幅号和面积注记了的记录了。

再打开表的按属性选择,选择refname字段,表达式中选择Like(R)函数,后面输入“H%”,选中所有H开头的图幅号记录,导出即为图幅号图层。

将选中的图幅号记录导出后,删除点图层表中的选中的图幅号记录(点图层可编辑状态下,点击“×”删除按钮)剩下的记录就是面积注记,将剩余记录导出为新图层(面积注记图层)即为面积图层。

至此将社名、图幅号、面积注记三个要素全部分离出来了。检查前面提取的社界面与上述分离出来的社名、图幅号、面积三个点图层(注记图层),四个图层属性表中的记录的条数应当是一致的。

四、注记信息赋值属性字段

由于原图中社界与注记点均是一一对应的,社界面与三个分离出来的注记图层由于系统原因,会有小范围的错位,尚不能一一对应,运用拓扑工具(地理数据库拓扑)检查社界面与注记的逻辑状态,将社界面与注记修正到一一对应,三个注记图层中的分别每个点注记对应社界面图层中的一个面,且社界面图层中每个面只包含一个点。然后再通过空间连接这个强大的工具将上述三个注记属性赋值给社界面图层属性,写入社界面图层属性表中。

1、拓扑验证和修改(地理数据库拓扑)

首先拓扑检查社界面与社名注记图层,在sj.gdb下选中sj数据集,新建名称为“社界面与社界名拓扑”的拓扑,要素选择选择社界面和社界名注记两个要素图层打钩,添加两个拓扑规则:一是“必须完全位于内部”规则(确保社名在对应的社界内),要素类的要素选“社界名注记”,要素类选“社界面”,点确定再添加第二个“包含一个点”规则(确保每个社界面内只有一个社名),要素类的要素选社界面,要素类选社界名注记,点确定添加第二条规则。其它默认即可,生成社界面与社名拓扑通过验证。

将已验证的拓扑加入图中(拓扑图层最好添加在社名图层与社界面之间,方便在编辑时将点准确移到面内,否则拓扑图层容易将点覆盖遮住影响操作),此时点不在社界范围内的或一社包含多个点或无点注记的在拓扑图层中会显示红色。编辑社名图层并社名图层设为唯一可选图层,对照CAD社界图形,运行拓扑工具条上的“错误检查器”和“验证当前范围中的拓扑”工具,逐片区全部修正所有拓扑错误,将不在本社界范围内的注记移动到本社社界范围内,达到注记与社界面一一对应。

用同样方法验证修改完图幅号、面积注记的拓扑错误达到各注记点与社界面中的社一一对应。

2、连接社界面与注记,添加属性字段

打开工具中“分析工具-叠加分析-空间连接”工具,目标要素选择社界面图层,连接要素选择社界名注记图层,输出要素类选择sj.gdb库下sj数据集并新建社界面与社名连接图层,图层连接操作选择“join-one-to-one”(一对一),选择保留所有目标要素前打钩,连接字段映射可以选择只留下refname字段,其他可删除,其他选择默认,点确定。生成新图层“社界面与社名连接”,打开属性表可见其已添加了字段refname,其值为社名。可将refname字段添加别名“社名”。添加“社名”字段,用字段计算器将refname字段值复印赋值给“社名”字段,社名注记就成功转换为shp文件的属性了。

用新的“社界面与社名连接”图层,用同样方法逐个与图幅号、面积注记连接,完成给社界面导入注记的属性字段。

在导入了注记属性字段的新图层中删除不需要的多余字段,该图层就是转换后的shp格式的社界了。

五、面积对比与检查

打开上述shp格式的社界图层,打开属性表,添加字段“计算面积”、“面积差”两个字段,“计算面积”字段值用“计算几何”计算出社界的几何面积值,“面积差”字段用字段计算器计算注记导入的“面积”字段值与“计算面积”字段值(图形的几何面积)的差赋值,注意“面积”字段为文本型,要用CDBL(string)函数转为双精度数值型才能与“计算面积”字段运算。

观察面积差的值,因为四舍五入,导致面积差中有小数值,并不为0,将面积差大于1的记录选出来逐条查看,对图形和属性表数据进行分析,根据面积注记值与该社图形范围大小及周边社进行对比,判断出注记正确的位置,将对应错误的点进行编辑移动至正确的社中,改正相应错误。将错误全部改正完成后可以将“面积差”字段和注记导入的“面积”字段删除,用“计算面积”字段做为该社的面积,保证图、数面积一致。

此时的shp社界图层,飞地与本社为两个面、两条记录,有时为了应用,需将飞地与本社融合为一个面,需要融合功能(“数据管理工具-制图综合-融合”工具)按照社名字段融合即可,并将面积汇总。

在数据格式的转换过程中,一定要认真观察和分析数据的特点、共性和差异,运用不同的工具进行提取、分离、合并、计算,并用多种方法进行验证、验算,对转换中系统产生的错误通过验证显现出来并加以改正,从而保证数据转换的质量。同时对各类工具的应用场景和细节有详细的把握,才能充分发挥各类工具的强大功能,从而保证转换的质量和效率。

参考文献:

[1] 李致博 土地勘测定界中ArcGIS空间分析工具的比较研究 《区域治理》2020年第17期  2020年6月

[2] 郭树林 ArcGIS地理配准和空间分析工具在改变林地用途案件分析中的应用 《安徽林业科技》2020年第1期:47-50

[3] 张敏 李明峰 徐行梅 沈洁 ArcGIS在地理国情要素数据编辑中的应用 《2015年海峡测绘技术交流会暨第十七届华东六省一市测绘学会学术交流会》 2015年:259-262

[4] 卢秀丽 浅谈GIS空间分析 《科技信息》 2013年第1期

[5] 许杰蕾 浅谈ArcGIS空间分析在构建土地全生命周期方面的应用研究 《2017年福建省土地学会学术年会》2017年:1-11