程序员必知:地图投影与ArcGIS坐标系转换

简介: 程序员必知:地图投影与ArcGIS坐标系转换

1. 通常GIS项目涉及到的坐标系

(1)面向局部区域的大比例尺二维平面:高斯投影(横轴墨卡托)

说明:在市一级的小范围区域的GIS系统,比如规划局、国土局、建设局的系统,大都使用高斯投影,以便与地方地形图测绘、工程报建一直采用的坐标系相一致。高斯投影的特点是投影分带,适合小范围局部,不适合应用于大省、全国等大范围应用,若是强制按某带投影,则远离中央经线的区域的角度、距离、面积全部变形严重。

(2)省级、国家级范围:兰伯特投影(圆锥投影)

(3)国际级、世界地图:经纬度等间隔直投

说明:“经纬度等间隔直投”的特点是相同的经纬度间隔在屏幕上的间距相等,没有复杂的坐标变换。但是只是在低纬度地区长度、角度、面积、形状变化比较小,越向高纬度,水平距离变长越大,很小的纬圈都变得和赤道一样长。同时要素自身会变形,长方形会变成上宽下窄的倒梯形。

(4)互联网电子地图:Web墨卡托(墨卡托,正轴圆柱投影)

经纬度直投与Web墨卡托区别

分析“Web墨卡托”的投影方式,它与“原生”墨卡托的区别主要是以圆球代替椭球(这不是本文的讨论重点),他的所有经纬线也是如同“经纬度直投”一样互相垂直,高纬度地区横向也是变得很长,但他与“经纬度直投”的关键区别在于,他的纵向距离也是随着纬度增大而变长。 横向变大,同时纵向也变大,而且变化比例接近,结果就是只把一个图形“原样放大”了,而形状却没有变化。

经纬度直投

1、WGS84采用的是经纬度球面坐标系,但是也能在ArcMap(平面坐标系)中显示,原因是ArcMap对数据进行了“经纬度直投”的显示方式,即把经度当X,纬度当Y直接在笛卡尔坐标系(右手坐标系)中显示,这样直接由曲面到平面会导致地物变形。

2、“经纬度等间隔直投”的特点是相同的经纬度间隔在屏幕上的间距相等,没有复杂的坐标变换。但是该种“投影”显示方式在低纬度地区长度、角度、面积、形状变化比较小,越向高纬度,水平距离变长越大,很小的纬圈都变得和赤道一样长。同时要素自身会变形,长方形会变成上宽下窄的倒梯形。

3、WGS84数据在平面上显示出来之后,也可以发布成地图服务并切片。此时切片的Tiling scheme origin通常是-400,-400(为什么?)。切片是在平面坐标系下进行,就是说WGS84数据采用“经纬度直投”到平面上的坐标原点是XOrigin=-400,YOrigin=-400。

4、关于经纬度直投还没找到相关出处,先猜测一下,后期验证:经过“投影”,赤道成为X轴(向右为正),因为赤道周长为40075016.685578488,所以X轴坐标变换范围是(-20037508.3427892,20037508.3427892);本初子午线成为Y轴(向上为正);投影得到的四个象限对应经纬度的四个象限(-180,-90)—(180,90);经纬度距离与平面距离之间的换算关系,赤道一周是360度,赤道周长是40075016.685578488,所以1度对应平面距离长度是111319.4907932722

2. 地图投影的概念

在数学中,投影(Project)的含义是指建立两个点集间一一对应的映射关系。同样,在地图学中,地图投影就是指建立地球表面上的点与投影平面上点之间的 一一对应关系。地图投影的基本问题就是利用一定的数学法则把地球表面上的经纬线网表示到平面上。凡是地理信息系统就必然要考虑到地图投影,地图投影的使用 保证了空间信息在地域上的联系和完整性,在各类地理信息系统的建立过程中,选择适当的地图投影系统是首先要考虑的问题。由//代码效果参考:http://www.zidongmutanji.com/zsjx/286929.html

