ArcGIS空间参考

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.1 空间参考

空间参考(Spatial Reference)是GIS数据的骨骼框架,能够将我们的数据定位到相应的位置,为地图中的每一点提供准确的坐标。在同一个地图上显示的地图数据的空间参考必须是一致的,如果两个图层的空间参考不一致,往往会导致两幅地图无法正确拼合,因此开发一个GIS系统时,为数据选择正确的空间参考非常重要。

在ArcGIS 中,每个数据集都具有一个坐标系,该坐标系用于将数据集与通用坐标框架(如地图)内的其他地理数据图层集成。通过坐标系可在地图中集成数据集,以及执行各种集成的分析操作,例如叠加不同的源和坐标系中的数据图层。

1.1.1 相关知识

1.1.1.1大地水准面

大地水准面是由静止海水面并向大陆延伸所形成的不规则的封闭曲面。它是重力等位面,即物体沿该面运动时,重力不做功(如水在这个面上是不会流动的)。因为地球的质量并非在各个点均匀分布,因此重力的方向也会相应发生变化,所以大地水准面的形状是不规则的,如下图:

1.1.1.2地球椭球体

由定义可以知大地水准面的形状也是不规则的,仍不能用简单的数学公式表示,为了测量成果的计算和制图的需要,人们选用一个同大地水准面相近的可以用数学方法来表达的椭球体来代替,简称地球椭球体,它是一个规则的曲面,是测量和制图的基础,因地球椭球体是人们选定的跟大地水准面很接近的规则的曲面,所以地球椭球体就可以有多个,地球椭球体是用长半轴、短半轴和扁率来表示的。下表列出了一些最常见的参考椭球:

1.1.1.3基准面

基准面是在特定区域内与地球表面极为吻合的椭球体。椭球体表面上的点与地球表面上的特定位置相匹配,也就是对椭球体进行定位,该点也被称作基准面的原点。原点的坐标是固定的,所有其他点由其计算获得。

基准面的坐标系原点往往距地心有一定偏移(有的也在地心,如WGS1984),如西安80的基准面和北京54的基准面.因为椭球体通过定位以便能更好的拟合不同的地区,所以同一个椭球体可以拟合好几个基准面.因为原点不同,所以不同的基准面上,同一个点的坐标是不相同的,这点我们应该清楚.下面以华盛顿州贝灵厄姆市为例来说明。使用NAD27、NAD83 和WGS84 以十进制为单位比较贝灵厄姆的坐标。显而易见,NAD83 和WGS84 表示的坐标几乎相同,但NAD27 表示的坐标则大不相同,这是因为所使用的基准面和旋转椭球体对地球基本形状的表示方式不同。

下图来自ArcGIS 说明了基准面是基于椭球体的:

1.1.1.4地图投影

简单的说地图投影就是把地球表面的任意点,利用一定数学法则,转换到地图平面上的理论和方法。

1.1.2 两种坐标系

1.1.

2.1地理坐标系

地理坐标系也可称为真实世界的坐标系,是用于确定地物在地球上位置的坐标系,它用经纬度来表示地物的位置,经度和纬度是从地心到地球表面上某点的测量角,通常以度或百分度为单位来测量该角度。下图将地球显示为具有经度和纬度值的地球。

地理坐标系(GCS) 是基于基准面的使用三维球面来定义地球上的位置,GCS 往往被误称为基准面,而基准面仅是GCS 的一部分,GCS 包括角度测量单位、本初子午线和基准面。下图来自ArcGIS说明了了地理坐标系的组成:

1.1.

2.2投影坐标系

投影坐标系是基于地理坐标系的,它使用基于X,Y值的坐标系统来描述地球上某个点所处的位置,可以这样认为投影坐标系=地理坐标系(如:北京54、西安80、WGS84)+投影方法(如:高斯-克吕格、Lambert投影、Mercator投影)+线性单位。下图来自ArcGIS 说明了投影坐标系的组成:

1.1.3 ArcGIS Engine对空间参考的支持

ArcGIS Engine提供了一系列对象供开发者管理GIS系统的坐标系统。对大部分开发者而言了解ProjectedCoordinateSystem,GeographicCoordinateSystem,SpatialReference Environment这三个组件类是非常有必要的,对于高级开发者而言,可能需要自定义坐标系统可以使用这些对象Projection,Datum,AngularUnit,Spheriod,PrimeMeridian和GeoTransformation等。在ArcGIS中除了我们上面介绍的两种坐标系,还有一种称之为Unknown的坐标系,这种坐标系是当我们的数据没有坐标(jpg等文件)或者坐标文件丢失的时候ArcMap不能识别数据的投影信息而赋予的,在ArcGIS Engine 中下面三个类分别对应了三个坐标系:

利用ArcGIS Engine创建一个坐标系或者基准面用的是SpatialReferenceEnvironmentClass类,该类实现了ISpatialReferenceFactory接口,该接口定义了创建坐标系,基准面等方法和属性,如下图:

在利用ISpatialReferenceFactory创建坐标系的时候往往需要一个int类型的参数,这个int其实就是这些坐标系的代号,如我们熟悉的4326就是WGS1984,下面为部分截图:

1.1.3.1同一基准面的坐标转换

对于同一基准面,我们可以肯定一点就是同一位置经纬度坐标是一样的,而不同的就是计算成平面坐标的时候可能有所不同,因为算法不一样,在这里我只是将经纬度坐标转成平面的坐标。

private IPoint GetpProjectPoint(IPoint pPoint,bool pBool)

{

ISpatialReferenceFactory pSpatialReferenceEnvironemnt = new SpatialReferenceEnvironment();

ISpatialReference pFromSpatialReference = pSpatialReferenceEnvironemnt.CreateGeographicCoordinateSystem((int)esriSRGeo CS3Type.esriSRGeoCS_Xian1980);//西安80

ISpatialReference pToSpatialReference = pSpatialReferenceEnvironemnt.CreateProjectedCoordinateSystem((int)esriSRProjC S4Type.esriSRProjCS_Xian1980_3_Degree_GK_Zone_34);//西安80

if (pBool == true)//球面转平面

{

IGeometry pGeo = (IGeometry)pPoint;

pGeo.SpatialReference = pFromSpatialReference;

pGeo.Project(pToSpatialReference);

return pPoint;

}

else//平面转球面

{

IGeometry pGeo = (IGeometry)pPoint;

pGeo.SpatialReference = pToSpatialReference;

pGeo.Project(pFromSpatialReference);

return pPoint;

相关文档
最新文档