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的更多相关文章

  1. ArcObjects SDK(AE)10.1在vs2012安装的方法

    ArcObjects SDK(以下简称AO)10.1只支持vs2010,如果装了vs2012,再安装AO会提示一串鸡肠(英文),意思是AO10.1只支持vs2010 想在2012下安装,可以通过修改注 ...

  2. ArcObjects SDK开发 007 自定义App-Command-Tool框架

    1.为什么再设计一套App-Command-Tool框架 为什么我们要自己再设计一套App-Command框架,而不直接使用AO API中的AxControl-ICommand这套已经非常好的框架呢? ...

  3. ArcObjects SDK开发 006 ICommand和ITool接口

    1.ICommand接口 ICommand接口是插件协议之一,继承该接口的类都可以成为命令.即点击一下执行,不主动与宿主发生鼠标和键盘交互.该接口包含的重要成员如下表所示. 序号 名称 类型 描述 1 ...

  4. ArcObjects SDK开发 004 如何学习好ArcObjects SDK开发

    1.基于Arcobjects SDK可以做什么 基于Arcobjects SDK开发,大部分情况下就是做桌面GIS应用程序.AO写的代码是不能直接在Web服务上运行的,但如果你前端是JS,需要后端处理 ...

  5. ArcObjects SDK开发 003 宏观角度看ArcObjects SDK

    1.为什么要宏观上看ArcObjects SDK ArcObjects SDK库是一个非常庞大复杂COM组件集合,ArcGIS10.0有1000多个枚举.90多个结构体.5000多个接口以及4000多 ...

  6. ArcObjects SDK开发 002 写第一个ArcObjects SDK程序

    1.开发环境 基于ArcObjects SDK开发,开发环境一般选用Visual Studio,开发语言使用C#,开发包使用ArcObjects SDK for .Net.UI有的使用Winform, ...

  7. ArcObjects SDK开发 001 ArcObjects SDK 简介

    1.什么是ArcObjects SDK 在网上搜索什么是ArcObjects,会搜到如下的定义. 这个定义比较准确,也比较容易理解. 2.什么是ArcEngine 在网上搜索ArcEngine,一般会 ...

  8. ArcObjects SDK开发 008 从mxd地图文件说起

    1.Mxd文件介绍 ArcGIS的地图文件为.mxd扩展名.Mxd文件的是有版本的,和ArcGIS的版本对应.可以在ArcMap中的File-Save A Copy,保存一个地图拷贝的时候选择Mxd文 ...

  9. ArcObjects SDK开发 016 在ArcMap中使用Toolbox

    1.如何找到ToolBox 通过Geoprocessing菜单上的ArcToolbox菜单项,可以打开ArcToolbox面板. 工具栏上也有一个ArcToolbox的按钮,点击该按钮也可以打开. 通 ...

  10. ArcObjects SDK开发 017 在ArcObject SDK 中使用Toolbox

    1.Geoprocessor和IGPProcess Geoprocessor是ArcObjects SDK中定义Tool执行器.IGPProcess接口是ArcObjects SDK中定义的ArcTo ...

随机推荐

  1. Oracle 给用户赋予dblink权限,创建dblink

    1.判断用户是否具备创建database link 的权限 一:查看当前登录用户(如果查询有返回行,则表示具备创建权限,否则,需要创建权限) 1 select * from user_sys_priv ...

  2. 深入理解 Java AQS 原理与 ReentrantLock 实现

    目录 一.AQS 简介 二.AQS 核心设计 2.1 核心组成部分 2.2 AQS 的工作原理 2.3 AQS 的关键方法 三.ReentrantLock 与 AQS 的关系 3.1 Reentran ...

  3. Linux-Deepin下搭建云笔记

    背景 操作系统切换为Deepin以后,因为没有windows,各家的云笔记产品,几乎对Linux都没有很好的支持. 印象笔记,没有linux版本,web版本不支持markdown 为知笔记,需要收费, ...

  4. 【Linux】3.4 用户管理

    用户管理 1. 基本用户管理 Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统. 用户的账号一方面可以帮助 ...

  5. dotnet 命令启动报错

    Windows 7 或 Windows Server 2008 R2 上安装 .NET Core SDK 2.x 后 dotnet 命令启动报错 可以通过下载以下系统补丁解决 感谢下载 Windows ...

  6. Windows Server 2012 配置 FTP

    环境 Windows Server 2012 安装步骤 打开服务器管理器 管理 - 添加角色和功能 开始之前 选择安装类型 服务器选择 选择对应的服务器... 服务器角色 功能 确认 安装进度 配置步 ...

  7. 学习unigui【22】unistringGrid的标题栏双击事件

    第一步:在TuniStringGrid的ClientEvents.ExtEvents中定义Ext.grid.Panel的reconfigure事件: function reconfigure(send ...

  8. Rider搭建C#开发环境

    1.安装DotNet-SDK 下载链接:https://dotnet.microsoft.com/download 安装完成后配置环境变量,然后在cmd窗口运行:dotnet --info命令显示当前 ...

  9. LeetCode 热题 100

    1. 两数之和 1. 两数之和 class Solution { public int[] twoSum(int[] nums, int target) { int n = nums.length; ...

  10. 【记录】Word 2021|编号缩进调整

    版本: Word 2021 专业版 Word编号缩进调整 有时候会觉得word列表的悬挂缩进太大或太小了. 第一步:右键编号的数字-调整列表缩进. 第二步:编辑格式-编号. 第三步:点击更多,选择编号 ...