用ArcGIS模型构建器生成、导出Python转换空间坐标系的代码
本文介绍在ArcMap软件中,通过创建模型构建器(ModelBuilder),导出地理坐标系与投影坐标系之间相互转换的Python代码的方法。
在GIS领域中,矢量、栅格图层的投影转换是一个经常遇见的问题;而由于地理坐标系与投影坐标系各自都分别具有很多不同的种类,且二者之间相互转换涉及到很多复杂的参数,因此对于非专业的GIS二次开发从业者来说,这一转换很难用自己编写的代码来实现。那么,我们有没有什么比较快捷的方法,可以获取从某一坐标系转换为另一坐标系的代码呢?
这样的需求,可以在ArcMap软件中得到较为便捷的实现。例如,我们现在有一个北京市边界矢量数据北京边界.shp,其没有经过投影,地理坐标系为GCS_WGS_1984;而我们的需求是,想获取一个代码,这个代码可以对这一矢量数据进行投影,投影为WGS 1984 UTM Zone 50N坐标系。
话不多说,我们直接开始操作。
首先,我们需要完整地按照博客ArcGIS模型构建器ModelBuilder的使用方法中提及的方法,建立如下的一个模型。

接下来,在模型构建器窗口中选择“Export”→“To Python Script”,将模型导出为Python脚本。
随后,打开我们刚刚导出的Python脚本,就可以看到具体的代码。

