简介
今天和大家谈一下最近在做项目过程中的一个经验或者是心得吧,主要是关于在ArcGIS当中加载CAD(dwg)文件并保持坐标正确的相关问题(尤其是当CAD文件的坐标不知道的时候)。
一、问题来源
画图是我们规划地理行业人员在为甲方当牛马的过程中(不,认真工作的时候)的必备技能,其中最基础的便是数据了。目前我所了解的,从国土空间规划实施以来多数数据是以矢量文件(shape)的形式存储,但是也有部分数据仍然是使用CAD文件绘制的,这就会给我们的工作带来一些不便,尤其是当我们需要用ArcGIS软件统一出图的时候,或者进行计算的时候。要在ArcGIS当中加载CAD文件(dwg)并保持坐标正确,主要面临的问题就两个:一个是将CAD文件(dwg)转换为GIS文件(shape),另一个是保证CAD文件转为GIS文件后定义的坐标系是正确的。我们下面来依次解决这两个问题。
二、CAD文件(dwg)转GIS文件(shape)
这个问题比较容易解决,为了给小白们一个完整的教程,我还是再讲解一下。具体步骤如下。
1.打开ArcGIS软件,依次选择ArcToolbox中的“数据管理工具”—“要素”—“要素转线”。(注:此处选择“要素转线”是因为转线比转面更稳定,不会丢失数据,如果你需要矢量面数据可以后面在ArcGIS中进行转换)
2.打开“要素转线”工具后,输入要素选择你的CAD文件,输出要素类选择你想要存储文件的位置。需要注意的是,选择CAD文件的时候一般会显示两种文件,一种是线文件(Polyline),一种是面文件(Polygon),我们选择Polyline文件。
3.点击确定后,会生成一个矢量线数据,这个数据的属性表可能比较乱,大家可以自行修改。另外也可以对要素进行合并、删除等操作以达到想要的效果。
三、CAD文件(dwg)转换为GIS文件(shape)后坐标的确定
CAD文件(dwg)转换为GIS文件(shape)后是没有坐标信息的,需要为其定义正确的坐标系。要想解决这个问题,其实就是看CAD文件中显示的坐标对应的是ArcGIS的哪种坐标系,然后对转换后的矢量文件定义该坐标系即可。我国目前主要使用CGCS2000地理坐标系,并且使用基于此的高斯克吕格投影。CAD文件中的平面坐标系对应的是GIS 文件中的投影坐标系(不是地理坐标系),所以对转换后的矢量文件定义坐标系一定是定义投影坐标系!因此,问题的关键就是确定该CAD文件的坐标对应的是高斯克吕格投影中的哪种具体投影。
1.高斯克吕格投影知识补充
为了方便理解,首先为大家科普一些高斯克吕格投影的知识。高斯克吕格投影是德国数学家高斯于19世纪拟定的,后经测量学家克吕格对其补充形成,所以叫高斯克吕格投影。高斯克吕格投影是分带投影,有3°分带和6°分带两种,见下图。
① 高斯投影6度带:
自0子午线起,经度每隔6°为一个分带,依次编号1,2,3……。每个分带都有一个中央经线,即分带中间的经线,第一个分带的中央经线为3°,第二个分带的中央经线为9°,依此类推。在6°分带中,我国跨越了13~23带(共计11带),中央经线由75°~135°。记带号为n,中央经线的经度为L,它们的关系为:L=6n-3。
② 高斯投影3度带:
同6度分带相似,但是它是自东经1.5度起,每隔3°为一个分带,依次编号1,2,3……。每个分带都有一个中央经线,即分带中间的经线,第一个分带的中央经线为3°,第二个分带的中央经线为6°,依此类推。在3°分带中,我国跨越了25~45带(共计21带),中央经线由72°~135°。记带号为n,中央经线的经度为L,它们的关系为:L=3*n。
③ 高斯投影的XY坐标规定:
无论是3°分带方法还是6°分带方法,每个分带都是一个独立的坐标系统(以6°分带为例,0°~6°为一个独立坐标系统,6°~12°为一个独立坐标系统)。对于每个分带来说,分带的中央经线为纵轴(Y),赤道为横轴(X),两个轴的交点为坐标原点。对于纵坐标(Y)来说,赤道以北为正,以南为负,我国全部位于北半球,因此纵坐标都为正值。地球两极周长大约为39942千米,共360°,每度大约为111千米,由于我国陆地部分纬度多位于北纬10°~北纬54°以内,所以纵坐标的值都是7位数。但是对于横坐标来说,如果以分带的中央经线为0来计算,那么中央经线以东为正,以西为负,坐标会出现负值,不容易理解。地球赤道周长大约为40075千米,共360°,则3°的长度大约为334千米,6°的长度大约为668千米。因此每个3°分带内的坐标值范围为-167000m~167000m,每个6°分带内的坐标值范围为-334000m-334000m。为了使横坐标不出现负值,规定将各分带中的坐标纵轴(该分带的中央经线)西移500公里作为起始轴,即带内的横坐标值加500公里。加上之后每个3°带的坐标范围为333000~667000m,每个6°带的坐标范围为166000m~834000m。注意,此时无论是3°分带还是6°分带,横坐标都是六位数。
④ 3°带和6°带适用范围:
我国1:2.5-1:50万地形图采用6度分带;大于1:2.5万(如1:1万)比例尺地形图采用3度分带,以保证必要的精度。3度和6度另外一个区别为6度覆盖的范围广一些,3度覆盖的小。
2.ArcGIS软件中的高斯克吕格投影
ArcGIS中的高斯克吕格投影提供3°带和6°带两种投影方式,且每种投影方式都有两种显示方式,一种为横坐标有带号的显示方式,一种为横坐标无带号的显示方式。下面以3°分带中的第34带(中央经线为102E)和6°分带中的第18带(中央经线为105E)为例给大家讲解。
① 3°分带不显示带号:
在ArcGIS中,不显示带号的投影方式为中央经线投影,在软件中以CGCS2000 3 Degree GK CM +中央经线的方式命名。如果我们要给中央经线为102E的研究区域(各地的中央经线都可以百度查到)进行不显示带号的3°分带投影,则应该选择下图所示坐标系。
使用该坐标系的数据,横坐标(X)为6位,纵坐标(Y)为7位。具体原因参考上文。
② 3°分带显示带号:
由于高斯克吕格投影每个分带都是一个独立的坐标系统,因此不显示带号的投影方式可能会导致不同分带的地区坐标相同的情况出现。为了避免此情况出现,可以在ArcGIS中选择显示带号的投影方式,在软件中以CGCS2000 3 Degree GK +带号的方式命名。如果我们要给位于3°分带中的第34带的研究区域(各地的带号可根据高斯克吕格投影的分带图确定)进行显示带号的投影,则应该选择下图所示坐标系。
使用该坐标系的数据,横坐标(X)为8位,因为最前面加了两位带号,纵坐标(Y)仍为7位。
③ 6°分带不显示带号:
在ArcGIS中,6°分带方法不显示带号的投影方式在软件中以CGCS2000 GK CM+中央经线的方式命名。如果我们要给中央经线为105E的研究区域进行不显示带号的3°分带投影,则应该选择下图所示坐标系。
使用该坐标系的数据,横坐标(X)为6位,纵坐标(Y)为7位。
④ 6°分带显示带号:
与3°分带法类似,在ArcGIS中,选择显示带号的投影方式,软件中以CGCS2000 GK +带号的方式命名。如果我们要给位于6°分带中的第18带的研究区域进行显示带号的投影,则应该选择下图所示坐标系。
使用该坐标系的数据,横坐标(X)为8位,因为最前面加了两位带号,纵坐标(Y)仍为7位。
⑤ 总结:
通过对ArcGIS中高斯克吕格投影的详细解释,可以发现ArcGIS中的投影数据,无论是3°带投影还是6°带投影,其纵坐标(Y)一定是7位数,其横坐标可能是6位数或者8位数,横坐标6位和8位的区别为是否加带号。6位数的为不加带号的,即中央经线投影,8位数的为加带号的,即显示带号投影,前两位为带号。另外,3°带的带号和6°带的带号很容易区分,在中国,3°分带跨越了25~45带,6°分带跨越了13~23带,两者没有相同的带号。此外,由于CAD文件中的数据范围通常都是小区域,比例尺大,所以一般都用3°分带投影。
3.CAD文件坐标的确定
如果上面的内容你都看完并且学会了,那么CAD文件中的坐标系就很好判断了,最主要的是看横坐标(X)。横坐标是6位数还是8位数,如果是6位数的话,查一下该地区所在区县的中央经线(百度就可以),其坐标系应该是该中央经线下高斯3°分带中央经线投影(不考虑是6°分带是因为很难区分,并且CAD文件通常使用3°分带的坐标);如果是8位数的话,前两位是带号,带号在13~23之间为该带号下的高斯6°分带带号投影,带号在25~45之间为该带号下的高斯3°分带带号投影。下面举例示范。
示例1:下图是一个CAD文件,其横坐标(X)是6位数,因此可以判断这是高斯3°分带下的中央经线投影。这个数据的研究区域在颍上县(介于东经115°56—116°38),位于高斯3°分带中的第39带,其中央经线为117°。所以该数据在ArcGIS中的坐标系应该为CGCS2000 3 Degree GK CM 117E,在软件中对其定义坐标系即可,不再赘述。
示例2:如下图,其横坐标(X)是8位数,前两位为带号39,根据39带可以判断该数据的坐标系为高斯3°分带下的显示带号投影(3°分带跨越的带号为25~45带,6°分带跨越的带号为13~23带,39带在25~45之间,所以判断为3°分带)。所以该数据在ArcGIS中的坐标系应该为CGCS2000 3 Degree GK Zone 39,在软件中对其定义坐标系即可。
示例3:这个比较特殊,横坐标是5位,纵坐标也是5位。一般来说横坐标是6位或者8位,纵坐标是7位,为什么会出现这种情况呢?对于横坐标,这种情况下除了省略了带号,还省略了带号后面紧跟着的一位数,由于此位的数比较大,因此在研究范围内该位的数不会发生变化,所以也省略了。(此处大家使劲理解!)至于具体省略了哪个数字,去问甲方吧!纵坐标同样,省略了最前面的两位,由于这两位的数比较大,因此在研究范围内这两位的数不会发生变化,所以也省略了。具体数字问甲方!知道了横坐标和纵坐标省略的数字后,在CAD中对数据平移相应的距离,然后利用前面所述方法在ArcGIS中定义坐标系即可。当然,这种数据并不常见,举例的目的就是为了让大家融会贯通,举一反三。