第二十二章投影变换、坐标校正1坐标系、地图投影地球表面事物的定位采用二大类坐标:(1)经纬度坐标,ArcGIS称地理坐标系(GeographicCoordinateSystem,GCS)。(2)二维笛卡尔平面坐标,ArcGIS称投影坐标系(ProjectedCoordinateSystem,PCS)。在实际工作中,经测量得到的空间信息在输入GIS数据库之前已经定好了坐标系。不同来源、不同坐标系的空间数据要在一起使用、相互参照时,就要作坐标转换,如果涉及不同的地图投影,要作投影变换。利用ArcGIS新建数据库时,软件提示用户,将要输入的数据采用什么坐标系(也称空间参照,SpatialReference),包括坐标系的名称、相关参数,然后输入、保存空间数据,在这期间,软件不对坐标作转换处理,输入前是什么坐标,就保存什么坐标。在某些情况下,可以忽略坐标系的具体名称或相关参数,由软件默认,可能对当前的应用没有影响,但是不同坐标系的数据之间不能相互参照使用。可能有三种情况需要转换或重新定义坐标系:(1)临时变换。多种来源、不同投影的数据要在一起参照使用,或为了某种特别的应用,可以临时变换坐标,工作结束后,要素在数据库、数据文件中的坐标恢复到原来的状态。这种临时变换的好处是一种数据可以适合多种用途,缺点是每次变换都要花费计算时间。(2)永久转换。空间要素的坐标按新的坐标系作转换处理,长期保存,反复使用,不再需要临时变换。这用转换的好处是反复使用中不需要转换,节省计算时间。缺点是相同的事物可能有多个坐标系,有冗余,修改、维护不方便。(3)修改坐标系的定义。用户建立数据库时,没有定义坐标系或原来的坐标系定错了,可以重新输入坐标系名称、相关参数。修改后,要素在数据库中的坐标并不发生变化,将来临时变换、永久转换时,按修改后的坐标系名称、相关参数起作用,对转换的结果产生实质性的影响。2投影变换启动ArcMap,打开/gis_ex09/ex24/ex24.mxd文档,进入dataframe1,可以看到World_grid图层显示的是一个覆盖全球范围的坐标网格。鼠标在图上移动时可以看到状态栏的坐标值,坐标单位是角度,网格的横坐标最大值是东经180º(180º00′00″E),最小值是西经180º(180º00′00″W),纵坐标最大值是北纬90º(90º00′00″N),纵坐标最小值是南纬90º(90º00′00″S),鼠标在地图窗口中移动时,可以看到下侧显示出经纬度坐标(图22-1)。23-1坐标系更改前后的区别双击World_grid层,在弹出的LayerProperties对话框中进入Source选项卡,可以看到坐标系统是GCS_WGS_1984(GCS表示GeographicCoordinateSystem),可以看到,GCS坐标系统到南北二极变形最大,南极点和北点在图上变成了和赤道平行、等长的两条线。关闭对话框,选择菜单View/DataFrameProperties,进入CoordinateSystem选项。当前的坐标系统显示为GCS_WGS_1984,准备定义一个新的坐标系统。点击按钮Clear,在下面的坐标选择框中选择Predefined/ProjectedCoordinateSystem/UTM/WGS1984/WGS1984UTMZone12N。点击按钮“应用”,图中的网格发生了变形,南极点和北极点交在一个点上,需要注意,World_grid数据源的坐标值并没有变化,仍然是GCS_WGS_1984,ArcMap只是临时(On-the-fly)改变了原始数据的坐标系,相当于前文讨论的第一种情况。3坐标转换(Transforn)ArcGIS有空间校正(SpatialAdjustment)功能,实现相同坐标系中要素坐标的校正,对矢量型的数据主要是三类:坐标转换(Transform),橡皮拉伸(RubberSheeting),接边(EdgeMatching)。在ArcMap中,用空间校正(SpatialAdjustmentToolbars)工具栏操作。图22-2空间校正(SpatialAdjustment)工具栏选用菜单View/Toolbars/SpatialAdjustment,添加空间校正工具条(见图22-2)。激活Dataframe3,其中有三个图层:Roadcenter(线)、Plan(多边形)、Design(线)。击点目录表(TOC)栏下方的Source标签,显示出各个图层的数据源。可以看到这三个图层的数据均在同一个Geodatabase的同一个要素集(Dataset)C1中,因此坐标参照系是相同的,但是具体的位置不一致。Roadcenter(线)和Plan(多边形)是已经完成的某地区规划道路中心线和规划地块,相互位置基本准确。Design(线)是别人完成的详细规划设计图,和前两者的位置有明显偏差,可以看出Design(线)需要移动、旋转才能和Roadcenter(线)、Plan(多边形)一致(见图22-3)。在Editor编辑工具条中,选择菜单Editor/StartEditing,进入编辑状态。图22-3Design图层需要坐标转换3.1选择校正的对象在SpatialAdjustment工具条中选择菜单SpatialAdjustment/SetAdjustData…,进入校正对象选择对话框:选择Allfeaturesintheselayers.RoadcenterPlan√Design勾选,Design层上的所有要素需要校正按OK键确认。3.2设定移位连接(DisplacementLink)在SpatialAdjustment工具条中选择新建移位连接(Newdisplacementlink)工具,用光标在屏幕上先用工具确定校正图层Design上需要校正的某一特征点,单击鼠标的左键确定,在Roadcenter层上或和Plan层上找到正确位置的对应点,单击鼠标的左键确定,这就绘出了一条移位连接线(DisplacementLink)。设置移位连接(DisplacementLink)时,尽可能使用捕捉模式。在Editor工具条中,选择菜单Editor/Snapping,选择不同的的捕捉方式(Edge,Vertex,End)。选用选择菜单Editor/Options,设置捕捉的距离。捕捉方式的具体使用,可参考关于数据编辑的章节。配合使用捕捉方式,至少应设3对移位连接,为了保证转换的精度,应多设几对,本练习建议设6对,而且都是在道路中心线的交叉点上(见图22-4)。图22-4设置移位连接(DisplacementLink)如果输入的移位连接的位置有差错,需要调整,选用SpatialAdjustment工具条中修改移位连接(ModifyLink)工具,选中需要调整的移位连接。用鼠标对准该连接线的端点,按住鼠标的左键不放,可以拖动该端点微调。用选择元素(SelectElements)工具,选中某个移位连接线,按键盘中的Del键,该移位连接线被删除。在SpatialAdjustment工具条中选择察看连接表工具(ViewLinkTable),连接表对话框弹出:可以用鼠标直接点击连接表中的坐标值,直接输入已知坐标值,以便于精确控制转换后的位置。3.3Transform的方式在SpatialAdjustment工具条中选择菜单SpatialAdjustment/AdjustmentMethods/Transform–affine,就IDXSourceYSourceXDestinationYDestinationResidualerror连接编号原来X值原来Y值转换后X值转换后Y值残差选用了仿射变换的校正方式。选择菜单SpatialAdjustment/PreviewWindow,会弹出校正预览窗口(AdjustmentPreviewWindow),可以预览校正后的变化。如果发现未能达到预期的效果,可以回到上一步,继续增设、调整移位连接。选用菜单SpatialAdjustment/Adjust,完成Transform转换,将Design层经旋转、移动等等变换,校正到预定的坐标位置上(图22-5)。图22-5经Transform处理,Design图层被校正选择Editor工具栏中菜单Editor/StopEditing,结束编辑状态。按系统的提示,保存校正的结果,完成坐标转换。4坐标拉伸(RubberSheeting)RubberSheeting俗称橡皮拉伸,和Transform不同,主要针对要素的不均匀变形。激活dataframe3。其中有两个图层:Roadplan(规划道路,线)、Pipeline(地下管线,线)。点击TOC(目录表)栏下方的Source标签,显示出各个图层的数据源。可以看到这两个图层的数据均是存放在同一个GeodatabaseData20中,同属一个要素集DatasetC2。Roadplan为某地区的规划道路线,而Pipeline从纸图扫描后矢量化得到设计的排水管网,两者不仅有定位偏差,而且因原始纸图加扫描处理,排水管网还有各个方向的不均匀变形(见图22-6),为此需要将Pipeline校正到和Roadplan一致的位置。在TOC中选择图层Pipeline,Editor编辑工具条中,选择菜单Editor/StartEditing,进入编辑状态(如果无法启用StartEditing,很可能是另一个FeatureClass正在编辑,先用StopEditing关闭)。4.1选择校正对象在Spatialadjustment工具条中选择菜单Spatialadjustment/SetAdjustData…,进入校正对象选择对话框,在其中:选择Allfeaturesintheselayers.Roadplan√Pipeline勾选,Pipeline层上的所有要素需要校正选OK键确认。4.2设定移位连接(DisplacementLink)在Spatialadjustment工具条中选择新建移位连接工具,用光标在屏幕上先用工具确定校正图层Pipeline上的某一特征点,单击鼠标的左键确定,然后在Roadplan层找到对应点,单击鼠标的左键后,就可以输入一条移位连接线(DisplacementLink)。和Transform方法一样,一般也需要配合使用捕捉方式,建立多对移位连接(如图22-6)。图22-6橡皮拉伸前,应有多个移位连接线同样也可使用SpatialAdjustment工具条中修改移位连接工具,调整已经输入的移位连接线。用鼠标对准需要调整的连接线端点,按住鼠标的左键不放,用拖动方式对端点的位置进行微调。用选择元素工具,选中一个移位连接,按下键盘中的Del键,就可以删去不需要的连接线。选择察看连接表工具,就会弹出连接表对话框,在其中察看已有的连接,或者直接输入或修改已知的坐标值,达到精确地输入坐标的目的。4.3选择校正方式在SpatialAdjustment工具条中选择菜单SpatialAdjustment/AdjustmentMethods/RubberSheet,确定采用橡皮拉伸(Rubbersheeting)的校正方式。选择菜单SpatialAdjustment/AdjustmentMethods/Options,进入校正特性对话框,选择General标签:AdjustmentRubbersheet下拉选择后,单击Options键,进入下一步设置Method○·NatureNeighbor○LinearRubbersheet的方式为NatureNeighbor按“确定”键完成Rubbersheet的方式设定,在校正特性对话框再选“确定”键,结束校正方式选择。可以选择菜单SpatialAdjustment/PreviewWindow,会弹出校正预览窗口(AdjustmentPreviewWindow),可以预览校正后的变化。如果发现未能达到预期的校正效果,可以回到上一步,继续增设、调整移位连接。选用菜单SpatialA