地理坐标怎么写(地理坐标的三种表示方法)


软件环境 SuperMapObjects .NET实现内容 在将经纬度的数据动态地添加到地图窗口中时 , 由于地图坐标系可能存在多种情况 , 针对坐标系的不同 , 如何实现动态数据能够与地图叠加显示呢?本文将介绍如何根据地图不同的坐标系 , 将经纬度的数据动态的添加在地图当中正确显示 。背景介绍??平面无投影:指物体在地图上没有对应的地理位置 , 一般用来作为与地理位置无关的数据的坐标参考 , 平面坐标系是一个二维坐标系 , 原点坐标为(0 , 0) , 数据中每一个点的坐标是由其距水平和垂直的X 轴和 Y轴的距离确定 。具体坐标显示如图一 , 图一中是将经纬度坐标的数据显示在平面坐标系上的坐标显示 , 其经纬度的值被作为对象的X,Y坐标值显示:
??地理坐标系:表示物体的确切地理位置 , 通过经纬度来描述其空间位置信息 , 通常的表现形式为经度值在±180° , 纬度值在±90° 。如图二所示:??投影坐标系:地球椭球体表面是曲面 , 而地图通常要绘制在平面图纸上 , 因此制图时首先要把曲面展为平面 。然而球面是个不可展的曲面 , 换句话说 , 就是把它直接展为平面时 , 不可能不发生破裂或褶皱 。若用这种具有破裂或褶皱的平面绘制地图 , 显然是不实用的 , 所以必须采用特殊的方法将曲面展开 , 使其成为没有破裂或褶皱的平面 , 于是就出现了地图投影 。常用的地图投影有高斯克吕格投影 , 阿尔伯斯投影 , 兰伯特投影 , 墨卡托投影等 , 坐标位数通常比较长 , 一般的坐标显示是:X为6 位 , Y为7 位 。如图三所示:
具体实现 由于有三种不同的坐标系统 , 因此 , 在将经纬度的地物添加到地图的时候 , 会分为平面坐标系 , 地理坐标系 , 投影坐标系三种情况 。【情况一】 平面无投影:当地图是平面坐标系 , 添加的数据是地理坐标系时 , 会出现两种情况:一、添加的数据在地图范围内 , 可以正常的添加显示在地图中 , 其经纬度的值会作为点X,Y的坐标添加到地图当中 , 如图四所示:
【地理坐标怎么写(地理坐标的三种表示方法)】
二、添加的数据不在地图范围内 , 无法正确的添加在地图当中 。这种情况下 , 地图的坐标系有两种可能 , 一:数据坐标没有意义 , 是错误值;二:地图坐标系非常大 , 且没有设置在正确坐标系 。针对第一种情况 , 建议通过数据配准 , 更正错误数据 , 将其配准在正确的地理位置上;第二种情况 , 建议与数据提供方联系 , 设置正确坐标系后 , 动态添加经纬度点对象的方法类似【情况三】 。
【情况二】地理坐标系当地图为地理坐标系 , 添加的数据也是地理坐标系时 , 如果数据在同一地理范围内 , 可以添加到地图窗口进行显示 。如图五所示:
【情况三】投影坐标系当添加的地图坐标系为投影坐标系 , 数据的坐标系为地理坐标系时 , 数据无法正常显示 , 如图六 。地理坐标系的显示方式和投影坐标系的显示方式是不同的 , 地理坐标系的显示方式是球面的显示方式 , 而投影坐标系的显示方式是平面的 。因此 , 两个坐标系的对象不能同时显示在一个窗口中 。那么如何能将一个地理坐标系的对象显示在投影坐标的地图中呢?就需要将添加的对象进行投影转换 , 而后才可以将对象添加到正确的地理位置上 。进行投影转换的方法为CoordSysTranslator类的三个静态方法Covert() , Forward() , Inverse() , 三种方法分别是针对于不同的对象和坐标系而言的 , 本例中待转换的对象为二维点 , 转换的类型为将地理坐标系的数据转换到投影坐标系中 , 因此使用的方法是CoordSysTranslator.Forward() 。假设以获取待添加的二维点集 , 为point2ds , 并将具有目标投影的数据集添加到地图窗口中 , 为dataset 。投影转换的主要代码为:
Datasetdataset = mapControl.Map.Layers[0].Dataset; PrjCoordSys prjCoordSys =dataset. PrjCoordSys; bool result =CoordSysTranslator.Forward(point2ds, prjCoordSys);

推荐阅读