arcpy投影这一个专题从文件位置、文件含义、空间参照获取、转换关系查询、投影定义、自定义转换关系、投影变换这几个角度上系统的进行了介绍,整理出了:

arcpy投影(一)——prj、gtf文件定义、路径及解析(arcmap,arcpro)

arcpy投影(二)——基准面变换概念及参数、空间参考对象获取、变换关系获取方法梳理与解析(Spatial Reference、ListTransformations)

arcpy投影(三)——定义投影、地理变换关系自定义和投影变换Project_managemen(含基准面/椭球体转换参数使用方法,arcpro/arcmap)
三篇文章,本文为第二篇:

本文对投影和投影变化中的基本概念进行了介绍,同时基于Arcpro帮助文档及示例代码进行空间参照和转换关系获取和新建方的方法,并对注意事项和代码细节进行了解读。

一、“坐标系、投影和变换”、“地理基准面变换”基本概念

首先介绍两个基本概念,一是“坐标系、投影和变换”,二是“地理基准面变换”。“坐标系、投影和变换”是地图学中要学习最基本概念,可以查看书籍和帮助文档。

我们重点介绍一下 “地理基准面变换” ,帮助文档中给出的解释:地理坐标系描述了如何将地球上的位置放置在一个假想的参考球体上。使用角度单位(例如度)来在一个参考球体上分配坐标位置。地理坐标系不止一种,因为在不同的位置,每种坐标系都有不同的选择,即存在最为适合的参考椭球面。这种设计十分必要,原因在于地球实际上是一个凹凸不平的球体。变换是在地图绘制时将图层的地理坐标系转换为与地图的地理坐标系相匹配的计算,可确保全部对齐。数据不会由于变换发生更改。

我们应当准确把握的是:地理基准面变换是在原始坐标系和目标坐标系的地理基准面不同的情况下需要进行的一步操作,也可以理解为当两个坐标系统采用不同的椭球体时,需要给椭球体的变换提供一个可用的函数,从而确保数据可以进行正确的对齐计算。 例如:你将数据从CGS2000转换为CGS2000 3 degree 108E,两个投影均采用同一个地理基准面,因此该转换过程不需要进行基准面变换,而当你将CGS2000的数据变换为WGS84时,则必须进行这个基准面的变换。

二、Spatial Reference object及Transformations参数

介绍完上述的两个基本概念,我们需要进一步的了解在进行投影定义或者坐标转换时都需要用到空间参考对象(Spatial Reference object),以及在进行基准面变换时需要用到转换关系参数(Transformations)。
前者是一个对象,后者为字符串类型,在进行基准面转换时,给定转换关系对应的字符串,软件会自己到默认路径下进行文件的查找和提取,这个路径在上一篇文章arcpy投影(一)——prj、gtf文件定义、路径及解析(arcmap,arcpro)中进行了介绍。

三、SpatialReference对象获取及创建方法

该对象的获取方法可以采用 “直接对要素描述”进行获取,也可以通过“.prj文件”、“投影名称”、“工厂代码”以及“WKT字符串”来进行创建。[需要注意的是:当投影关系中存在地方坐标系时,“投影名称”或“工厂代码”这两种方式使用起来会存在一些麻烦 ]。 如果在定义投影时需要使用三维坐标系统即指定高程基准,则可以通过对vcs参数的配置来进行高程基准的选择,具体使用方法可参照[帮助文档]

(一)“直接对要素描述”进行获取

使用 Describe spatialReference 属性从现有数据集或要素类访问 SpatialReference 对象,这个方法还是比较常用且好用的。若数据为投影坐标而想要访问获取地理坐标的信息,则可以通过GCS属性进行获取。

dataset = "c:/data/landbase.gdb/Wetlands"
spatial_ref = arcpy.Describe(dataset).spatialReference  #通过数据集获取当前空间参考信息

同时还可以通过SpatialReference对象的name属性检测要素是否具有空间参考信息:

import arcpy
arcpy.env.workspace = "c:/base/base.gdb"
fc = "River"   #数据
spatial_ref = arcpy.Describe(fc).spatialReference   #通过要素类获取当前空间参考信息
if spatial_ref.name == "Unknown":print("{} has an unknown spatial reference".format(fc))

