推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

基于Python的数据组织重构工具设计与实现

更新时间:2019-12-25 14:08:13 大小:2M 上传用户:songhuahua查看TA发布的资源 标签:python 下载积分:1分 评价赚积分 (如何评价?) 打赏 收藏 评论(0) 举报

资料介绍

城市大比例尺基础地理信息数据是数字城市地理空间框架建设的重要组成部分,为保证全省基础地理信息数据结构的一致性,通过研究编码转换、数据结构重组等的自动处理方法,开发了自动模型转换处理程序。


部分文件列表

文件名 大小
基于Python的数据组织重构工具设计与实现.pdf 2M

部分页面预览

(完整内容请下载后查看)
Nov.,2017  
Vol.15,No.11  
2017 年 11 月  
第 15 卷第 11 期  
地 理 空 间 信 息  
GEOSPATIAL INFORMATION  
doi:10.3969/j.issn.1672-4623.2017.11.020  
基于 Python 的数据组织重构工具设计与实现  
黄冠贤 1  
(1. 广东省国土资源测绘院,广东 广州 510500)  
摘ꢀ 要 城市大比例尺基础地理信息数据是数字城市地理空间框架建设的重要组成部分,为保证全省基础地理信息数据结构的  
一致性,通过研究编码转换、数据结构重组等的自动处理方法,开发了自动模型转换处理程序。  
关键词 基础地理信息数据 码转换 据重组  
中图分类号 P208  
文献标志码 B  
文章编号 1672-4623(2017)11-0065-02  
1ꢀ 数据库转换需求  
3ꢀ 数据组织重构工具的设计思路  
国家测绘地理信息局于 2006 年启动了数字城市地  
理空间框架建设项目。近年来,广东省已在全省 23 个  
地级以上市和多个县区开展了数字城市地理空间框架  
的建设工作。基础地理信息数据是数字城市地理空间  
框架不可或缺的基础数据,也是其他信息空间化、标  
准化处理的基础和空间依据。为建设统一的公共服务  
平台,要求全省基础数据采用统一的数据建设标准。  
由于经济发展起步较早,广东省部分地区,尤其  
是珠三角的广州、顺德等地区地理信息数据建设较早,  
已形成其自身的基础数据标准体系,在分层、分类上  
与基础地理信息数据库的组织结构和国家最新数据标  
准 GB/T 13923-2006《基础地理信息要素分类与代码》  
存在差异,为保证广东省数字城市地理空间数据的统  
一性与共享性,需要将其进行数据组织重构,统一转  
换到国家标准基础地理信息要素分类体系中。数据组  
织重构涉及的数据内容较多,工序繁琐,采用人工处  
理的方式不但效率低下,而且容易出现处理错误和遗  
漏的情况 采用编程的方式,可将数据组织重构工  
作自动化,以保证数据处理的准确性和完整性。  
基础地理数据通常以分类代码为载体确定要素所属  
图层,再以图层为单位,定义数据的属性结构,因此,  
数据组织重构工具要从这个方向出发,完成数据的自动  
化处理。首先建立两个关系表 源数据库与目标数据  
库的要素分类代码及图层的对照关系表,用于数据的分  
层重构,②源数据图层与目标数据图层属性项的名称与  
内容的映射关系表,用于对要素属性的继承保留 后  
在 ArcGIS 环境下编写 Python 脚本,通过引入分类代码  
对照表对数据进行自动化地组织重构,属性项映射关系  
可直接写入脚本中,其主要流程如图 1 所示。  
源数据库  
分类代码对照表  
数据组织重构  
属性值映射  
特殊项人工处理  
多余字段清除  
目标数据库  
2ꢀ Python 与 Arcpy  
图 1ꢀ 数据组织结构重组流程图  
分类代码对照表通过分析源数据内容与目标数据  
Python 一种跨平台的开源脚本语因其功  
能强大且简单易学而得到广泛应用。Arcpy 是一个在  
ArcGIS 下以 ArcGIS Scripting 模块为基础并继承了其功  
能的站点包。它为以实用高效的方式通过 Python 执行  
地理数据分析、数据转换、数据管理和地图自动化创  
建基础。通过 Arcpy 能方便简单地使用 ArcGIS 自带的  
数据处理工具,简化编程难度,同时更符合数据生产  
人员的作业习惯。  
结构内容的关系,将分类名称一致的要素代码进行映  
射,同时确定该要素所在的图层。当源数据标准内容  
比目标数据标准内容多时,需要新增目标分类代码或  
将源要素移到其他层(other)备用。要素转换处理方  
式主要包括 素直接转换(1素转点(2;要  
素转线(3素构面(4)和其他(5人工判定。  
经整理,分类代码对照表如表 1 所示。  
收稿日期 2017-07-05。  
66  
· ·  
第 15 卷第 11 期  
地理空间信息  
表 1 分类代码对照表  
源数据名称  
源数据类型  
源数据图层  
HeLGQM_500  
HeLGQX_500  
HeLGQM_500  
源数据代码 目标数据名称 目标类型 目标图层 目标代码 处理方式  
运河  
运河岸线  
地面干渠  
游乐场  
线
2201003  
2201004  
2202013  
运河  
HYD_PY  
OTHER_LN  
HYD_PY  
220100  
1
1
1
2
地面干渠  
220201  
GongGFWYMSGJM_500  
3403013  
游乐场  
RES_PT  
340301  
上述要素图层才能进行转换,因此加入了约束条处  
理方式”=“1另外创建一个循环函数,将“处理  
4ꢀ 程序实现  
方式”=“2”的要素进行要素转点操作。  
Expression2 = delimitedField1 + "=" + newlyname+ " and "  
+ delimitedField2+ "=" +"2"  
4.1 要素组织重构  
要素组织重构功能,即读取要素代码表,根据要  
素对应的目标图层进行重新组织。为确保数据内容能  
完整保留,需要创建包含目标数据所有数据分层、源  
数据与目标数据所有属性项的过渡数据库,所有要素  
gp.SelectLayerByAttribute_management(templayer,"NEW_  
SELECTION",expression2)  
gp.FeatureToPoint_management(templayer,temp_  
ptlayer,"INSIDE")  
均需导入过渡数据库中。部分代码如下 :  
inputworkspace = "D:\ 源数据样例 .gdb"  
outputworkspace = "D:\ 目标数据库 .gdb"  
link_file = " D:\ 分类代码对照表 .dbf" 定义输入数据库  
与输出数据库  
至于范围线构面、面提取中心线或其他较为复杂  
的几何模型转换,则需人工处理。  
4.2 属性规整  
属性结构规整分为 3 步 按照目标数据标准中  
定义的属性字段和类型长度给目标数据库添加属性项,  
需在要素图层转换前完成 按照属性值对应关系将  
旧的属性值赋予新的属性字段 删除旧属性项完成  
属性结构规整。  
gp = ArcGISscripting.create ( )  
gp. workspace = inputworkspace  
lyLists = gp.ListFeatureClasses("","") 获取源数据库图层  
列表  
gp2 = ArcGISscripting.create ( )  
gp2. workspace = outputworkspace  
属性项映射中最为重要的部分是分类代码的映射,  
通过已关联的分类代码对照表,将目标分类代码直接  
newlyLists =gp2.ListFeatureClasses("","") 获取目标数据  
库图层列表  
赋值给目标数据的 GB 项,其代码为 :  
for lyname in lyLists:源数据图层循环  
for newlyname in newlyLists:  
try:  
gp. MakeFeatureLayer_management(lyname,templayer)  
创建要素图层  
gp2.CalculateField_management(newlyname,"GB","[ 目 标  
代码 ]","VB","")对目标分类代码赋值  
gp.JoinField_management(lyname,"YaoSDM",link_file," 源  
数据代码 ",[" 目标数据代码 "," 目标数据名称 "," 目标数据图  
"])通过源数据代码挂接分类代码对照表获取目标代  
目标图层的信息  
except:  
对于其他属性项,即使是不同组织结构的基础数  
据,其同一类要素也具有相同或类似的属性内容,如  
道路数据的名称、编号、路宽、材质等,该类属性在  
源数据与目标数据之间是共通的,仅属性项名称不一  
致,能直接按照分类代码的方式映射。经分析,若属  
性值不能直转,则需进行人工处理。  
for newlyname in newlyLists: 目标图层循环  
delimitedField1 = gp.AddFieldDelimiters(templayer, " 标  
图层 ")  
delimitedField2 = gp.AddFieldDelimiters(templayer, " 理  
方式 ")  
4.3 多余属性项清理  
expression = delimitedField1 + "=" + newlyname+ " and " +  
delimitedField2+ "=" +"1"  
为方便数据的检核对比,在清理旧属性项前,可  
对中间数据库进行检查和备份操作 核无误后,可  
gp.SelectLayerByAttribute_management(templayer,"NEW_  
SELECTION",expression)  
删除旧属性项留目标数据标准的属性项代码为:  
for newlyname in newlyLists:  
gp.Append_management(lyname,outputworkspace + os.sep  
+ newlyname,"NO_TEST","","")选取目标图层的要素内容追  
加到目标数据库的目标图层中  
gp2.DeleteField_management (newlyname ,"[ 目 标 代 码 ]"  
," [CengS] "," [YaoSDM]",……)删除旧图层  
(下转第 73 页)  
当源数据与目标数据为同一几何模型的要素时,  

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单

推荐下载