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

基于VB与Python的地理国情要素及地表覆盖统计实现

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

资料介绍

以地理国情监测数据为例,采用Visual Basic及Python语言自动化对MDB/GDB数据库进行分类统计。分别统计出高速公路、国道、省道、县道、乡道、常年河、干涸河、水渠、学校、政府、卫生院、行政村、泵站、宗教场所等(36个层)不同类型的国情要素数量,同时对国情监测图斑变化量(要素变化图斑数、地表覆盖变化图斑数、地表覆盖变化面积)进行批量计算。在实际应用中避免了需对每个要素层依次统计的繁琐,大幅减少了冗余工作量,进一步提高了工作效率。


部分文件列表

文件名 大小
基于VB与Python的地理国情要素及地表覆盖统计实现.pdf 792K

部分页面预览

(完整内容请下载后查看)
48 技术交流  
测绘技术装备 第 19 2017 年第 3 期  
基于 VB 与 Python 的地理国情要素及地表覆盖统计实现  
蒋好忱 1 雷宝佳 2 李小飞 1 秦先锋 1 田怀启 1  
(国家测绘地理信息局第一地形测量队 陕西西安 710054;  
2.国家测绘地理信息局第一地理信息制图院 陕西西安 710054)  
以地理国情监测数据为例用 Visual Basic 及 Python 语言自动化对 MDB/GDB 数据库进行分类统  
计。分别统计出高速公路、国道、省道、县道、乡道、常年河、干涸河、水渠、学校、政府、卫生院、行政  
村、泵站、宗教场所等(36 个层)不同类型的国情要素数量,同时对国情监测图斑变化量(要素变化图斑  
表覆盖变化图斑数表覆盖变化面积行批量计算实际应用中避免了需对每个要素层依次统  
计的繁琐,大幅减少了冗余工作量,进一步提高了工作效率。  
关键词:国情监测 自动 分类统计 面积  
1 引言  
BOUP7行政村点BOUA8中心城区BOUA9  
国情是指一个国家的社会经济发展状况、自然 (其他行政管理区BERA1(主体功能区BERA2  
地理环境、文化历史传统及国际关系等各个方面情 (开发区保税区BERP3国有林牧场BERA4自  
况的总和,也是一个国家某个时期的基本情况;是 然保护区BERA5(文化遗产BERA6(风景名胜  
国家制定发展战略和发展政策的依据和客观基础[1]。 区BERP6(风景名胜点BERA7(森林公园BERA8  
地理国情普查是我国一项重大的国情国力调查,内 (地质公园BERA9蓄洪区BGBA流域BGTA  
容繁多、复杂,主要分为地理国情要素与地表覆盖 (地形分区BGLA地貌类型单位BGWA湿地、  
两个部分。在数据库中,存在 1 个地表覆盖层以及 BGMA(沼泽区BUCA(单位院落面BUCP(单位  
36 个国情要素层,图班数量繁多、种类复杂。每一 院落点每个层中有不同的属性代码,以 HYDL 层  
个数据层中包含了大量的不同类型的数据对象,要 为例,数据库格式如表 1 所示。地表覆盖即 LCA 层,  
对每个图层中的不同要素类及地表覆盖数据分别进 其主要属性为 CC 码和 TAG 值。  
行统计会带来巨大的工作量。Visual Basic 语言是  
根据设计书及技术规定,国情普查数据采用  
一种面向对象的高级编程语言,简单易懂,运行速 CGCS2000 椭球 Gauss Kruger 分带投影,国情监测数  
度快;Python 是一种解释性的语言[2],是纯粹的自 据数学基础采用 CGCS2000 地理坐标系统。  
由软件、源代码和解释器,能够把用其他语言制作  
表 1 HYDL 层属性  
的各种模块很轻松地联结在一起。本文采用 VB、  
数据集  
名称  
数据  
分层  
要素  
内容  
Python 编写统计工具,对数据进行自动批量运算,  
可对国情要素数据进行分类统计、要素增量进行数  
量统计、地表增量进行数量及面积计算。此工具在  
实际应用中能够大幅缩短对地理国情要素的统计时  
间,同时实现了在无投影坐标情况下的 LCA 增量面  
积批量计算,减少了工作时间,提高了工作效率,  
在后期对数据量较大或最终成果数据的统计方面也  
具有一定的优势。  
属性项  
CC  
描述  
地理国情信息分  
类码  
基础地理信息分  
类码  
GB  
BAS  
流域  
名称  
NAME  
实体编码依据说  
ECRM  
河流、水  
2 数据基础  
TYPE  
EC  
河流类型  
实体编码  
级别  
水域  
HYDL  
(线)  
地理国情数据是以 ESRI-MDB/GDB 数据库的格式  
存储的,国情要素数据主要有 36 个层,包括:LRRL  
(铁路LRDL公路LCTL城市道路L V L L( 乡  
村道路HYDA水系面HYDL水系线S F C L( 构  
筑物线SFCP构筑物点SFCA构筑物面B O U L  
(行政界线BOUA1(国家级行政区BOUA2(省  
级行政区BOUA3(特别行政区BOUA4(地市级  
行政区BOUA5(县级行政区BOUA6(乡镇行政  
(H)  
(14)  
GRADE  
LEN  
长度  
PASS  
通航性质  
时令月份  
PERIOD  
SHRC 共享河段编码  
SDTF  
单双向  
WIDTH  
平均宽度  
测绘技术装备 第 19 2017 年第 3 期  
技术交流 49  
3 算法实现  
由于不同类型的要素具有其唯一的 GB 码,因此可根  
基于 VB 语言对数据库进行访问有很多种方法, 据 GB 码来区分要素类型。数据库记录可能存在三种  
包括 DAO(Data Access Object)[3-5]、RDO(Remote 情况:一是 GB 码相同、NAME(要素名称)不同。例  
Data Object)[6]、ADO(ActiveX Data Object)[7]。 如两个对象都属于常年河,但河流的名称不一样;  
本文利用了 ADO 控件通过 VB 语言来访问 MDB 数据库。 二是 GB 码相同NAME 也相同矢量格式的图形数  
ADO 实际上是 DAO、RDO 的后继产物,是一种面向对 据中,由于拓扑原因,同一个属性的对象可能被打  
象的供访问各种数据类型的连接机制[8]通过 断,因此在记录表中就会出现两条或多条重复的记  
对 对 象 链 接 和 嵌 入 数 据 库 (object link and 录;三是 GB 码和 NAME 都不同。在 VB 中调用 SQL 语  
embedding Database,OLE-DB)进行封装,具备了其 句对数据表中每一条记录的 GB 码进行一一筛选,当  
所有的功能OLE-DB 是一种底层数据访问界面接口, 遇到相同 GB 码时,对应的 GB 码要素类个数累加;  
是用于第三方驱动程序商家开发输出数据源到 ADO 当遇到不同的 GB 码时将个数重新累计到新的 GB  
的数据库组件,其不能被 VB 直接调用。而 ADO 通过 码中,当遇到多条记录的 GB 码和 NAME 都相同时,  
OLE-DB 可以访问任何类型的数据源。  
要素数量只累加 1 次。同时循环遍历所有 36 个数据  
层,最终可依次统计出不同要素的总个数。流程如  
3.1 地理国情要素批量统计  
需批量统计 36 个数据层中不同类型要素的个数,图 1 所示。  
数据记录表  
对每一条记录进行遍历  
GB 码相同、  
NAME 不同  
GB 码相同、  
NAME 相同  
GB 码不同、  
NAME 不同  
累加运算  
删除重复项累  
重新累计  
1 次  
刷新结果表  
图 1 国情要素统计算法流程  
SName = List1.List(i)  
将数据库与程序存放在同一个目录下,定义程  
序接口及相对路径,部分代码如下:  
Dim Con As New ADODB.Connection  
Con.Open  
If Rs.State = 1 Then Rs.Close  
Rs.Open "select DISTINCT Gb from " & SName &  
"", Con, 3, 3  
Rs1.Open "select COUNT(Gb) as 计算 from " &  
SName & " where GB = '" & A(j) & "' group by gb,name",  
Con, 3, 3  
"Provider=Microsoft.Jet.OLEDB.4.0;Data  
Source=" & App.Path & "\ 例 子 .mdb;Persist  
Security Info=False"  
Sum = Rs1.RecordCount  
Con.CursorLocation = adUseClient  
ProgressBar1.Min = 0  
Rs1.Close  
通过 GB 码和 NAME 对数据库进行分类统计,部  
分代码如下:  
以部分试验数据为例,经程序自动批量运算之  
后的所得结果如图 2 所示。  

全部评论(0)

暂无评论