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.

[

编辑

任亚茹

]

体规划数据空间叠加分析脚本工具的实现

验证了在


本文标签: 分析 数据 脚本 处理