于地球椭球体表面是曲面,而地图 通常是要绘制在平面图纸上,因此制图时首先要把曲面展为平面,然而球面是个不可展的曲面,即把它直接展为平面时,不可能不发生破裂或褶皱。若用这种具有破 裂或褶皱的平面绘制地图,显然是不实际的,所以必须采用特殊的方法将曲面展开,使其成为没有破裂或褶皱的平面。

2.1 地图投影的变形

变形的种类

图投影的方法很多,用不同的投影方法得到的经纬线网形式不同。用地图投影的方法将球面展为平面,虽然可以保持图形的完整和连续,但它们与球面上的经纬线网

形状并不完全相似。这表明投影之后,地图上的经纬线网发生了变形,因而根据地理坐标展绘在地图上的各种地面事物,也必然随之发生变形。这种变形使地面事物

的几何特性(长度、方向、面积)受到破坏。把地图上的经纬线网与地球仪上的经纬线网进行比较,可以发现变形表现在长度、面积和角度三个方面,分别用长度

比、面积比的变化显示投影中长度变形和面积变形。如果长度变形或面积变形为零,则没有长度变形或没有面积变形。角度变形即某一角度投影后角值与它在地球表

面上固有角值之差。

1)长度变形

即地图上的经纬线长度与地球仪上的经纬线长度特点并不完全相同,地图上的经纬线长度并非都是按照同一比例缩小的,这表明地图上具有长度变形。

在 地球仪上经纬线的长度具有下列特点:第一,纬线长度不等,其中赤道最长,纬度越高,纬线越短,极地的纬线长度为零;第二,在同一条纬线上,经差相同的纬线

弧长相等;第三,所有的经线长度都相等。长度变形的情况因投影而异。在同一投影上,长度变形不仅随地点而改变,在同一点上还因方向不同而不同。

2)面积变形

即由于地图上经纬线网格面积与地球仪经纬线网格面积的特点不同,在地图上经纬线网格面积不是按照同一比例缩小的,这表明地图上具有面积变形。

地球仪上经纬线网格的面积具有下列特点:第一,在同一纬度带内,经差相同的网络面积相等。第二,在同一经度带内,纬线越高,网络面积越小。然而地图上却并

非完全如此。如在图4-9-a上,同一纬度带内,纬差相等的网格面积相等,这些面积不是按//代码效果参考:http://www.zidongmutanji.com/bxxx/47796.html

照同一比例缩小的。纬度越高,面积比例越大。在图4-9-b上,

同一纬度带内,经差相同的网格面积不等,这表明面积比例随经度的变化而变化了。由于地图上经纬线网格面积与地球仪上经纬线网格面积的特点不同,在地图上经

纬线网格面积不是按照同一比例缩小的,这表明地图上具有面积变形。面积变形的情况因投影而异。在同一投影上,面积变形因地点的不同而不同。

3)角度变形

指地图上两条所夹的角度不等于球面上相应的角度,如在图4-9-b和图4-9-c上,只有中央经线和各纬线相交成直角,其余的经线和纬线均不呈直角相交,

而在地球仪上经线和纬线处处都呈直角相交,这表明地图上有了角度变形。角度变形的情况因投影而异。在同一投影图上,角度变形因地点而变。

地图投影的变形随地点的改变而改变,因此在一幅地图上,就很难笼统地说它有什么变形,变形有多大。

2.2 变形椭圆

形椭圆是显示变形的几何图形,从图4-9可以看到,实地上同样大小的经纬线在投影面上变成形状和大小都不相同的图形(比较图4-9中三个格网)。实际中每

种投影的变形各不相同,通过考察地球表面上一个微小的圆形(称为微分圆)在投影中的表象——变形椭圆的形状和大小,就可以反映出投影中变形的差异(图

4-10)。

3 不同投影的选择

