必须知道的知识(敲黑板!)
1. 如果数据不存在坐标系统,则计算时无单位,许多操作都不能进行。
2.投影坐标系统是平面坐标系统,单位是米、千米这些;而地理坐标系统是球面坐标系统,单位是度。
定义投影是定义坐标系统的意思,而不是单指定义投影坐标系统。
3.图层的地图单位和显示单位,地图单位是你这个图层的使用的实际单位,一般默认你添加进来的第一个数据的坐标系统和单位作为图层的坐标系统和单位;显示单位是Arcgis这个窗口显示的单位,不参与计算和测量。也就是如下图所示,你的显示单位是度分秒,所以右下角地图显示为112°13′21.063....显示的是经纬度。但是你实际计算测量时默认单位是米,而不是度分秒;也就是说决定你地图操作结果的是你的地图单位,显示单位你随便乱选完全不影响你的分析和操作。
进入正题,当你发现你的数据未定义时,有以下几种情况:
一、当你拿到一个什么坐标系信息都没有的图层
1.新建一个空白页地图,加载你的一个数据。
2.检查你的数据状态
在数据“镇级行政区_2000”右键选源(source),查看数据坐标系,如下图显示未定义,undefined。整个Arcgis窗体右下角显示未知单位(unknown),查看图层属性(properties)--常规(General)--显示单位和地图单位都显示为未知(unknown),且坐标系统显示未定义(undefined)的情况。
这时候我们需要了解多一点这个数据的信息,但是很多时候下,除了知道它是哪里,是什么坐标系统我们是不知道的。
做到这里我除了知道它是广州之外,对它的其他信息一无所知。可是令人忧伤的是这份数据一定要用,这时我们得对它进行推测,并对它设定一个偏差不大的坐标系统。
1.1.Define projection 定义投影(栅格矢量均适用)
这份数据本来是什么坐标系统,实在不知道就用推测法。
1)首先判别数据是地理坐标系还是投影坐标系:
在显示单位为unknown的情况下
·地理坐标系是这样的,隐约看得出经纬度,这个时候我们要对自己国家的经纬度敏感。作为参考北京的经纬度大概是116E,40,N,广州大概是113E,23N。
·投影坐标是这样的很长很长的一堆数字
2)知道数据的大致经纬度之后,就可以定义投影define projection了
Data Management(数据管理工具) –projection and transformation(投影与转换) –define projection(定义投影)
选择你要定义的数据,然后选坐标系统,当你的原始数据显示额是类似度分秒的115.861 38.969,这样的单位时,选择地理坐标系,如果显示的是44567824535,664573242,这种很长的大数,则是投影坐标系。
本次示例数据,是这样的
,推断为投影坐标系,又因为作者多番努力得知了这可能是个CGCS2000的数据,所以在选择坐标系统的时候直接选择投影坐标系统-Gauss Kruger-CGCS2000,因为已知这是广州的图,广州经度在113°左右,所以选择了CS2000_3_Degree_GK_CM_114E。
如果在我不知道这份数据的可能是CGCS2000的情况下,我会选投影坐标系-西安80下的Xian_1980_3_Degree_GK_CM_114E或者投影坐标系 UTM下的 WGS_1984_UTM_Zone_49N。为什么是114E和49N?因为我们的数据在3度带投影下,处于114E中央经线附近,或者是49N的投影区中。(具体原理拉到本页最后面)
作为参考,北京(116E,40N)是Xian_1980_3_Degree_GK_CM_117E或者WGS_1984_UTM_Zone_50N
如果我的数据是
这样子的,那就是地理坐标系,一般地理坐标系(如谷歌的球面数据),直接选地理坐标系- world 选WGS_1984,按确定就可以了。
定义投影完成后,你可以设置数据框的坐标系为你这个数据的坐标系。然后打开数据框(又叫图层)layer –general(常规),将显示单位修改为度分秒进行检查,依据界面右下角的坐标显示判断你的坐标系统设定是否正确。下图中我的数据显示是广州的经纬度,那么就定义坐标系统成功了。
二、投影转换(矢量栅格按键分开)
当你有多个数据且它们的坐标系统都不一样,你需要统一时,需要进行投影变换。无论是地理坐标系统转投影坐标系统 还是投影坐标系转投影坐标系,都是用的"数据管理工具下-投影与转换工具,矢量文件shp选择的是:要素-投影;栅格数据选择的是:栅格-栅格投影。
部分操作只有在投影坐标系下才能使用(地理坐标系可以理解为是一个地球系统,单位是度,计算出来的长度都是度的单位,不是米的单位)。
所以在原始数据定义好坐标系统之后需要进行投影转换,这里需要注意的是定义投影是定义地理或投影坐标系的意思,不是单纯的定义投影坐标系。
当你的定义了坐标系统是地理坐标系时,你进行矢量数据的投影:
Data management –projection and transformation—Fester(要素)-Project(投影)
(数据是栅格数据时则Data management –projection and transformation—Raster(栅格)-Project Raster(投影栅格))
这一步就将你的数据地理坐标系转换到另一套坐标系统中(注意,不能因为需要用到投影数据,就将本来是地理坐标系的数据在前面的定义投影里直接定义为投影坐标系。定义投影的意义是还原数据本身的坐标系统,投影转换则是将不同坐标系统的数据进行转换至同套系统中。)
如果你的数据原本就是投影坐标系统,你定义的是投影坐标系统,你需要使用的是这个投影坐标系统,那么这一步投影转换你是不用做的。如果是数据是其他投影坐标系统,则也是使用本节提到的“投影”和“栅格投影”进行转换。
注意!!
本文凭借作者的操作经验给出,如果是精度要求高的数据,需要计算七参数,再去投影。上述内容是在精度要求不那么严格的一般情况下使用。
严谨的理论作者讲不出来,只是希望能帮助大家解决问题。
祝大家ArcMap玩得开心吼吼吼吼吼。
BY 橄榄 in SCNU
附录:3度带6度带知识补充
我国基本比例尺地形图除1:100万采用兰勃特投影(lambert)外,其他均采用高斯-克吕格投影。为减少投影变形,高斯-克吕格投影分为3度带或6度带投影。
按国家规定我国1:2.5-1:50万地形图均采用6度分带;1:1万及更大比例尺地形图采用3度分带,以保证必要的精度。
6度分带投影:即经差为6度,从零度子午线开始,自西向东每隔6度为一个投影带,全球共分60个带,用1,2,3,4,5,......表示。即东经0~6度为第一度带,其中央经线的经度为东经3度;东经6~12度为第二带,其中央经线的经度为东经9度。
3度分带投影:即经差为3度,从东经1.5度开始,自西向东每隔3度为一个投影带,全球共分120个带,用1,2,3,4,5,......表示。即东经1.5~4.5度为第一度带,其中央经线的经度为东经3度;东经4.5~7.5度为第二带,其中央经线的经度为东经6度;东经7.5~10.5度为第三带,其中央经线的经度为东经9度。(这样分带的方法使6度带的中央经线均为3度带的中央经线。)
山东省位于东经113度-东经120之间,跨第38、39、40共计3个带。其中:东经115.5度以西为第38度带,中央经线为东经114度;东经115.5~118.5度为39度带,中央经线为东经117度;东经118.5以东到山海关为40度带,中央经线为东经120度。
地形图上公里网横坐标前两位就是带号,例如1:5万地形图上横坐标为20345486,其中20即为带号,345486为横坐标值。
当地中央经线经度计算:
6度带中央经线经度的计算:当地中央经线经度=6°×当地带号-3°如:地形图上横坐标为20345532,其所处的6度带的中央经线经度为:6°×20-3°=117°
3度带中央经线经度的计算:当地中央经线经度=3°×当地带号(中国陆地范围内带号小于23的肯定是6度带,大于等于24的肯定是3度带。)
只知道经纬度时带号及中央经线的计算:
6度带带号=(经度+6°)/6取整 6度带中央经线=(6度带带号*6)-3
3度带带号=(经度+1.5°)/3取整 3度带中央经线=3度带带号*3