(二)创建空间参考对象

语法:SpatialReference ({item}, {vcs}, text)

①“.prj文件”

该方式是非常灵活好用的一种方法,直接通过指认文件所在的路径可以提高prj文件位置的灵活性。

sr = arcpy.SpatialReference("c:/coordsystems/Xian 1980.prj")

②“投影名称”

通过投影名称来进行创建要求投影名称是arcpro或者arcmap软件可查的,即在对应路径下或者在软件内部已存在改名称。

sr = arcpy.SpatialReference("Xian 1980")

③“工厂代码”

通过工厂代码来进行创建要求改投影信息对应的代码在工厂代码文档中可查,文档链接见文末附件。

sr = arcpy.SpatialReference(4610)

④“WKT字符串”

a.创建
# Geographic Coordinate system "WGS 1984" (factory code=4326)
wkt = "GEOGCS['GCS_WGS_1984',DATUM['D_WGS_1984',SPHEROID['WGS_1984',6378137.0,298.257223563]],\PRIMEM['Greenwich',0.0],UNIT['Degree',0.0174532925199433]];\-400 -400 1000000000;-100000 10000;-100000 10000;8.98315284119522E-09;\0.001;0.001;IsHighPrecision"sr = arcpy.SpatialReference(text=wkt)
b.loadFromString方法加载
wkt = 'GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],\PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]];\-400 -400 1000000000;-100000 10000;-100000 10000;8.98315284119522E-09;\0.001;0.001;IsHighPrecision'sr = arcpy.SpatialReference()
sr.loadFromString(wkt)

( exportToString 方法可用于导出空间参考的 WKT 字符串表示)

四、ListTransformations函数的使用

ListTransformations是在存在投影基准面变换的情况下,通过指定原始坐标系和目标坐标系,进行有效变换方法的检索,返回值为包含有效变换方法的列表。如果返回结果列表为空,则说明系统中不包含这两个不同基准面的转换关系,需要自定义或者拷贝。 对于某个特定的地理区域,可以使用区域范围来缩小有效变换方法列表的范围。
语法:ListTransformations (from_sr, to_sr, {extent}, {vertical}, {first_only})

import arcpyfrom_sr = arcpy.SpatialReference('WGS 1984')    #原始坐标系统
to_sr = arcpy.SpatialReference('NAD 1927 StatePlane California VI FIPS 0406')#目标坐标系统
extent = arcpy.Extent(-178.217598182, 18.9217863640001,-66.969270909, 71.4062354550001)
transformations = arcpy.ListTransformations(from_sr, to_sr, extent)  #返回字符串列表结果

附件:

投影工厂代码文件(也可以通过arcmap或者pro直接查看投影信息对应的工厂代码):
地理坐标工厂代码
投影坐标工厂代码