具体代码为:
# -*- coding: utf-8 -*-
# ---------------------------------------------------------------------------
# p.py
# Created on: 2022-03-08 21:13:42.00000
# (generated by ArcGIS/ModelBuilder)
# Description:
# Used to convert the Beijing boundary data with the geographic coordinate system into a projected coordinate system (UTM-50).
# ---------------------------------------------------------------------------
# Import arcpy module
import arcpy
# Local variables:
北京边界_shp = "G:\\Python_Home2\\arcpy大作业\\北京边界.shp"
BeijingBoundaryPro = "G:\\Python_Home2\\Data\\BeijingBoundaryPro"
# Process: Project
arcpy.Project_management(北京边界_shp, BeijingBoundaryPro, "PROJCS['WGS_1984_UTM_Zone_50N',GEOGCS['GCS_WGS_1984',DATUM['D_WGS_1984',SPHEROID['WGS_1984',6378137.0,298.257223563]],PRIMEM['Greenwich',0.0],UNIT['Degree',0.0174532925199433]],PROJECTION['Transverse_Mercator'],PARAMETER['False_Easting',500000.0],PARAMETER['False_Northing',0.0],PARAMETER['Central_Meridian',117.0],PARAMETER['Scale_Factor',0.9996],PARAMETER['Latitude_Of_Origin',0.0],UNIT['Meter',1.0]]", "", "GEOGCS['GCS_WGS_1984',DATUM['D_WGS_1984',SPHEROID['WGS_1984',6378137.0,298.257223563]],PRIMEM['Greenwich',0.0],UNIT['Degree',0.0174532925199433]]", "NO_PRESERVE_SHAPE", "", "NO_VERTICAL")
不难看到,导出代码中的关键部分——arcpy.Project_management()函数涉及到非常多的参数;由此可以再一次验证,如果我们想手动写出地理坐标系与投影坐标系之间的转换代码,可以说是非常困难的。
那么,我们导出了代码,可以怎么应用呢?我们就继续以刚刚导出的这一代码为例进行进一步的操作——比如,对上述代码中的两个参数稍加以修改,并在最开始的部分添加一个新的参数,如下所示:
# -*- coding: utf-8 -*-
# @author: ChuTianjia
import arcpy
arcpy.env.workspace=arcpy.GetParameterAsText(0)
original_shp=arcpy.GetParameterAsText(1)
projected_shp=arcpy.GetParameterAsText(2)
arcpy.Project_management(original_shp,projected_shp,\
"PROJCS['WGS_1984_UTM_Zone_50N',\
GEOGCS['GCS_WGS_1984',DATUM['D_WGS_1984',SPHEROID['WGS_1984',6378137.0,298.257223563]],\
PRIMEM['Greenwich',0.0],UNIT['Degree',0.0174532925199433]],PROJECTION['Transverse_Mercator'],\
PARAMETER['False_Easting',500000.0],PARAMETER['False_Northing',0.0],PARAMETER['Central_Meridian',117.0],\
PARAMETER['Scale_Factor',0.9996],PARAMETER['Latitude_Of_Origin',0.0],UNIT['Meter',1.0]]",\
"", "GEOGCS['GCS_WGS_1984',DATUM['D_WGS_1984',SPHEROID['WGS_1984',6378137.0,298.257223563]],\
PRIMEM['Greenwich',0.0],UNIT['Degree',0.0174532925199433]]", "NO_PRESERVE_SHAPE", "", "NO_VERTICAL")
其中,arcpy.env.workspace代表当前工作空间,original_shp代表投影前的文件,在本文的例子中就是北京市边界数量数据文件,projected_shp代表投影后的文件,在本文中就是投影后北京市边界矢量数据的具体文件。通过这样的修改,就可以使用该代码,对任意一个原本地理坐标系为GCS_WGS_1984的图层进行投影,且投影坐标系为WGS 1984 UTM Zone 50N。
在这里还有一点需要注意,由于编写代码时,希望代码后期可以在ArcMap中直接通过工具箱运行,即用到Python程序脚本新建工具箱与自定义工具的方法;因此,代码中对于一些需要初始定义的变量,都用到了arcpy.GetParameterAsText()函数。大家如果只是希望在IDLE中运行代码,那么直接对这些变量进行具体赋值即可。关于Python程序脚本新建工具箱与自定义工具,大家可以查看ArcMap将Python写的代码转为工具箱与自定义工具详细了解。
用ArcGIS模型构建器生成、导出Python转换空间坐标系的代码的更多相关文章
- ArcGIS模型构建器案例学习笔记-字段处理模型集
ArcGIS模型构建器案例学习笔记-字段处理模型集 联系方式:谢老师,135-4855-4328,xiexiaokui@qq.com 由四个子模型组成 子模型1:判断字段是否存在 方法:python工 ...
- ArcGIS模型构建器案例教程-批量复制工作空间所有要素类
ArcGIS模型构建器案例教程-批量复制工作空间所有要素类 目的:批量复制工作空间所有要素类 工具名称:WorkspaceCopyFeatureClasses 使用方法:输入工作空间,指定输出工作空间 ...
- ArcGIS模型构建器案例教程-批量修改工作空间所有要素类的空间参考
ArcGIS模型构建器案例教程-批量修改工作空间所有要素类的空间参考 目的:批量修改工作空间所有要素类的空间参考(坐标系) 工具名称:WorkspaceChangeSpatialReference 使 ...
- ArcGIS模型构建器案例学习-批量删除空要素类地理模型
ArcGIS模型构建器案例学习笔记-批量删除空要素类地理模型 联系方式:谢老师,135-4855-4328,xiexiaokui@qq.com 目的:批量删除记录个数为0的矢量文件 优点:逻辑清晰,不 ...
- ArcGIS模型构建器ModelBuilder的使用方法
本文介绍在ArcMap软件中,基于模型构建器(ModelBuilder)完成模型建立与使用的具体方法. 首先,在ArcMap软件中打开"ModelBuilder". 建 ...
- ArcGIS Pro 简明教程(4)工具和模型构建器
ArcGIS Pro 简明教程(4)工具和模型构建器 by 李远祥 工具箱中的工具 ArcGIS Pro 在1.3版本基本上已经继承了ArcMap的所有工具,而且会不断加入一些它自身才有的工具,例如适 ...
- ArcGIS 要素类整体平移工具-arcgis/arcpy/模型构建器案例实习教程
ArcGIS 要素类整体平移工具-arcgis/arcpy/模型构建器案例实习教程 联系方式:谢老师,135-4855_4328,xiexiaokui#qq.com 目的:对整个要素类,按指定偏移距离 ...
- ArcGIS案例学习笔记2_2_模型构建器和山顶点提取批处理
ArcGIS案例学习笔记2_2_模型构建器和山顶点提取批处理 计划时间:第二天下午 背景:数据量大,工程大 目的:自动化,批处理,定制业务流程,不写程序 教程:Pdf/343 数据:chap8/ex5 ...
- Microsoft宣布为Power BI提供AI模型构建器,关键驱动程序分析和Azure机器学习集成
微软的Power BI现在是一种正在大量结合人工智能(AI)的商业分析服务,它使用户无需编码经验或深厚的技术专长就能够创建报告,仪表板等.近日西雅图公司宣布推出几款新的AI功能,包括图像识别和文本分析 ...
- ArcGIS数据建模 (模型构建器modelbuilder) 培训视频 5章28小节587分钟视频 51GIS网站上线
网址:http://www.51gis.com.cn/kecheng.html?id=358
随机推荐
- uni-app全局样式和局部样式
前言 好,经过上个章节的介绍完毕之后,了解了一下 UniApp 的一个全局 页面配置文件,也就是我们的一个 pages.json 文件. 那么了解完了这个文件之后,这片文章,再了解一下 UniApp ...
- springboot操作nosql的mongodb,或者是如何在mongodb官网创建服务器并进行操作
第一步:在mongodb的官网里面创建云服务器 点进去 这是免费的,由于是一个项目只可以创建一个,这里我已经创建好了 用本地的mongodb服务也是可以的 第二步:点击connect,下载连接mong ...
- BASE和最终一致性
四种性质: 基本可用性,软状态,强一致性,弱一致性 更据更新数据后各进程访问到数据的时间和方式不同: 如何实现各种类型的一致性: 对于HBase数据库来讲:
- C++学习笔记六:运算符(五种基本运算操作,优先级和结合性)
这一章对操作符进行简单的总结: 1.五种基本运算类型:加减乘除,取余 add, substract, multiply, divide, modulus int number1{2}; int num ...
- JXNU acm选拔赛 壮壮的数组
壮壮的数组 Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other) Total Submiss ...
- ClickHouse(19)ClickHouse集成Hive表引擎详细解析
目录 Hive集成表引擎 创建表 使用示例 如何使用HDFS文件系统的本地缓存 查询 ORC 输入格式的Hive 表 在 Hive 中建表 在 ClickHouse 中建表 查询 Parquest 输 ...
- vscode下载
vscode下载 想下载官网可以直接去官网下载(速度超慢~) 百度网盘链接: 链接:https://pan.baidu.com/s/14DfWI5b2HA_J_kHBcu8JQw?pwd=yyds 提 ...
- 安装Office
安装Office 第一步 访问: https://otp.landian.vip/zh-cn/ 点击立即下载 选择: 第二步 打开下载好的zip,解压,启动程序 第三步 选择部署(在这里可以看到电脑已 ...
- 微软成为PostgreSQL主要贡献者
微软成为PostgreSQL主要贡献者 微软对PostgreSQL贡献的很多新功能都来自于客户在使用微软Azure上的PostgreSQL管理实例数据库,所以这些新功能都来自于真实的客户需求 微软对P ...
- Python 实现 PDF 到 Word 文档的高效转换(DOC、DOCX)
PDF(Portable Document Format)已成为一种广泛使用的电子文档格式.PDF的主要优势是跨平台,可以在不同设备上呈现一致的外观.然而,当我们需要对文件内容进行编辑或修改,直接编辑 ...