ArcObjects SDK 019 SpatialReference
ArcObjects SDK帮助中Esri.ArcGIS.Geometry命名空间帮助中的Object Model Diagram共两页,第一页就是Geometry的结构,第二页就是SpatialReference的结构。如下图所示。
如果想深入了解空间参考网上有很多介绍这方面的文章,作为Arcobjects SDK开发,我们主要还是从开发的角度来说SpatialReference部分。
上面的图看起来还是挺复杂的,我们可以做一个简化版的图,来更简单的说明问题。
空间参考主要包括两类,地理空间参考和投影空间参考,加上未知坐标系,共3个类继承了空间参考接口。
地理坐标系就经纬度为单位的坐标系,经度-180到180,纬度-90到90。我们常用的就是WGS84。在ArcMap中,地理坐标系的参数设置界面如下图所示。
地理坐标系只要是我们常用的差别都不是太大,不同的地方只是椭球体的看SDK的话,可变化的地方主要椭球体的长短轴长度,其他的例如中央经线以及坐标单位等基本上不会变化。我在平常处理数据的时候,只要碰到经纬度这样的值,都可以默认为WGS84进行处理。
投影坐标系包含一个地理坐标系,是在这个地理坐标系的基础上进行的平面投影。包含了三个重要的参数,一是基于的地理坐标系,二是其投影参数,三是其坐标单位。我们投影后,用的大部分数据单位都是米,也就是通过坐标单位设置的。一个典型的投影坐标系的ArcMap属性界面如下图所示。
这些函数中,我们会经常用的CreateESRISpatialReferenceFromPRJ以及FromPRJFile,这两个函数是通过Prj字符串以及Prj文件创建空间参考。
CreateGeographicCoordinateSystem函数是创建地理坐标系函数,传入的参数为int类型。我们看下这个函数的定义。
如果我们不知道这个函数的int型参数传什么值得话,那么这个函数的帮助页面给了我们非常清晰的解答,并且给出了创建WGS84的例子代码。
CreateProjectedCoordinateSystem函数是用来创建投影坐标系,使用方法和创建地理坐标系的方法类似,具体可参考该函数的帮助页面。
ExportESRISpatialReferenceToPRJFile函数是把一个空间参考对象保存成prj文件,一般我们会用prj文件存储空间参考。
基于WGS84的6度带UTM空间参考,一般用这个空间参考计算小范围的精确长度和面积。
WGS_1984_Web_Mercator,一般在线地图,例如谷歌、百度等使用的是该空间参考。
WGS_1984_Plate_Carree,如果把一个WGS84的数据直接拖到空白地图的ArcMap上,ArcMap会自动投影成该空间参考进行展示。
其他的,具体数据是什么空间参考,或者项目、系统要求是什么空间参考就直接使用,在开发过程中,很少出现需要自己去造空间参考的情况,基本上都是确定好的。