arcpy投影(二)——基准面变换概念及参数、空间参考对象获取、变换关系获取方法梳理与解析(Spatial Reference、ListTransformations)相关推荐

  1. arcpy投影(三)——定义投影、地理变换关系自定义和投影变换Project_managemen(含基准面/椭球体转换参数使用方法,arcpro/arcmap)

    arcpy投影这一个专题从文件位置.文件含义.空间参照获取.转换关系查询.投影定义.自定义转换关系.投影变换这几个角度上系统的进行了介绍,整理出了: arcpy投影(一)--prj.gtf文件定义.路 ...

  2. 投影、坐标系统、基准面和椭圆体、空间参考几个概念的详述

    投影 Projection: 为什么要投影: 我们每天使用的百度地图,贴在墙壁上的中国地图,世界地图都是平面的:但是我们的地球实际是一个椭圆的:这就需要将地球上的每一个点一一对应到平面上:所以需要使用 ...

  3. 转载:如何区分空间参考、坐标系统、投影、基准面和椭圆体?

    如何区分空间参考.坐标系统.投影.基准面和椭圆体? 作者:巫细波 2007.12.06 空间参考(Spatial Reference)    坐标系统(Coordinate System)    投影 ...

  4. 空间参考中名词拾遗(坐标系统、空间参考、投影、基准面、椭圆体)

    转载地址:https://www.cnblogs.com/Wizardh/articles/985899.html 坐标系统(Coordinate System) 空间参考(Spatial Refer ...

  5. 信号完整性(SI)电源完整性(PI)学习笔记(二十六)S参数在信号完整性中的应用(一)

    S参数在信号完整性中的应用(一) 1.在信号完整性领域,S参数又称为行为模型,因为它可以作为描述线性.无源互联行为的一种通用手段,它的适用范围包括了除一些铁氧体以外的所有互联. 一般而言,信号作为激励 ...

  6. Linux(二)进程概念

    目录 一.冯诺依曼体系结构 二.操作系统 三.进程概念 1.程序与进程的区别: 2.cpu分时机制 3.pcb--进程控制块 4.进程是什么? 四.进程状态 1.linux状态 2.僵尸态 pid_t ...

  7. 在C++中如何将二维数组作为函数参数

    一直以来弄不清C++中数组怎么作为参数传入函数中,尤其是最近学了Python之后,Python这种几乎可以把一切作为参数传入函数的方式更是让我在C++中混淆,下面来总结一下二维数组作为函数参数该如何表 ...

  8. C++二维数组做函数参数

    C++二维数组做函数参数 二维数组做函数参数的形式主要有: /对于一个m行n列int元素的二维数组 //函数f的形参形式 f(int daytab[m][n]) {...}//以下两种可以忽略行数 f ...

  9. 贪婪投影三角化算法中的参数设置

    无序点云的快速三角化 本小节描述了怎样使用贪婪投影三角化算法对有向点云进行三角化,具体方法是先将有向点云投影到某一局部二维坐标平面内,再在坐标平面内进行平面内的三角化,再根据平面内三位点的拓扑连接关系 ...

最新文章

  1. intel最新的服务器芯片,Intel最新服务器CPU 芯片组Roadmap
  2. 如何评价CVPR 2020年投稿量过万的盛况?
  3. mysql为什么要单例_为什么要用单例,你真的会写单例模式吗
  4. layui table 添加img_layui中table表格的基本操作
  5. 思科快速转发机制(CEF-Cisco Express Forwarding)
  6. 〔译〕TypeScript 2.0 候选版发布
  7. js实现HTML标题栏中新消息提示效果
  8. 嗨,您好 。 。 ! 您如何评价Java / Java EE技能?
  9. 卷积在计算机中实现+pool作用+数据预处理目的+特征归一化+理解BN+感受野理解与计算+梯度回传+NMS/soft NMS
  10. E. Sergey and Subway
  11. oracle 登录dba,在Oracle10gisqlplus下登录dba用户
  12. python怎么引入os模块的函数_Python之OS模块函数
  13. 离散数学:等价关系与集合覆盖
  14. 计算机用户名显示TEMP,win10只要打开ie桌面出现temp文件夹如何解决
  15. HEAD detached at ---
  16. odi12配置mysql_Oracle Data Integrator 12c 安装(ODI安装)
  17. 个人博客搭建流程(域名、主机、解析、源码、搭建)全程详解
  18. 苹果6换屏多钱_iPhone12屏幕维修多少钱 苹果12换屏价格汇总
  19. pycharm使用xshell+xming调用服务器图形界面
  20. 炼丹系列2: Stochastic Weight Averaging (SWA) Exponential Moving Average(EMA)

热门文章

  1. css实现3d正方体旋转
  2. 在HTML页面显示时钟
  3. 虚拟磁盘管理 无法启动服务器,运行虚拟磁盘管理器提示"RPC服务器不可用"分析与解决方案...
  4. 网页制作 - 问卷网的首页
  5. 2019浙江ACM省赛部分题解-ABDEFGHIJK
  6. 区块链游戏平台Gala Games能否重振链游?
  7. 理工男的网红生意, 6000万月活50万条日更的背后, 内容链还能这样操作?
  8. 红亚太学链之区块链技术深度剖析第9章
  9. 执著如泪,是滴入心中的破碎
  10. 数据分析 学习小结记录