用ArcGIS模型构建器生成、导出Python转换空间坐标系的代码

这篇具有很好参考价值的文章主要介绍了用ArcGIS模型构建器生成、导出Python转换空间坐标系的代码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  本文介绍在ArcMap软件中,通过创建模型构建器ModelBuilder),导出地理坐标系投影坐标系之间相互转换Python代码的方法。

  在GIS领域中,矢量、栅格图层的投影转换是一个经常遇见的问题;而由于地理坐标系与投影坐标系各自都分别具有很多不同的种类,且二者之间相互转换涉及到很多复杂的参数,因此对于非专业的GIS二次开发从业者来说,这一转换很难用自己编写的代码来实现。那么,我们有没有什么比较快捷的方法,可以获取从某一坐标系转换为另一坐标系的代码呢?

  这样的需求,可以在ArcMap软件中得到较为便捷的实现。例如,我们现在有一个北京市边界矢量数据北京边界.shp,其没有经过投影,地理坐标系为GCS_WGS_1984;而我们的需求是,想获取一个代码,这个代码可以对这一矢量数据进行投影,投影为WGS 1984 UTM Zone 50N坐标系。

  话不多说,我们直接开始操作。

  首先,我们需要完整地按照博客ArcGIS模型构建器ModelBuilder的使用方法中提及的方法,建立如下的一个模型。

用ArcGIS模型构建器生成、导出Python转换空间坐标系的代码

  接下来,在模型构建器窗口中选择“Export”→“To Python Script”,将模型导出为Python脚本。

  随后,打开我们刚刚导出的Python脚本,就可以看到具体的代码。

用ArcGIS模型构建器生成、导出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写的代码转为工具箱与自定义工具详细了解。文章来源地址https://www.toymoban.com/news/detail-800907.html

到了这里,关于用ArcGIS模型构建器生成、导出Python转换空间坐标系的代码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • (二十八)ArcGIS空间数据的转换与处理——数据结构转换

    空间数据的来源很多,如地图、工程图、规划图、航空与遥感影像等,因此空间数据也有多种格式。根据应用需要,需对数据进行格式转换,不同数据结构间的转换主要包括矢量数据到栅格数据的转换和栅格数据到矢量数据的转换。利用数据格式转换工具,可以转换Raster、

    2024年02月11日
    浏览(52)
  • SolidWorks导出机械臂的URDF模型各个关节坐标系设置

    郑重提示 :为了记录自己在学习过程中遇到的问题,所以记录了这篇博客。。在后面学习的过程中发现 之前 这篇博客记录的导出URDF模型坐标系设置方法存在一些问题,不好写DH参数表,,更更要命的是,好些朋友都收藏了这篇博客, 为了不误导大家,再次对以下内容做出修

    2024年02月05日
    浏览(125)
  • (一)ArcGIS空间数据的转换与处理——投影变换

    原始数据往往由于在数据结构、数据组织、数据表达等方面与用户需求不一致而要进行转换与处理。本节主要介绍 ArGIS 中数据的投影变换内容。 由于数据源的多样性,当数据的空间参考系统 (坐标系统、投影方式) 与需求不一致时,就需要对数据进行投影变换。同样,在完成

    2024年02月04日
    浏览(47)
  • 基于ArcGIS Pro、Python、USLE、INVEST模型等多技术融合的生态系统服务构建生态安全格局

    近年来,由于社会经济的快速发展和人口增长,社会活动对环境的压力不断增大,人地矛盾加剧。虽然全球各国在生态环境的建设和保护上已取得不少成果,但还是未从根本上转变生态环境的恶化趋势;生态破坏、环境退化、生物多样性减少及其所诱发的环境灾害、灾难不但

    2023年04月25日
    浏览(50)
  • 【ArcGIS微课1000例】0072:如何生成空间权重矩阵

    严重声明:本文来自专栏《ArcGIS微课1000例:从点滴到精通》,为CSDN博客专家刘一哥GIS原创,原文及专栏地址为:(https://blog.csdn.net/lucky51222/category_11121281.html),谢绝转载或爬取!!! 构建一个空间权重矩阵 (.swm) 文件,以表示数据集中各要素间的空间关系。 空间统计并不意味

    2024年02月11日
    浏览(38)
  • 怎样通过Python和齐次坐标变换方法实现坐标系之间的转换?

    齐次坐标变换是一种用于实现坐标系之间变换的数学技术。它通常用于计算机图形学、计算机视觉和机器人技术。在齐次坐标系中,3D点/顶点由4D向量(x,y,z,w)表示,其中w是比例因子。齐次表示允许有效的矩阵运算并简化变换过程。坐标系之间的变换可以通过使用齐次变

    2024年02月05日
    浏览(46)
  • 基于Python的经纬度与xy坐标系相互转换

    代码是已经运行过的,可以直接输入参数使用 注意事项: 经纬度参数不可以写颠倒,否则会由于math.log参数不能为负数和0的原因报错 由于地球半径的不确定性,所以(x,y)与(lon, lat)相互转换会有误差 奉上代码及运行结果: 经纬度转换成xy坐标 实例经维度参数 (114.5456282282352

    2024年02月12日
    浏览(57)
  • Arcgis通过模型构建器计算几何坐标

    模型中,先添加字段,再计算字段 模型的计算字段中,表达式是类似这样写的,其中Xmin表示X坐标,Ymin表示Y坐标 类似计算面积

    2024年02月14日
    浏览(42)
  • 【Python&GIS】面矢量数据投影转换(WGS84转地方坐标系)

            之前分享过点矢量怎么进行投影转换,今天跟大家分享下面矢量如何投影转换。代码与之前的类似,只要注意一下GDAL对矢量文件划分的关系层次即可。         ogr库是一个处理地理空间矢量数据的开源库。它可以读取多种数据格式,进行地理处理、属性表操作、

    2024年02月14日
    浏览(41)
  • PLUS模型和InVEST模型生态系统服务多情景模拟预测、ArcGIS空间数据处理、空间分析与制图、土地利用时空变化

    查看原文基于”PLUS模型+“生态系统服务多情景模拟预测实践技术应用 目录 第一章、理论基础与软件讲解 第二章、数据获取与制备 第三章、土地利用格局模拟 第四章、生态系统服务评估 第五章、时空变化及驱动机制分析 第六章、论文撰写技巧及案例分析 基于ArcGIS Pro、P

    2024年02月05日
    浏览(76)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包