世界地图的投影

世界地图的投影主要考虑要保证全球整体变形不大,根据不同的要求,需要具有等角或等积性质,主要包括:等差分纬线多圆锥投影、正切差分纬线多圆锥投影(1976年方案)、任意伪圆柱投影、正轴等角割圆柱投影。

半球地图的投影

东、西半球有横轴等面积方位投影、横轴等角方位投影;南、北半球有正轴等面积方位投影、正轴等角方位投影、正轴等距离方位投影。

各大洲地图投影

1)亚洲地图的投影:斜轴等面积方位投影、彭纳投影。

2)欧洲地图的投影:斜轴等面积方位投影、正轴等角圆锥投影。

3)北美洲地图的投影:斜轴等面积方位投影、彭纳投影。

4)南美洲地图的投影:斜轴等面积方位投影、桑逊投影。

5)澳洲地图的投影:斜轴等面积方位投影、正轴等角圆锥投影。

6)拉丁美洲地图的投影:斜轴等面积方位投影。

中国各种地图投影

1)中国全国地图投影:斜轴等面积方位投影、斜轴等角方位投影、彭纳投影、伪方位投影、正轴等面积割圆锥投影、正轴等角割圆锥投影。

2)中国分省(区)地图的投影:正轴等角割圆锥投影、正轴等面积割圆锥投影、正轴等角圆柱投影、高斯-克吕格投影(宽带)。

3)中国大比例尺地图的投影:多面体投影(北洋军阀时期)、等角割圆锥投影(兰勃特投影)(解放前)、高斯-克吕格投影(解放以后)。

4 典型的投影介绍

4.1 高斯——克吕格投影

由于这个投影是由德国数学家、物理学家、天文学家高斯于19世纪20年代拟定,后经德国大地测量学家克吕格于1912年对投影公式加以补充,故称为高斯——克吕格投影。

高 斯——克吕格投影在英美国家称为横轴墨卡托投影。美国编制世界各地军用地图和地球资源卫星象片所采用的全球横轴墨卡托投影(UTM)是横轴墨卡托投影的一 种变型。高斯克吕格投影的中央经线长度比等于1,UTM投影规定中央经线长度比为0.9996。在6度带内最大长度变形不超过0.04%。

高斯克 吕格投影的中央经线和赤道为互相垂直的直线,其他经线均为凹向并对称于中央经线的曲线,其他纬线均为以赤道为对称轴的向两极弯曲的曲线,经纬线成直角相

交。在这个投影上,角度没有变形。中央经线长度比等于1,没有长度变形,其余经线长度比均大于1,长度变形为正,距中央经线愈远变形愈大,最大变形在边缘 经线与赤道的交点上;面积变形也是距中央经线愈远,变形愈大。为了保证地图的精度,采用分带投影方法,即将投影范围的东西界加以限制,使其变形不超过一定

的限度,这样把许多带结合起来,可成为整个区域的投影(图4-12)。高斯——克吕格投影的变形特征是:在同一条经线上,长度变形随纬度的降低而增大,在

赤道处为最大;在同一条纬线上,长度变形随经差的增加而增大,且增大速度较快。在6度带范围内,长度最大变形不超过0.14%。

我国规定1:1万、1:2.5万、1:5万、1:10万、1:25万、1:50万比例尺地形图,均采用高斯克吕格投影。1:2.5至1:50万比例尺地形图采用经差6度分带,1:1万比例尺地形图采用经差3度分带。

6度带是从0度子午线起,自西向东每隔经差6为一投影带,全球分为60带,各带的带号用自然序数1,2,3,…60表示。即以东经0-6为第1带,其中央经线为3E,东经6-12为第2带,其中央经线为9E,其余类推(图4-13)。

3度带,是从东经1度30分的经线开始,每隔3度为一带,全球划分为120个投影带。图4-13表示出6度带与3度带的中央经线与带号的关系。

