ArcObjects SDK 019 SpatialReference
1、SpatialReference的结构
ArcObjects SDK帮助中Esri.ArcGIS.Geometry命名空间帮助中的Object Model Diagram共两页,第一页就是Geometry的结构,第二页就是SpatialReference的结构。如下图所示。

如果想深入了解空间参考网上有很多介绍这方面的文章,作为Arcobjects SDK开发,我们主要还是从开发的角度来说SpatialReference部分。
上面的图看起来还是挺复杂的,我们可以做一个简化版的图,来更简单的说明问题。

空间参考主要包括两类,地理空间参考和投影空间参考,加上未知坐标系,共3个类继承了空间参考接口。
2、地理坐标系
地理坐标系就经纬度为单位的坐标系,经度-180到180,纬度-90到90。我们常用的就是WGS84。在ArcMap中,地理坐标系的参数设置界面如下图所示。

地理坐标系只要是我们常用的差别都不是太大,不同的地方只是椭球体的看SDK的话,可变化的地方主要椭球体的长短轴长度,其他的例如中央经线以及坐标单位等基本上不会变化。我在平常处理数据的时候,只要碰到经纬度这样的值,都可以默认为WGS84进行处理。
3、投影坐标系
投影坐标系包含一个地理坐标系,是在这个地理坐标系的基础上进行的平面投影。包含了三个重要的参数,一是基于的地理坐标系,二是其投影参数,三是其坐标单位。我们投影后,用的大部分数据单位都是米,也就是通过坐标单位设置的。一个典型的投影坐标系的ArcMap属性界面如下图所示。

4、ISpatialReferenceFactory
该接口可以创建和空间参考相关的一些对象,其定义如下图所示。

这些函数中,我们会经常用的CreateESRISpatialReferenceFromPRJ以及FromPRJFile,这两个函数是通过Prj字符串以及Prj文件创建空间参考。
CreateGeographicCoordinateSystem函数是创建地理坐标系函数,传入的参数为int类型。我们看下这个函数的定义。

