ArcObjects SDK 019 SpatialReference

1、SpatialReference的结构

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

image1.png

如果想深入了解空间参考网上有很多介绍这方面的文章,作为Arcobjects SDK开发,我们主要还是从开发的角度来说SpatialReference部分。

上面的图看起来还是挺复杂的,我们可以做一个简化版的图,来更简单的说明问题。

image2.png

空间参考主要包括两类,地理空间参考和投影空间参考,加上未知坐标系,共3个类继承了空间参考接口。

2、地理坐标系

地理坐标系就经纬度为单位的坐标系,经度-180到180,纬度-90到90。我们常用的就是WGS84。在ArcMap中,地理坐标系的参数设置界面如下图所示。

image3.png

地理坐标系只要是我们常用的差别都不是太大,不同的地方只是椭球体的看SDK的话,可变化的地方主要椭球体的长短轴长度,其他的例如中央经线以及坐标单位等基本上不会变化。我在平常处理数据的时候,只要碰到经纬度这样的值,都可以默认为WGS84进行处理。

3、投影坐标系

投影坐标系包含一个地理坐标系,是在这个地理坐标系的基础上进行的平面投影。包含了三个重要的参数,一是基于的地理坐标系,二是其投影参数,三是其坐标单位。我们投影后,用的大部分数据单位都是米,也就是通过坐标单位设置的。一个典型的投影坐标系的ArcMap属性界面如下图所示。

image4.png

4、ISpatialReferenceFactory

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

image5.png

这些函数中,我们会经常用的CreateESRISpatialReferenceFromPRJ以及FromPRJFile,这两个函数是通过Prj字符串以及Prj文件创建空间参考。

CreateGeographicCoordinateSystem函数是创建地理坐标系函数,传入的参数为int类型。我们看下这个函数的定义。

image6.png

如果我们不知道这个函数的int型参数传什么值得话,那么这个函数的帮助页面给了我们非常清晰的解答,并且给出了创建WGS84的例子代码。

CreateProjectedCoordinateSystem函数是用来创建投影坐标系,使用方法和创建地理坐标系的方法类似,具体可参考该函数的帮助页面。

ExportESRISpatialReferenceToPRJFile函数是把一个空间参考对象保存成prj文件,一般我们会用prj文件存储空间参考。

5、常用的空间参考

WGS84,最常用的额地理空间参考。

基于WGS84的6度带UTM空间参考,一般用这个空间参考计算小范围的精确长度和面积。

WGS_1984_Web_Mercator,一般在线地图,例如谷歌、百度等使用的是该空间参考。

WGS_1984_Plate_Carree,如果把一个WGS84的数据直接拖到空白地图的ArcMap上,ArcMap会自动投影成该空间参考进行展示。

其他的,具体数据是什么空间参考,或者项目、系统要求是什么空间参考就直接使用,在开发过程中,很少出现需要自己去造空间参考的情况,基本上都是确定好的。

 

posted @ 2022-12-22 09:36  mytudousi  阅读(117)  评论(2编辑  收藏  举报