在高斯克吕格投影上,规定以中央经线为X轴,赤道为Y轴,两轴的交点为坐标原点。

X坐标值在赤道以北为正,以南为负;Y坐标值在中央经线以东为正,以西为负。我国在北半球,X坐标皆为正值。Y坐标在中央经线以西为负值,运用起来很不方便。为了避免Y坐标出现负值,将各带的坐标纵轴西移500公里,即将所有Y值都加500公里。

由于采用了分带方法,各带的投影完全相同,某一坐标值(x,y),在每一投影带中均有一个,在全球则有60个同样的坐标值,不能确切表示该点的位置。因此,在Y值前,需冠以带号,这样的坐标称为通用坐标。

高斯克吕格投影各带是按相同经差划分的,只要计算出一带各点的坐标,其余各带都是适用的。这个投影的坐标值由国家测绘部门根据地形图比例尺系列,事先计算制成坐标表,供作业单位使用。

5 ArcGIS 几何对象和空间坐标系的转换

空间数据都有一个坐标系统(即地理坐标系统或投影坐标系统),它定义了空间数据在地球上的位置。一幅地图上显示的空间数据地理坐标系是一致的,否则会造成数据无法正确拼合。

地理坐标系统也称为真实世界的坐标系,是确定地物在地球上位置的坐标系,以经纬度作为地图的存储单位。

投影坐标系统是将三纬地理坐标系统上的经纬网投影到二纬平面地图上使用的坐标系统,因此地理信息系统必须要考虑地图投影,地图投影的使用保证了空间信息在地域上的联系和完整性,在各类地理信息系统的建设过程中,都要考虑选择何种地里投影系统。

Arc Engine提供了3种组件:ProjectedCoordinateSystem、GeographicCoordinateSystem和SpatialReferenceEnvironmentClass,这些组件可以用于自定义坐标系统。

//改变一个图层的空间参考

ESRI.ArcGIS.Carto.IFeatureLayer player;

player = axMapControl1.Map.get_Layer(0) as ESRI.ArcGIS.Carto.IFeatureLayer;

ESRI.ArcGIS.Geodatabase.IFeatureClass pFeatureClass;

pFeatureClass = player.FeatureClass;

ESRI.ArcGIS.Geodatabase.IDataset pGeoDataset;

pGeoDataset = pFeatureClass as ESRI.ArcGIS.Geodatabase.IDataset;

ESRI.ArcGIS.Geodatabase.IGeoDatasetSchemaEdit pGeoDatasetEdit;

pGeoDatasetEdit = pGeoDataset as ESRI.ArcGIS.Geodatabase.IGeoDatasetSchemaEdit;

if (pGeoDatasetEdit.CanAlterSpatialReference == true)

{

ESRI.ArcGIS.Geometry.ISpatialReferenceFactory2 pSpatRefFact;

pSpatRefFact = new ESRI.ArcGIS.Geometry.SpatialReferenceEnvironmentClass();

ESRI.ArcGIS.Geometry.IGeographicCoordinateSystem pGeoSys;

pGeoSys = pSpatRefFact.CreateGeographicCoordinateSystem(4214);

pGeoDatasetEdit.AlterSpatialReference(pGeoSys);

}

pActiveView.Refresh();

//得到一个图层的空间参考

ESRI.ArcGIS.Carto.IFeatureLayer player;

player = axMapControl1.Map.get_Layer(0) as ESRI.ArcGIS.Carto.IFeatureLayer;

ESRI.ArcGIS.Geodatabase.IGeoDataset pGeoDataset;

pGeoDataset = player as ESRI.ArcGIS.Geodatabase.IGeoDataset;

ESRI.ArcGIS.Geometry.ISpatialReference pSpat;

pSpat =pGeoDataset.SpatialReference;

MessageBox.Show(pSpat.Name)

//设置一个地图的空间参考,使用一个空间参考对话框