如果我们不知道这个函数的int型参数传什么值得话,那么这个函数的帮助页面给了我们非常清晰的解答,并且给出了创建WGS84的例子代码。
CreateProjectedCoordinateSystem函数是用来创建投影坐标系,使用方法和创建地理坐标系的方法类似,具体可参考该函数的帮助页面。
ExportESRISpatialReferenceToPRJFile函数是把一个空间参考对象保存成prj文件,一般我们会用prj文件存储空间参考。
5、常用的空间参考
WGS84,最常用的额地理空间参考。
基于WGS84的6度带UTM空间参考,一般用这个空间参考计算小范围的精确长度和面积。
WGS_1984_Web_Mercator,一般在线地图,例如谷歌、百度等使用的是该空间参考。
WGS_1984_Plate_Carree,如果把一个WGS84的数据直接拖到空白地图的ArcMap上,ArcMap会自动投影成该空间参考进行展示。
其他的,具体数据是什么空间参考,或者项目、系统要求是什么空间参考就直接使用,在开发过程中,很少出现需要自己去造空间参考的情况,基本上都是确定好的。
ArcObjects SDK 019 SpatialReference的更多相关文章
- ArcObjects SDK(AE)10.1在vs2012安装的方法
ArcObjects SDK(以下简称AO)10.1只支持vs2010,如果装了vs2012,再安装AO会提示一串鸡肠(英文),意思是AO10.1只支持vs2010 想在2012下安装,可以通过修改注 ...
- ArcObjects SDK开发 007 自定义App-Command-Tool框架
1.为什么再设计一套App-Command-Tool框架 为什么我们要自己再设计一套App-Command框架,而不直接使用AO API中的AxControl-ICommand这套已经非常好的框架呢? ...
- ArcObjects SDK开发 006 ICommand和ITool接口
1.ICommand接口 ICommand接口是插件协议之一,继承该接口的类都可以成为命令.即点击一下执行,不主动与宿主发生鼠标和键盘交互.该接口包含的重要成员如下表所示. 序号 名称 类型 描述 1 ...
- ArcObjects SDK开发 004 如何学习好ArcObjects SDK开发
1.基于Arcobjects SDK可以做什么 基于Arcobjects SDK开发,大部分情况下就是做桌面GIS应用程序.AO写的代码是不能直接在Web服务上运行的,但如果你前端是JS,需要后端处理 ...
- ArcObjects SDK开发 003 宏观角度看ArcObjects SDK
1.为什么要宏观上看ArcObjects SDK ArcObjects SDK库是一个非常庞大复杂COM组件集合,ArcGIS10.0有1000多个枚举.90多个结构体.5000多个接口以及4000多 ...
- ArcObjects SDK开发 002 写第一个ArcObjects SDK程序
1.开发环境 基于ArcObjects SDK开发,开发环境一般选用Visual Studio,开发语言使用C#,开发包使用ArcObjects SDK for .Net.UI有的使用Winform, ...
- ArcObjects SDK开发 001 ArcObjects SDK 简介
1.什么是ArcObjects SDK 在网上搜索什么是ArcObjects,会搜到如下的定义. 这个定义比较准确,也比较容易理解. 2.什么是ArcEngine 在网上搜索ArcEngine,一般会 ...
- ArcObjects SDK开发 008 从mxd地图文件说起
1.Mxd文件介绍 ArcGIS的地图文件为.mxd扩展名.Mxd文件的是有版本的,和ArcGIS的版本对应.可以在ArcMap中的File-Save A Copy,保存一个地图拷贝的时候选择Mxd文 ...
- ArcObjects SDK开发 016 在ArcMap中使用Toolbox
1.如何找到ToolBox 通过Geoprocessing菜单上的ArcToolbox菜单项,可以打开ArcToolbox面板. 工具栏上也有一个ArcToolbox的按钮,点击该按钮也可以打开. 通 ...
- ArcObjects SDK开发 017 在ArcObject SDK 中使用Toolbox
1.Geoprocessor和IGPProcess Geoprocessor是ArcObjects SDK中定义Tool执行器.IGPProcess接口是ArcObjects SDK中定义的ArcTo ...
随机推荐
- centos安装JDK11
(一)建立目录 mkdir /home/jdk11 (二) 上传JDK的离线liunx包 cd /home/jdk11 示例:jdk-11.0.19_linux-x64_bin.tar.gz (三) ...
- 什么是swagger,一篇带你入门
一.前言 在前后端分离开发的过程中,前端和后端需要进行api对接进行交互,就需要一个api规范文档,方便前后端的交互,但api文档不能根据代码的变化发生实时动态的改变,这样后端修改了接口,前端不能及时 ...
- 使用Shader画常见的数学函数
使用Shader画常见的数学函数 本篇博文的灵感来自于Shader Books这一小节:https://thebookofshaders.com/05/?lan=ch 代码运行网站:http://ed ...
- 【python-日期和时间处理】datetime模块基本使用
1. 获取datetime对象 获取当前datetime对象 方法:datetime.now(cls, tz=None) -> datetime 参数说明: tz:时区信息,不传该参数时,默认使 ...
- while循环、dowhile循环、三种循环的区别
1.while循环 案例:使用while循环,打印出水仙花数 while执行流程: 1.先执行初始化语句 2.执行判断条件 结果为true,则执行第3步 结果为false,循环结束 3.执行循环体语句 ...
- 【网络协议】深入理解HTTP协议
# 协议 协议就是一种双方提前约定好采用某种形式,以某种规格,利用某种物体把数据传输出去:而另一方再以同样的规则和流程去接收数据的约定制度或者规章. 现代网络是由多种运行在不同平台上的异构系统组成的. ...
- 【Python】介绍以及环境搭建
Python简介 Python介绍 Python是时下最流流.最火爆的编程语言之一,具体原因如下: 简单.易学,适应人群广泛 免费.开源 应用领域广泛 备注:以下知名框架均是Python语言开发. G ...
- MySQL 的乐观锁和悲观锁是什么?
MySQL 的乐观锁和悲观锁是什么? 在并发环境下,为了避免数据竞争和保证数据一致性,可以使用不同的锁策略.乐观锁和悲观锁是两种常见的并发控制机制,它们在锁定数据时的理念和实现方式上有显著区别. 1. ...
- System Integrity Protection (SIP) iOS10.15安装软件提示文件损坏问题解决方法
方法如下:1.开机的时候立即按住command+R 组合键不要放手,直到进度条加载完才松手,进入到系统恢复工具界面 2. 然后点击"实用工具"选项卡中的"终端" ...
- Android frida hook (学习分享)
frida模块 参考: https://www.52pojie.cn/thread-1823118-1-1.html https://www.52pojie.cn/thread-1840174-1-1 ...