admin 管理员组文章数量: 1184232
2024年4月25日发(作者:c语言嵌入式点灯)
第
44
卷第
6
期
2021
年
6
月
测绘与空间地理信息
GEO
胚
477CS
&
SB47Z4
厶
/NF0R
胚
4770
幷
fECRNO
厶
0GY
Vol.44
,
No.6
Jun.
,
2021
基于
Python
实现地理空间数据批处理
技术探讨及实现
—
以
“
多规合一
”
总体规划数据空间
—
叠加分析为例
颜振宇
,
陈凯峥
(
海南国源土地矿产勘测规划设计院,
海南海口
570203
)
摘
要
:
ArcGIS
平台支持强大的空间分析功能和数据成果表达与输出的途径
。
本文以
“
多规合一
”
总体规划数据
分析为例
,
介绍了基于
Python
脚本库实现
“
多规合一
”
总体规划数据空间叠加分析脚本工具的流程与方法
,
提供
了流程优化的具体实现过程
。
实验消除了人工分析缓慢且烦琐等弊端
,
同时规范化输出成果
,
在符合管理决策
所需成果要求的基础上提升了空间分析的效率
、
缩短了成表周期
。
关键词
:
ArcGIS
;
地理处理
;
Python
中图分类号
:
P208
文献标识码
:
A
文章编号
:
1672-5867
(
2021
)
06-0138-03
Discussion
and
Implementation
of
Geo-spatial
Data
Batch
Processing
Based
on
Python
:
A
Case
Study
of
Overlay
Analysis
of
"Multiple
Compliance"
Data
YAN
Zhenyu
,
CHEN
Kaizheng
(
Hainan
Guoyuan
Land
and
Mineral
Resources
Planning
&
Survey
Institute
,
Haikou
570203
,
China
)
Abstract
:
ArcGIS
platform
not
only
provides
a
powerful
spatial
analysis
capability
,
but
also
provides
a
way
to
express
and
output
data
results.
This
paper
introduces
the
process
and
method
of
realizing
the
script
of
spatial
superposition
analysis
of
“
multi-planning
”
data
based
on
Python
script
library.
The
realization
process
of
its
process
optimization
is
provided
in
this
paper.
The
experiment
optimizes
the
disadvantages
of
slow
and
complicated
manual
analysis
and
standardizes
the
output
results.
This
method
improves
the
efficiency
of
spatial
analysis
and
shortens
the
tabulation
cycle
on
the
basis
of
meeting
the
requirements
of
management
decision.
Key
words
:
ArcGIS
;
geographical
processing
;
Python
0
引言
国土资源
“
批、
供
、
用
、
补
、
查
”
等日常管理工作中经常
需要使用现状及规划等空间数据叠加分析
。
在国土资源
多图层多地块等批处理的功能
。
因此采用脚本批量操作
成为辅助高效处理国土资源数据的一种极具必要性的
思路
[2]
o
现状及规划分析过程中
,
操作人员需频繁对指定要素进
行数据预处理
,
并对数据进行地理分析
。
该过程不可避
免地进行大量的重复性操作
,如数据导入、
叠加分析
、
统
1
ArcGIS
中
Python
及
Arcpy
的应用
1
.
1
Python
语言
Python
是吉多
•
范罗苏姆在
20
世纪
80
年代末至
90
计分析等地理操作
[1]
,重复性操作既无法保证成果高效
产出
,
也无法确保数据处理的准确性
。
同时,
“
多规合一
”
数据是属于多图层结构的空间矢量数据
,
而脚本能实现
收稿日期
:
2019-12-23
年代初
,
在荷兰国家数学和计算机科学研究所内研究设
计的一门高层次且融合互动性
、
编译性
、
解释性及面向对
象的脚本语言
。
Python
兼备了易学
、
易读
、
易维护
、
可移
作者简介
:颜振宇(1983
-
),
男
,
海南三亚人
,
高级工程师
,
硕士
,2012
年毕业于山东科技大学测绘工程专业
,
主要从事
GIS
应用工作
第
6
期
颜振宇等
:
基于
Python实现地理空间数据批处理技术探讨及实现
139
植
、
可扩展
、
可嵌入
、
支持丰富的标准库等优势
。
Python
在
ArcGIS
9.0
版本中被引入到
ArcGIS
社区
中
。
之后
Python
凭借其优势成为地理处理用户选择的脚
本语言并得以不断地完善发展
。
现
Python
已下沉至
ArcGIS
各领域开发当中
,
逐渐演变为适用于
ArcGIS
平台
数据管理
、
转换
、
分析及地图自动化的语言
,
对工作效率
的提高非常显著
[
3
]
o
1
.
2
Arcpy
站点包
为满足高效执行数据分析
、
转换
、
管理及地图自动化
创建等地理处理功能的需求
,ESRI
提供了基于
Python
编
程语言的
Arcpy
站点包
,Python
通过
Arcpy
调用所有地理
处理工具
[4
]
,
其已在地理信息领域得到广泛推广与应
用
[
5-7
]
。
ArcPy
提供了借助
Python
脚本调用地理处理工
具及其扩展模块的接口
,
ArcPy
模块如图
1
所示
,
且包含
了多种实用的函数及类
,
可调用处理与查询地理信息相
关数据
。
借助
Python
和
ArcPy可定制出多功能
、
多适应
性及高效率的地理数据的实用程序
。
图
1
ArcPy
提供的模块示意图
Fig
・
1
Module
of
ArcPy
本文采用常规的
Notepad
文本编辑器及
ArcGIS
自带
的内置
Python
集成开发环境
,
结合
Arcpy
站点包可以高效
地执行
地
理
数
据分
析
操
作
。
脚
本
分
析
工
具
基
于
Win10
64Bit
ArcGIS10.2
Python3.6
环境进行开发
。
2
基于
Python
脚本分析工具实现
2
.
1
ArcGIS
平台脚本批处理工具创建流程
ArcGIS10.2版本支持基于
Python
脚本的工具箱拓
展
。
首先需要在地理处理工具集合根目录中新建工具
箱
,
并在工具箱中关联操作脚本
。
关联的脚本可以利用
Python
编辑的
.py
格式文件进行目标工具函数的实现
。其
次
,需要为脚本提供输入参数
,在脚本属性设置中预设脚
本输入输出参数类型
,
该类型包含
ArcGIS
所支持的所有
数据格式
。
脚本属性中还包含少量的界面交互选项
,
完
成该项设置后
,
脚本的界面及属性参数已经基本完成
设置
。
在脚本关联的
.py
格式文件中获取脚本工具箱
Arc-
ToolBox中的输入参数
,
利用
ArcPy
所提供处理模块
、
Python
中自带及扩展的处理模块即可完成对数据进行批
量化处理
。
工具箱创建的流程如图
2
所示
。
2
.
2
“
多规合一
”
分析脚本实现思路
本文以
“
多规合一
”
总体规划数据批量分析为例进行
脚本工具实现
。
利用
Python
调用
ArcPy
模块联合调用
Python
中扩展
模块的方式对分析过程进行自动化处理
。
具体实现步骤
H~~
T
通过
・
py
脚本辛取输入参数|
丨
|利用
Arcpy
及
Pytho*
数据进行处理|
签
*
本|
|导人并关联
.py£
式的
P
ythonjj
科
(导岀矢量成!数据及表格
)
養
设訓本输人输岀及交互参数
丫
图
2
脚本批处理工具创建流程
Fig
・
2
Creation
flow
chart
of
the
scripting
tool
如图
3
所示
。
图
3
多规分析脚本实现步骤图
Fig.3
Step
diagram
of
the
script
1)
参数获取
。首先利用
ArcPy
中
GetParameterAsText
()
函数按照参数在参数列表中的索引位置以文本字符串
的形式获取指定待分析区域的
.
shp数据作为分析基础
。
2)
多规图层相交分析
。
“
多规合一
”
中待分析红线管
理包含
5
个图层分别为
I
类红线区
、
II
类红线区
、
I
类近海
域红线区
、
II
类近海域红线区
、
开发边界
。
而各类用地控
制界线及边界线包含
9
个图层分别为基本农田控制界线
、
林地控制界线
、
基础设施用地边界线
、
其他农用地及未利
用地边界线、城镇建设用地边界线
、
乡村建设用地边界
线
、
旅游建设用地边界线
、
其他建设用地边界线。
利用
ArcPy
中
Intersect_analysis
()
函数调用
ArcGIS
的
GP
(
Geo
Processing)
工具对待分析区域与上述多图层数据进行相
交分析后得到相交分析矢量
,
再使用
Python
中
os
模块对
分析后生成的矢量结果判断生成路径下是否存在
、
是否
需要覆盖进行判断
。
3)
分析图层
。
得到相交分析成果后
,
利用
ArcPy
中
CalculateField_management(
)
函数直接对相交分析得到的
.
shp
矢量数据进行属性表操作
,
将分析得到的矢量面积进
行重算
。
利用
ArcPy
中提供的游标检索SearchCursor(
)
函
数将属性表内重算后的结果分别提取至操作类中形成统
计数据基础
,
类结构如图
4
所示
。
4)
导出成果矢量及表格
。
完成对待分析数据的提取
及运算操作后
,
需将对应矢量数据进行存储并将分析后
数值数据形成表格自动存储
。
本文相交分析结果以分析
类别与待分析区域名称拼接进行命名
,
存储至指定文件
140
测绘与空间地理信息
2021
年
CmultiPlanningData
#
mJibennongtian
#
mCliengzhenjianslie
#m
」
leiliongxian
#m_Lindi
#
mXiangcunj
ianslie
#
mmllleiliongxian
#
mJichuslieslii
#
mLvyouj
ianslie
#
mlleij
inanliaiyu
#
m
Qitanongyongdi
#
m
Qitajianslie
#
mllleijinanliaiyu
#
mSliengj
icliany
eyuan
#m
Kaifabianjie
+
」
nit(self)
+AreaCaculate(self,string,double)
+getRatio(double,double)
:
double
+cliangeintoMu(double)
:
double
图
4
多规分析操作类结构图
Fig
・
4
Chart
of
“
multi-planning
"
class
夹中
。
调用
Python
内部扩展模块
xlrd
及
xlwt
中的函数以
构造表格操作类
,
对分析结果相关的统计数据进行导入
及输出操作
,
同时进行表格绘制及对其样式进行设置
,
其
中操作类如图
5
所示
。完成表格绘制及数据输入后
,
利用
Python
内部扩展模块sys
及
os
对表格进行存在判断及指
定路径存储
,
得到最终输出表格结果
,
成果表格与项目出
图叠加成果如图
6
、
图
7
所示
。
CExcelOperator
#style
+
」
nit(self)
+Create(self,Cdata,savePatli,fileName)
+CreateT
able(self,my
Sheet)
+CreateData(self,my
Sheet,Cdata)
+setStyle():
style
+SetStyle_r():
style
图
5
表格操作类结构图
Fig
・
5
Chart
of
“
excel
operation
"
class
图
6
“
多规合一
"
成果图表
Fig
・
6
Diagram
of
“
multi-planning
"
图
7
土地利用现状成果图表
Fig
・
7
Diagram
of
current
land
use
results
2
.
3
脚本具体实现代码
(
部分
)
inputFeature1
=
arcpy.
GetParameterAsText
(0)
inputFeature2
=
ameterAsText(1)
inputFeature3
=
arcpy.
GetParameterAsText
(2)
outworkspace
=
arcpy.
GetParameterAsText
(3)
shpFileName
=
arcpy.
GetParameterAsText
(
0)
#
get
pa
rameter
shpW
orkspace
=
os
.
path
.
dirname
(
inputF
eature
1)
fileName
=
shpFileName
ace
=
os.
path.
dirname
(
outworkspace
)
#
set
workspace
inFeatures
=
[
inputFeature1
,
inputFeature2]#input
da
ta
intersectOutput
=
outworkspace+'W+shpFileN
ame
+
'GH
'#"result"
deleteGHShp
(
outworkspace
,
shpFileName+'GH')
withOutArea
=
ect_analysis
(
inFeatures
,
in
tersectOutput)
#
intersect
inTable
=
outworkspace
+
"
"
+shpFileName+'GH'+"
.
dbf"
#get
result
table
fieldName
=
"
SHAPE_Area"
#recalculate
expression
=
"
float
(
!
SHAPE.
area
!)"
#
area
calculate
expression
arcpy.
CalculateField
_
management
(
inTable
,
fieldName
,
expression,
"
PYTHON_9.3"
)
#Recalculated
area
and
save
re
sult
Cdata_class
=
multi
_
ClandClassification
_
toolbox.
land-
Classification(
)
cursor
=
Cursor(
inTable)
for
row
in
cursor
:
#Traverse
the
property
sheet
Code_in
=
ue(
"TC"
)
Area_in
=
ue(
"
SHAPE_Area"
)
Cdata_lculate(
Code_in,
Area_in)
del
row
del
cursor#
release
resource
inFeatures_m
=
[
inputFeature1
,
inputFeature3
]
#
input
management
data
intersectOutput_m
=
outworkspace+'
'+shpFileName+'
GL'#Management
result"
deleteGLShp
(
outworkspace
,
shpFileName+'GL')
withOutArea
=
arcpy.
Intersect_analysis
(
inFeatures_m
,
intersectOutput_m)
#
intersect
inTable_m
=
outworkspace
+
"
"+
shpFileName
+
'GL
'
+"
.dbf"
#
get
result
table
fieldName
=
"
SHAPE_Area"
#recalculate
expression
=
"
float
(
!
SHAPE.
area
!)"
#
area
calculate
expression
arcpy.
CalculateField
_
management
(
inTable
_
m
,
fieldName
,
expression
,
"
PYTHON_9.3"
)
#save
result
(
下转第
144
页
)
144
测绘与空间地理信息
2021
年
5
结束语
本文将
GNSS
伪距单点定位和实时观测数据解码模
[
5
]
GPS
实时
PPP
技术研究
[J].
测绘科学
,2019,44(3)
:
I-
9.
块融合
,
并在原始观测数据中加入轨道和钟差的改正
,
形
成实时的伪距单点定位算法
,
在此基础上对定位服务进
[6]
陈立
.BDS/GPS
组合系统伪距单点定位算法研究
[D].
南京
:
南京理工大学
,
2017.
唐卫明
,
徐坤
,
金蕾
,
等
.
北斗
/GPS
组合伪距单点定位
性能测试和分析
[J].
武汉大学学报
(
信息科学版
)
,
2015
,
40(4)
:
529-533.
行性能测试
,
利用两组实验数据
,
得到实时伪距单点定位
的实验结果
。实验结果表明:定位精度能够达到
m
级
,实
时伪距单点定位的精度可以满足低精度
、
高动态测量工
[7]
[8]
[9]
[10]
[11]
作的要求
。
加入实时轨道和钟差的改正
,
伪距单点定位
的精度也随之提升
。
另外可以把实时观测数据解码应用
到精密单点定位上
,
实现高精度的观测
。当然实验也是
存在一些问题的
,
如形成的实时数据解码软件定位精度
并没有完全满足高精度测量工作的要求
,
另外
BDS
数据
的解码并不十分成熟
,
但随着
RTCM
格式的更新与发展
,
对于
BDS
的兼容性会更高
。
刘志强
,
王解先
.
广播星历
SSR
改正的实时精密单点定
位及精度分析
[
J]
.
测绘科学
,
2014
,39(1)
:
15-19
,
109.
李征航
,
黄劲松
.GPS
测量与数据处理
[
M].
武汉
;
武汉
大学出版社
,2012.
廖华
.GPS
伪距单点定位算法的综合比较
[J].
测绘科
学
,
2011
,
36(1)
:
20-21
,
28.
高星伟
,
葛茂荣
.GPS/GLONASS
单点定位的数据处理
[ J]
.
测绘通报
,
1999(4)
:
7-8
,
12.
黄永帅
,
史俊波
.
千寻北斗地基增强网络下的实时观测
数据解码及定位性能分析
[J].
测绘通报
,2017(9)
:
II-
14.
参考文献
:
[
1]
WANG
Z
Y
,
LI
Z
S
,WANG
L
,
et
al.
Assessment
of
multiple
GNSS
real-time
SSR
products
from
different
analysis
centers
[12]
[13]
蒋科材
,
屈利忠
,
赵启乐
.
实现
GNSS
数据流管理平台的
实现及应用
[
J]
.
测绘通报
,
2016(4)
:
92-95.
李浩军
,
王解先
,
陈俊平
.
基于
GNSS
网络的实时精密单
点定位及精度分析
[J].
地球物理学报
,2010,53(6)
:
1
302-1
307.
[
J
]
.
International
Journal
of
Geo
-
Information
,
2018
,
7(3)
:
85-86.
[2]
WANG
Z
Y,LI
Z
S
,
GE
M
R,et
al.
Validation
and
assess
[14]
ment
of
Multi-GNSS
real-time
precise
point
positioning
in
simulated
kinematic
mode
using
IGS
real
-
time
service
史小雨
,
程鹏飞
,
蔡艳辉
.
差分
GPS
数据通信格式
RTCM3.1
及其解码算法的实现
[
J]
.
测绘通
报
,
2012
(
6)
:
4-6
,
67.
[J].Remote
Sensing,2018,10(2)
:
337-339.
[3]
[15]
[4]
余忠伦
,
高雅萍
,
杨立财
.SSR
改正数更新频率及中断
时间间隔对实时
PPP
的影响分析
[J].
大地测量与地球
动力学
,2018,38(11)
:
1
153-1
158.
李杰
,
秘金钟
,
李得海
,
等
.Android
移动终端单频
BDS/
于晓东
,
吕志伟
,
王兵浩
.DGNSS
数据传输格式
RTCM3.1
的介绍及解码研究
[J].
全球定位系统
,2015,40(3)
:
37-41.
[
编辑
:
张曦
]
(
上接第
140页
)
cursor_m
=
arcpy
.
SearchCursor
(
inTable_m
)
for
row_m
in
cursor_m:
Code_in_m
=
row_ue("TC")
Area_in_m
=
row_ue(
"
SHAPE_Area"
)
C
(
lata_lculate
(
Code_in_m
,
Area_in_m
)
del
cursor_m#release
resource
#instance
Cdata_excel
=
assificationOperator
()
#create
and
save
Cdata
_
excel.
Create
(
Cdata
_
class
,
outworkspace
,
fileN
ame
)
#output
ArcGIS
平台使用
Python
在多规分析应用中的可行性
,
显
著地缩短了数据处理所需的时间
,
为今后大批量国土资
源地理空间数据分析自动化处理提供了解决思路
。
参考文献
:
[1]
[2]
[3]
[4]
[5]
3
结束语
ArcGIS
平台在国土资源数据分析与处理中支持使用
各类地理处理工具
,
为国土资源数据分析提供数据分析
支撑
。
随着大数据时代日益增长的海量数据处理难题逐
渐显露
,
如何高效率、
短时间地分析各类国土资源数据支
撑决策成为当下的关键问题
,Python
的多平台互通性及
高效性为地理处理提供了捷径
。
ArcGIS
提供的基于
Python
的
ArcPy
模块增加了数据处理的效率及准确率
,
同
时也减轻了作业员的劳动强度
。
本文通过
“
多规合一
”
总
彭海波
,
向洪普
.
基于
Python
的空间数据批量处理方法
[J].
测绘与空间地理信息
,2011,34(4)
:
81-82.
李强
,
白建荣
,
李振林
,
等
.
基于
Python
的数据批处理技
术探讨及实现
[J].
地理空间信息
,2015,13(2)
:
54-56.
杨李强
.
在
ArcGIS
下基于
Python
的
"
多规合一
”
空间基
础数据整理
[J].
江苏城市规划
,
2018(1):26-29.
ESRI
中国信息技术有限公司
.
ArcGIS
10.1
白皮书
[G].
北京
:
ESRI,2011.
杨明星
,
徐天蜀
,
施锐平
,
等
.
基于
Python
的
ArcGIS
林业
专题图批量生成方法
[J].
中南林业调查规划
,2018,
37
(4)
:
46-50.
[6]
焦洋
,
邓鑫
,
李胜才
.
基于
Python
的
ArcGIS
空间数据格
式批处理转换工具开发
[J].
现代测绘
,
2012,
35(3)
:
54-55.
[7]
杨霄翼
.
基于
Python
的
“
地理处理
”
并行方案
[J].
地理信
息世界
,2017,24(6):117-121.
[
编辑
:
任亚茹
]
体规划数据空间叠加分析脚本工具的实现
,
验证了在
版权声明:本文标题:基于Python实现地理空间数据批处理技术探讨及实现——以“多规合一 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1713981294a660398.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论