[关闭]
@ecnu-cyx 2017-01-11T06:09:21.000000Z 字数 3077 阅读 1188

ArcGIS中的Python技术

ArcGIS-ENVI


总览

python的开放性、跨平台
站点包:Arcpy,pip,matplotlib,numpy,pandas,flask,jinja2,Web.py
缺点:强制缩进、执行速度慢

一、ArcGIS desktop中的python的使用

python map的字段计算器
python窗口IDLE
python脚本,然后在model builder中进行调用批处理、功能定制

1.1 ArcPy中的主要功能

1.arcpy.da:数据的编辑会话;表、要素类与Numpy格式互转;版本、属性域和子类工作流(data analysis)
2.arcpy.mapping:操作.mxd和.lyr;扩展了数据驱动页面导航,自动导出、打印地图
3.arcpy.sa:执行空间分析、空间运算(spatial analysis)
4.arcpy.na:可访问Network Analyst的所有工具(增删图层、获取属性);结合Arcpy.describe使用(network analysis)
5.arcpy.ga
6.arcpy.time

1.2 数据管理:(data management)

来自managemenrt.py,完全实现Data Management Tools

1、管理地理数据库(personal/file/sde GDB)

数据创建
数据库连接
数据备份
数据过滤
字段计算

2、其他
数据格式转换、空间数据格式转换、非空间数据格式转换、数据预处理、数据抽稀、字段计算、空间选择、属性选择、元数据处理、元数据填写、元数据标准转换。

eg: python实现数据转换

  1. import arcpy
  2. f = open(r"D:\data.txt")
  3. cursor = arcpy.InsertCursor(r'D:\polygon.shp')
  4. array = arcpy.Array()
  5. point = arcpy.Point()
  6. for line in f:
  7. pt = line.split()
  8. str = pt[3].split(',')
  9. name = pt[1]
  10. for j in str:
  11. xy = j.split(',')
  12. point.X = float(xy[0])
  13. point.Y = float(xy[1])
  14. array.add(point)
  15. row = cursor.newRow()
  16. row.shape = array
  17. row.name = name
  18. array.removeAll()
  19. cursor.insertRow(row)

1.3 制图可视化:(mapping)

使用ArcPy.Mapping模块

1、与MapDocument、Layer及其内的数据进行交互
2、更改图层datasource
3、获得MXD相关信息:数据源,无效图层,空间参考
4、更改symbology、label显示、图层透明度等
5、自动化地图集生产

示例:

1.修改label的显示字符

  1. import arcpy
  2. mxd = arcpy.mapping.MapDocument(r'C:\change.mxd')
  3. df = arcpy.mapping.ListDataFrames(mxd,"图层")[0]
  4. # 对第一个图层进行修改
  5. lyr = arcpy.mapping.ListLayers(mxd,"",df)[0]
  6. lyr.showLabels = True
  7. lyr.labelClasses[0].expression = "[CITY NAME] +" "+[CNTRY NAME]"
  8. # 保存结果
  9. mxd.save()
  10. del mxd

2.更改文档中的datasource

  1. import arcpy
  2. mxd = arcpy.mapping.MapDocument(r'C:\changeSource/mxd')
  3. mxd.findAndReplaceWorkPaths(r'C:\Python.gdb',r'C"\changeSource.gdb',"FILEGDB_WORKSPACE")
  4. # 另存为一个新的mxd文档
  5. mxd.saveACopy(r'C:\copy.mxd')

1.4 地理分析:(geo analysis)

  • 使用ArcPy.sa、ArcPy.na、ArcPy.time
  • Add-In插件
  • Python Add-In开发,开发工具addin_assistant
    1) 向导方式创建ArcPy Add-In工程
    2) 支持创建基于ArcMap、ArcCatalog、ArcGlobe、ArcScene插件
    3) 支持创建扩展模块、菜单、工具条
    4) 生成各种组件类及方法
    https://www.arcgis.com/home/item.html?id=5f3aefe77f6b4f61ad3e4c62f30bff3b

二、Python in server

2.1 ArcGIS Server 命令行应用程序

-位于ArcGIS for Server 安装目录tools/admin目录下
-提供一套管理ArcGIS Server的脚本命令行工具

应用:

  1. 启动和停止服务
  2. 从集群添加和移除计算机
  3. 从服务定义(.sd)文件发布服务
  4. 备份或还原站点配置
  5. 定义新地图缓存
  6. 构建和删除地图缓存
  7. 在松散和紧凑格式之间转换地图缓存

2.2 使用Python调用ArcGIS Admin API修改ArcGIS Server参数

1) 运行脚本时需要有管理员权限,必须提供一个具有管理员权限的用户名和密码
2) 在脚本中获取和使用令牌
3) 配置参数,构筑请求(服务停止,资源上传删除等)

实用:对实时数据处理要求高的行业,则可以用arcgis python API则可以将处理结果直接发布成服务。

三、Python in Online/Portal

3.1 Python使用地理平台中的资源

  • Python调用ArcGIS Portal/online REST api来调用资源
  • ArcREST --python包(REST API for AGS,AGOL,webmap json)管理Portal\AGS\AGOL站点、管理内容用户

3.2 ArcREST站点包安装

  • 安装requirement.txt --pip install -r requirement.txt;
  • 运行setup.py --python setup.py install

四、Python in Web

4.1 ArcGIS Python API

是一个全新的API,可以执行GIS分析和可视化、空间数据管理、GIS平台管理.
-- https://developer.arcgis.com/python/
原生、强大、简单,交互式开发,可分享、更新和重新运行的分析记录

4.2 功能模块

gis模块:提供管理arcgis online或者portal for arcgis的功能,是使用GIS平台的入口。
tools模块:使用arcgis online或portal提供的各种分析功能
lyr模块:使用GIS平台提供的图层服务
viz模块:提供用来进行数据可视化和分析功能的组件
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注