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

基于Python编程的DEM元数据自动化归档

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

资料介绍

为了提高基础测绘数字线划图(DLG)、数字高程模型(DEM)、正射影像(DOM)元数据的生产效率和准确率,本文结合工作中的实际情况,以DEM元数据生产为例,用Python进行Excel格式的元数据生产编程以及使用Python自带的界面编程模块Tkinter辅助生产。这种方式简化了元数据生产流程,并实现快速自动化生产。


部分文件列表

文件名 大小
基于Python编程的DEM元数据自动化归档.pdf 1M

部分页面预览

(完整内容请下载后查看)
技术交流  
jishujiaoliu  
基于 Python 编程的 DEM 元数据自动化归档  
刘 燕 张明娟 李春林  
(青海省第一测绘院,青海西宁 810000)  
:  
为了提高基础测绘数字线划图(DLG数字高程模型(DEM正射影像(DOM)元数据的生产  
效率和准确率,本文结合工作中的实际情况,以 DEM 元数据生产为例,用 Python 进行 Excel 格式的元数  
据生产编程以及使用 Python 自带的界面编程模块 Tkinter 辅助生产。这种方式简化了元数据生产流程,并  
实现快速自动化生产。  
关键:  
Python 数据 Tkinter Excel  
元数据是关于数据的描述性数据,即数据的标  
并生成元数据文件。  
识、覆盖范围、质量、空间和时间模式、空间参照系 1 设计思路  
和分发等信息。地理栅格元数据是描述地理栅格数据  
的数据 , 赋予了地理栅格数据语义上的信息 , 和地理  
栅格数据同等重要。在基础测绘生产中,元数据与基  
础地理数据一并做为入库数据。元数据的一般格式为  
Excel 的 xls,有的为 xml 文件格式。基础测绘 DEM  
元数据数据格式一般规定为 xls 格式。元数据的数据  
项共有 55 项,主要包括数据来源、空间特征、时间  
特征、内容等,数据的自带属性和数据所属单位等。  
目前,生产单位采用手动填写 Excel 表的方式进行元  
数据生产。其中涉及属性项的内容需要通过第三方软  
件,如 ArcGIS 等进行查询。这种方式耗费大量的时  
间成本与人力成本。为了实现元数据的快速自动化生  
成,采用 Python 编程对 DEM 的信息进行自动提取,  
Python 是一种面向对象、解释型计算机程序设  
计语言,具有丰富和强大的库。GDAL(Geospatial Data  
Abstraction Library) 是一个在 X/MIT 许可协议下的开  
源栅格空间数据转换库。它利用抽象数据模型来表  
达所支持的各种文件格式。GDAL 提供对多种栅格  
数 据 的 支 持, 包 括 Arc/Info ASCII Grid(asc),GeoTiff  
(tiff),Erdas ImagineImages(img),ASCII DEM(dem)  
等 格 式。 满 足 了 对 DEM 的 格 式 支 持。 通 过 调 用  
GDAL(Geospatial Data Abstraction Library) 库来识别栅  
格数据 DEM。DEM 数据格式为 Excel 的 xls,需导入  
xlwt 和 xlrd 模块进行 Excel 表格的写入操作。为了更  
好的进行人机交互,加入 Python GUI 编程,采用导  
入 Tkinter 模块的方式快速的创建程序界面。  
QINGHAIGUOTUJINGLUE  
72  
青海国土经略·技术交流  
2 具体内容  
元数据文件中总共有 55 个数据项,数据项根据  
BDEMb = Button(rootDEM,text = " 取消 ",command  
= rootDEM.destroy)  
不同来源方式可以分为固定项、手动填写项、间接获  
取项三大类。  
BDEMb.grid(row = 10,column =2,sticky = E)  
2.3 从数据间接获取项  
2.1 固定项  
(1)数据文件的读取  
元数据中数据名称、产品代号、数据生产单位  
等项,在同一个生产单位都是固定的,故这些项可以  
直接进行输出。将固定输出项按行写出 , 每一行作为  
一个数组,每一行中的一项作为数组的一个元素。如  
下所示∶  
选用 Python 中 os 块获取相关路使用 for  
循环来循环遍历指定路径下的文件。  
for files in os.listdir(DEMpath):  
dataset = gdal.Open(os.path.join(DEMpath,files))  
name,suffix = os.path.splitext(files)  
row0 = [" 序号 "," 数据项名称 "," 数据内容 "]  
row1 = ["1"," 数据名称 ","1 ∶ 10000 数字高程模  
型 "]  
(2)数据描述性信息提取  
栅格文件的描述性信息用 Gdal() 函数获取。使用  
adfGeoTransform 函数提取 DEM 数据的起始坐标 X,Y ∶  
originX=adfGeoTransform[0]  
row2 = ["2"," 产品代号 ","B"]  
row3 = ["3"," 分幅图名 ",""]  
originY=adfGeoTransform[3]  
对 dataset 数据集操作,获取数据的行列号∶  
hang = dataset.RasterXSize  
row53 = ["53"," 分发者单位名称 "," 青海省基础  
地理信息中心 "]  
lie = dataset.RasterYSize  
row54 = ["54"," 分发者电子邮箱地址 ","QHD%@  
QHCH.COM"]  
数据量大小用 os.path.getsize() 函数获取,获取的  
数据量单位为 bite,最后转为 M。  
row55 = ["55"," 分发者网络地址 ","WWW.QHGIS.  
CN"]  
size=os.path.getsize(os.path.join(DEMpath,files))  
size1=round((size+1024)/1024.0/1024.0,1)  
row16 = ["16"," 数据量 ",size1]  
2.2 手动填写项  
根据项目需要,如数据生产时间、元数据创建  
日期、分幅地形类别等数据项采用手工填写。利用导  
入 Python 自带的 Tkinter 模块,实现界面编程,手动  
填写∶  
(3)DEM 图廓角点经纬度范围  
1 ∶ 1 万图幅遵循国家基本比例尺地形图分幅  
与编号方法,以 1 ∶ 100 万为基础,根据不同的经  
度差和纬度差进行不同比例尺地形图划分。下图为  
1 ∶ 50 万至 1 ∶ 5000 地形图的编号方式∶  
LDEM3 = Label(rootDEM,text = " 据生产时间 (  
例∶ 201509)")  
LDEM3.grid(row = 2,column = 0,sticky = W)  
EDEM3 = Entry(rootDEM)  
EDEM3.grid(row = 2,column = 1,sticky = W)  
将函数实现过程进行自定义,在运行时直接调  
用自定义函数∶  
图1 1∶501∶5000形图图号构成  
def DEM():  
不同比例尺规定用不同的代码如下图所示∶  
DEMpath = EDEM1.get()  
FILEpath = EDEM2.get()  
图2 例尺代码图  
BDEMa = Button(rootDEM,text = " 运行 ",command  
= DEM)  
使用 1 ∶ 1 万基础测绘作为实验数据,故地图  
比例尺字符代码为 G。经差为 3’45”, 纬差为 2’30”  
BDEMa.grid(row = 10,column =1,sticky = E)  
2018年第2期  
73  

全部评论(0)

暂无评论