从其他软件(比如MapGIS)向ArcGIS转换矢量数据时常常面临坐标系统丢失的问题,导致转换后的数据与其他来源数据叠加时空间位置无法匹配。在知道原数据坐标系统的情况下,可以在ArcGIS中为其重新添加坐标系统,使其能与其他来源数据正常匹配。当矢量数据文件数量较少时,可以逐个手动为其定义。但是当矢量数据文件数量较多时,手动定义的工作量就变得相当大。可否批量为这些矢量数据文件定义坐标系统呢?答案是肯定的。今天,笔者就教大家在ArcGIS中为多个矢量数据批量定义坐标系统。
1. ArcGIS的定义坐标系统工具
ArcGIS的定义坐标系统工具(即Define Projection工具)位于ArcToolbox的Data Management Tools下,具体路径为ArcToolbox->Data Management Tools->Projections and Transformations->Define projection。该工具用于为矢量数据定义坐标系统信息,既可以定义球面坐标系统(Geographic Coordinate System),也可以定义平面直角坐标系统(Projected Coordinate System)。
双击Define Projection工具将其打开,其界面比较简单,仅需设置输入的矢量数据及欲为其定义的坐标系统,然后点击OK即可为一个矢量数据文件定义好坐标系统。需要注意的是,定义的坐标系统必须与数据原有的坐标系统(仅仅是因为原有的坐标系统在转换时丢失)一致,否则将导致数据无法正常显示。
2. 利用ArcGIS自带的简单批处理程序
ArcGIS自带了简易的批处理程序,可以批量处理少量的矢量数据。在Define Projection工具上右击,选择Batch…即可打开该批量定义坐标系统的程序。
打开Batch Define Projection工具后,可以看到其界面如图4所示。在Input Dataset or Feature Class下的空白处双击,可以设置输入的矢量数据路径和文件名。在Coordinate System下的空白处双击,可以设置坐标系统。单击右侧的+号,可以增加一行。在设置好所有的文件后,点击OK等待处理完毕即可。
3. 建立批处理Model
从ArcGIS 10.0以后,ModelBuilder工具中加入了迭代工具,利用该迭代工具可以非常方便的实现批处理。ModelBuilder工具位于主菜单的Geoprocessing中,也可点击Standard工具条上的ModelBuilder按钮来打开模型工具。
3.1 添加矢量数据迭代工具
在ModelBuilder的主菜单中依次选择Insert->Iterators->Feature Classes,即可将迭代矢量数据的迭代器添加到工作区中。在Iterate Feature Classes上右击,依次选择Make Variable->From Parameter->Workspace or Feature Dataset,可以将输入矢量数据的变量显示在工作区中。
3.2 添加Define Projection工具
从ArcToolbox中将Define Projection拖拽到ModelBuilder的工作区中,并将其置于图5的椭圆形Feature Class要素之后。双击圆角矩形Define Projection打开设置对话框,在Input Dataset or Feature Class中点击右侧的下拉箭头,选择其中的Feature Class一项,然后点击OK关闭该对话框。
在圆角矩形Define Projection上右击,依次选择Make Variable->From Parameter->Coordinate System,将坐标系统设置的工具添加到工作区。
通过以上的设置即建立好了批量定义矢量数据坐标系统的模型。
3.3 模型设置及运行
该模型仅需设置两个参数。第一个是最左边的椭圆形 Workspace or Feature Dataset,双击该椭圆形,设置矢量数据所在的文件夹。第二个是椭圆形Coordinate System,双击该椭圆形,即可设置要为矢量数据定义的坐标系统。
设置好参数后,模型的各个模块均变为了彩色。点击工具条上最右边的运行按钮即可开始运行模型。待模型运行结束后,指定文件夹下的所有矢量数据就会被全部添加上指定的坐标系统信息。