图4 在Shapefile Properties和Layer Properties中查看Point Shapefile数据的“属性坐标系”
这里要特别强调的是:数据的真实坐标系和属性坐标系可以不同,当二者不同时就出现错误。
例如:数据的真实坐标系为地理坐标系GCS_WGS_1984,而属性坐标系为投影坐标系WGS_1984_UTM_Zone_50N,或真实坐标系为投影坐标系WGS_1984_UTM_Zone_50N,而属性坐标系为地理坐标系GCS_WGS_1984,都是错误的。
类似的,数据的真实坐标系为地理坐标系GCS_WGS_1984,而属性坐标系为地理坐标系GCS_Xian_1980,或真实坐标系为投影坐标系WGS_1984_UTM_Zone_50N,而属性坐标系为投影坐标系WGS_1984_UTM_Zone_49N,也都是错误的。
只要二者不统一,就是错误的。在数据处理过程中,误将属性坐标系改动,造成属性坐标系与真实坐标系不符合,是ArcGIS操作的常见错误。使数据的属性坐标系和真实坐标系吻合,是进行所有数据处理和分析的必要前提。
同样以国科大雁栖湖校区图书馆的Point Shapefile数据为示例说明真实坐标系和属性坐标系不吻合的情况。如果PointShapefile数据的真实坐标系为地理坐标系GCS_WGS_1984,而将属性坐标系设置为投影坐标系WGS_1984_UTM_Zone_50N,图书馆点就会跑到赤道附近的印度尼西亚去(图5)。
此时,系统会认为此点在投影坐标系WGS_1984_UTM_Zone_50N中坐标值为(116.679267,40.408265),而在投影坐标系
WGS_1984_UTM_Zone_50N中正确的坐标值应为(472786.066803,4473121.59882)。
相反,如果Point Shapefile数据的真实坐标系为投影坐标系WGS_1984_UTM_Zone_50N,而属性坐标系为地理坐标系GCS_WGS_1984,图书馆点则会“跑出地球”。因为系统会认为此点的经纬度为(472786.066803,4473121.59882),地球上的点的经纬度值最大为180度,最小为-180度,因而这两个经纬度值远远超过了180度的最大值。
图5 数据的“属性坐标系”与“真实坐标系”不吻合导致的点位错误
为何在实际操作中我们一般都不必检查数据的属性坐标系是否与真实坐标系吻合呢?这是因为在大多数时候,我们拿到的数据不但有属性坐标系并且还与真实坐标系是吻合的。一般来说,有两个明显的迹象可以判断数据的属性坐标系是不对的。一个是将数据加载到ArcMap里面后报错;另外一个是数据加载到ArcMap里面后尽管没报错,但是位置明显不对。比如上面的例子,位于国科大的点跑到印度尼西亚去了。
图6是将真实坐标系为投影坐标系“Asia_Lambert_Conformal_Conic”的数据的属性坐标系改为地理坐标系“GCS_WGS_1984”并加载到ArcMap里面后的报错信息。这个信息是说“数据的范围(extent)与其空间参考的信息不吻合”。
具体来讲,投影坐标系“Asia_Lambert_Conformal_Conic”中的坐标值有负值,而负值超出了地理坐标系“GCS_WGS_1984”的范围(正值)。以下叙述,如无特别说明,都隐含数据属性坐标系与真实坐标系吻合的假设,并以“数据坐标系”统称。
图6 数据的“属性坐标系”与“真实坐标系”不吻合导致的“inconsistentextent”错误信息
ArcMap/ArcScene中Layers的坐标系是指当我们把若干矢量数据或栅格数据加载进ArcMap或ArcScene里面组成“Layers”的时候,这个Layers的坐标系。“地图坐标系”在ArcMap中可以通过右击“Layers”打开“Data Frame Properties”后在“Coordinate System”标签中查看或者修改(图7),在ArcScene中可以通过右击“Scene Layers”打开“Scene Properties”后在“Coordinate System”标签中查看或者修改。
图7 在ArcMap中查看或者修改Layers的“地图坐标系”
可以想象,一个Layers可以包括多个数据Layer,这些数据Layer的坐标系也可以各不相同。因此,Layers的地图坐标系可以不同于各Layer的数据坐标系。可以选择Layers中的某一Layer的数据坐标系作为地图坐标系,也可以选择其他任意坐标系,只要这个坐标系的覆盖范围能覆盖所有Layer数据的范围。当在ArcMap中加载多个数据Layer时,系统会自动将第一个加载进来的有坐标系的数据的坐标系作为Layers的地图坐标系。为了使所有具有不同坐标系的数据Layer都在同一地图坐标系下进行显示等操作,当某个Layer的数据坐标系与Layers的地图坐标系不同时,系统会自动用一定的算法将数据坐标系(的坐标值)临时转换为地图坐标系(的坐标值)。这种临时的坐标系转换,并不改变每个数据本身的坐标系。
图8所示:“library”、“library_utm”、“国科大20.tif”和“WorldPhysical Map”等四个Layer的数据坐标系分别为:地理坐标系“GCS_WGS_1984”、投影坐标系“WGS_1984_UTM_Zone_50N”、投影坐标系“WGS_1984_Web_Mercator”和投影坐标系“WGS_1984_Web_Mercator_Auxiliary_Sphere”;Layers的地图坐标系则使用了“国科大20.tif”这一栅格Layer的数据坐标系(投影坐标系“WGS_1984_Web_Mercator”)。
当数据在与其坐标系不同的地图中显示时,会出现“变形”。这种变形是由“临时的坐标系转换”引起的。图9为使用地理坐标系“GCS_WGS_1984”作为Layers的地图坐标系的情况。可以看出,相较使用“国科大20.tif”的数据坐标系(投影坐标系“WGS_1984_Web_Mercator”)作为地图坐标系,使用地理坐标系“GCS_WGS_1984”作为地图坐标系使得“国科大20.tif”这一栅格Layer的变形明显,其轮廓(覆盖范围)在东西经度方向上被拉长了,在南北维度方向则被压缩了。如果不希望某个Layer出现变形,那么就使用该Layer的数据坐标系作为Layers的地图坐标系。