IProjectedCoordinateSystem pSpaticalReference;

ESRI.ArcGIS.CatalogUI.ISpatialReferenceDialog pDialog;

pDialog = new ESRI.ArcGIS.CatalogUI.SpatialReferenceDialogClass();

pSpaticalReference = pDialog.DoModalCreate(true, false, false, 0) as IProjectedCoordinateSystem;

pMap.SpatialReference = pSpaticalReference;

pActiveView.Refresh();

Arc Engine的空间参考对象模型中有3个组件类:GeographicCoordinateSy(地理坐标系统)、ProjectedCoordinateSystem(投影坐标系统)和UnknownCoordinateSystem(未知坐标系统)。这3个组件类都都实现了ISpatialReference接口,该接口提供了操作方法和属性来设置数据集控件参考属性,如空间域和坐标精度等。如Changed是这个接口中最重要的一个方法,用于检查一个坐标系统中的参数是否发生了变化;GetDomain和SetDomain方法分别用于获取和设置一个坐标系统的域范围。

相关文章
|
6月前
|
存储 程序员 定位技术
程序员必知:地图投影与ArcGIS坐标系转换
程序员必知:地图投影与ArcGIS坐标系转换
39 0
|
7月前
|
定位技术 Python
ArcGIS中ArcMap通过模型构建器ModelBuilder导出地理与投影坐标系转换Python代码的方法
ArcGIS中ArcMap通过模型构建器ModelBuilder导出地理与投影坐标系转换Python代码的方法
134 2
|
定位技术
ArcGIS中利用ArcMap将地理坐标系转换成投影坐标系(从WKID=4326到WKID=102100)
原文:ArcGIS中利用ArcMap将地理坐标系转换成投影坐标系(从WKID=4326到WKID=102100)            对于非地理专业的开发人员,对与这些生涩的概念,我们不一定都要了解,但是我们要理解,凡是以经纬度为单位的都是地理坐标系,因为它归根结底是一个椭球体,只不过各个国家为了反映该国家所在区域地球的真实形状,而采用不同的数学模型对本不是椭球体的地球进行椭球体化。
3027 0
|
定位技术
ArcGIS中利用ArcMap将地理坐标系转换成投影坐标系(从WKID=4326到WKID=102100)
           对于非地理专业的开发人员,对与这些生涩的概念,我们不一定都要了解,但是我们要理解,凡是以经纬度为单位的都是地理坐标系,因为它归根结底是一个椭球体,只不过各个国家为了反映该国家所在区域地球的真实形状,而采用不同的数学模型对本不是椭球体的地球进行椭球体化。
1031 0
|
人工智能 数据可视化 API
ArcGIS API for Python
ArcGIS API for Python
81 0
|
JavaScript 前端开发 应用服务中间件
Arcgis api for javascript 详细部署
Arcgis api for javascript 详细部署
|
人工智能 数据可视化 数据管理
ArcGIS API for Python
ArcGIS API for Python
121 0
|
数据可视化 数据管理 API
​​​​​​​ARCGIS API for Python进行城市区域提取
​​​​​​​ARCGIS API for Python进行城市区域提取
​​​​​​​ARCGIS API for Python进行城市区域提取
arcgis api 3.X 修改自带弹窗样式 2022年6月12日
自带的弹窗介绍: arcgis api 3.X 修改自带弹窗样式插图 /*修改原有弹窗的css样式*/ /* 弹窗整体 */ .esriPopup { font-size: 16px; box-shadow: 10px 10px 5px #888888; } .esriPopup .sizer { position: relative; width: 400px; /* 弹窗宽度 */ z-index: 1; } /* 标题部分 */ .esriPopup .titlePane { background-color: rgba(7
|
JavaScript 前端开发 定位技术
ArcGIS API For JavaScript官方文档(六)之设置范围
ArcGIS API For JavaScript官方文档(六)之设置范围