diliyhr是什么意思思

中國地理學會【图文】地理空间数据处理_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
地理空间数据处理
上传于||暂无简介
大小:707.00KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢地理坐标系统的转换,x是8位数,y是7位数_百度知道dilidilidada喜欢的音乐 - 网易云音乐
dilidilidada喜欢的音乐
播放:152次
网易云音乐多端下载
同步歌单,随时畅听320k好音乐
网易公司版权所有(C)
杭州乐读科技有限公司运营:地理坐标、经纬度坐标与屏幕坐标的转换
1.经纬网点与地图坐标点:
投影与反投影运算:
&好多人一上来就搬出地图学、地图投影学或者测绘学中的投影公式(如高斯投影 或
墨卡托投影),又是基准坐标又是角度的搞的人头都大了。&
& 实际上要想实现这个功能非常easy。 ARC
Engine中的IPoint就可以进行投影和反投影运算了。
投影过程(C#):&
投影的坐标系统,这里的54013是世界投影
&,世界投影所有经纬度都可以转换为平面坐标,但是由于投影面积大失真也会比较大(相当于把整个地球劈成一片片的,然后拉伸最后贴到平面上,失真当然大了)。当然也可以选择精度更高的平面如:esriSRProjCS_Beijing1954GK_23N
& & &对应数值21483
&仅仅把北京附近的地球平面拉伸铺在平面上,由于投影面积变小,所以投影经度提高。但是由于面积变小,所以有些经度纬度不能转换,比如所美国的精度纬度用北京投影就投不了。&&&
//标准大地经纬度,可以将X-Y逆投影为经度和纬度&
pfactory.CreateProjectedCoordinateSystem(54013);&
earthref =
pfactory.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_NAD1983);
将经纬度点转换为平面坐标。&&
& & & private
IPoint GetProject(double x, double y)&
& & IPoint pt = new PointClass();
& & pt.PutCoords(x,
& & IGeometry geo =
(IGeometry)&
& & geo.SpatialReference =
& & geo.Project(flatref);
& & return
将平面坐标转换为经纬度。&
&private IPoint GetGeo(double x, double
& & IPoint pt = new
PointClass();
& & pt.PutCoords(x,
& & IGeometry geo =
(IGeometry)&
& & geo.SpatialReference =
geo.Project(earthref);&
& & double xx =
& & return
实际上IPoint的投影和任何地图都没什么大关系,完全可以不用地图,直接调用IPoint进行投影的转换&
2.地图点与屏幕坐标点:
IDisplayTransformation接口提供有方法,实现了地图坐标与屏幕坐标的互相转换。
&IPoint pPoint1 = new
PointClass();
& & IPoint pPoint2 = new
PointClass();&
& & pPoint1 =
pActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(p1.X,p1.Y);
& pPoint2 =
pActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(p2.X,p2.Y);
//这里的P1、P2是屏幕坐标点,用System.Drawing.Point 创建的。
&&&&详细用法见放大镜功能的实现。
下面是网上找的一段说明:
地理坐标定义规则:X轴(代表经度)向右递增,Y轴(纬度)向上递增,就好比小学学过的平面坐标(貌似又忘了,要重读小学了)吧?向左,向下的规则,这个不用我再阐述了吧&
屏幕坐标定义规则:X轴向右递增,Y轴向下递增..
可以看出,地理坐标和屏幕坐标的区别仅仅只是在于Y轴递增方向是相反的…(这就是不同).
好了,现在我们开始转换他们吧.&
这里强调一点的就是为了保证精度,地理坐标的度*3600换算成秒,所有的取值用double来计算,最后的结果再转换成int
&&1.已知道屏幕的高(y)和宽(h),地理坐标区域的范围(maxLon,minLon,maxLat,minLat)..这里我们知道了这些已知的参数…
&&2.我们可以算出每像素所代表的经度和纬度(有人称这个为比例因子):
公式:scaleX =
h/((maxLon-minLon)*3600)&&———-X轴上每像素代表的经度秒数;
公式:scaleY =
y/((maxLat-minLat)*3600)&&———&Y轴上每像素代表的纬度秒数;
&&&&&&这两个比例因子就是两个坐标系之间的关系..&
3.很简单的一步了,那就是算出该地理坐标区域中的任何一点(lon,lat)在屏幕上的坐标了,怎么算?下面来讲:
公式:screenX =
lon*3600/scaleX;&&———屏幕坐标X轴坐标
公式:screenY = lat*3600/scaleY;&———-屏幕坐标Y轴坐标,&&&&&&&
怎么样?很简单吧?这里我们就算出地理坐标上任何一点转到屏幕上的坐标是多少了……
还有最后一步,那就是我们要把该地理区域占满占个屏幕该怎么办呢?
4. 接着我们需要该地理区域占满占个屏幕该怎么办呢
公式:minX =
minLon*3600/scaleX;&&&
区域左边置最左端
公式:minY =
minLat*3600/scaleY;&&&&
区域上面置最上端&
5. 当地地理范围区域占满整个屏幕时,我们需要用到第三步计算出来的 screenX和screenY两个参数
,该区域中的任何一点的公式如下:&&
screenX&&&minX =
(lon&&&minLon)*3600/scaleX;&&&&
&&&&&&&由于纬度的方向和屏幕Y轴是相反的,
公式:screenMaxLat
= (maxLat&&&minLat)*3600/scaleY;
&&&&&&&公式:screenLat = (lat&&&minLat)*3600/scaleY;
&&&&&&&公式:Y =
screenMaxLat&&&screenLat =
(maxLat&&&lat)*3600/scaleY;&&&&&至于为什么是这个公式,我想大家仔细想想就明白了..&
经纬度转屏幕坐标的最终公式如下:
(lon&&&minLon)*3600/scaleX;&
&&&&&&&&公式: Y
=& (maxLat&&&lat)*3600/scaleY;
&&&&&&&&接着我们由上面的公式可以推出屏幕坐标转经纬度坐标公式如下:
 公式:lon = X * scaleX/3600 + minL
&&&&&&&&公式:lat =
maxLat&&&y* scaleY/3600;
文章评论 以下网友留言只代表其个人观点,不代表本网站的观点和立场。

我要回帖

 

随机推荐