GIS 中地理坐标和屏幕坐标的标准转换方法
2010-01-01 17:20
615 查看
在GIS中,当你拿到一个图层的地理坐标后,如果需要绘制到屏幕上,那么不可避免的需要在地理坐标和屏幕坐标之间进行转换,转换的方法相信每一个做GIS的都会有自己的实现方法,本文描述的是和ArcGIS、WMS、OpenLayers完全一致的坐标转换方法,当然这三个工具、标准、脚本也是采用的相同的方法;
因为采用完全一致的坐标转换方法,因此在我自己实现的WMS服务程序中提供的含透明通道的图,可以完全和ArcGIS提供的图在WEB客户端进行精确的匹配;
现在来介绍坐标转换的原理,其实该原理很简单,就是将视图的中心点和视野的中心点进行配对,然后给定一个地理坐标根据该坐标和视野中心点的偏移和比例尺来进行计算就可以获得屏幕坐标,反之亦然;
下面就是将窗口坐标转换为地理坐标的代码:
在上面的代码中,see_center_ 是屏幕坐标的窗口中心、geo_center_ 是地理坐标的视野中心,而 resolution_ 就是当前的比例尺;
然而最关键的是,当传入的视野和窗口的比例不一致时,如何进行处理,标准的做法就是分别计算水平和垂直的比例尺,然后取其中较大的那个值作为比例尺,也就是说比例尺的调整向着地理视野更小的方向进行调整,参考如下的代码:
在 WMS 协议中,如果请求的图片大小和视野的宽高比不成比例时也是要求将图片较小的一边增加,让地理视野和图片的比例一致,然后进行绘制,最后一步将生成的图片进行不等比放缩到原始请求的图片大小,这是为了保证客户端采用非矩形点阵的显示设备时能够正常显示地理图;
因为采用完全一致的坐标转换方法,因此在我自己实现的WMS服务程序中提供的含透明通道的图,可以完全和ArcGIS提供的图在WEB客户端进行精确的匹配;
现在来介绍坐标转换的原理,其实该原理很简单,就是将视图的中心点和视野的中心点进行配对,然后给定一个地理坐标根据该坐标和视野中心点的偏移和比例尺来进行计算就可以获得屏幕坐标,反之亦然;
下面就是将窗口坐标转换为地理坐标的代码:
ptWnd.x = see_center_.x + ( long )( ( ptGeo.x - geo_center_.x ) / resolution_ + 0.5 ); ptWnd.y = see_center_.y - ( long )( ( ptGeo.y - geo_center_.y ) / resolution_ + 0.5 );
在上面的代码中,see_center_ 是屏幕坐标的窗口中心、geo_center_ 是地理坐标的视野中心,而 resolution_ 就是当前的比例尺;
然而最关键的是,当传入的视野和窗口的比例不一致时,如何进行处理,标准的做法就是分别计算水平和垂直的比例尺,然后取其中较大的那个值作为比例尺,也就是说比例尺的调整向着地理视野更小的方向进行调整,参考如下的代码:
void Coord_Transform::Reset_Resolution( GeoRect & extent , DevRect & client ) { // calc geo_center_ Member geo_center_.x = ( extent.left + extent.right ) / 2.0 ; geo_center_.y = ( extent.top + extent.bottom ) / 2.0 ; // calc see_center_ Member see_center_.x = ( client.left + client.right ) / 2 ; see_center_.y = ( client.top + client.bottom ) / 2 ; // calc resolution_ Member double RoH = extent.Height( ) / client.Height( ); // Resolution of Height double RoW = extent.Width( ) / client.Width( ); // Resolution of Width this->resolution_ = RoH > RoW ? RoH : RoW ; this->geo_change_ = true ; }
在 WMS 协议中,如果请求的图片大小和视野的宽高比不成比例时也是要求将图片较小的一边增加,让地理视野和图片的比例一致,然后进行绘制,最后一步将生成的图片进行不等比放缩到原始请求的图片大小,这是为了保证客户端采用非矩形点阵的显示设备时能够正常显示地理图;
相关文章推荐
- GIS 中地理坐标和屏幕坐标的标准转换方法
- GIS 中地理坐标和屏幕坐标的标准转换方法
- (转) GIS 中地理坐标和屏幕坐标的标准转换方法
- GIS 中地理坐标和屏幕坐标的标准转换方法
- 有将屏幕坐标转换为相对View坐标的好方法吗?
- 地理(投影)坐标与屏幕坐标的转换公式
- 中国国测局地理坐标(GCJ-02)、世界标准地理坐标(WGS-84) 、百度地理坐标(BD-09)坐标系转换
- 地理(投影)坐标与屏幕坐标的转换
- 地理(投影)坐标与屏幕坐标的转换!
- 经纬度定义、经纬度格式、GDAL中地理坐标转换及地理坐标屏幕显示
- (十)WebGIS中地理坐标与屏幕坐标间的转换原理
- 地理坐标与屏幕坐标转换(VC++)
- 将三维地理坐标转换到二维屏幕坐标
- 百度地图和谷歌地图使用的地理位置坐标标准以及转换
- 度分 格式 转换 GPS 经纬度定义、经纬度格式、GDAL中地理坐标转换及地理坐标屏幕显示
- 地理(投影)坐标与屏幕坐标的转换!
- GIS地理信息系统中的空间地理坐标与屏幕坐标的对应关系
- GIS地理信息系统中的空间地理坐标与屏幕坐标的对应关系
- 地理坐标、经纬度坐标与屏幕坐标的转换!
- 经纬度定义、经纬度格式、GDAL中地理坐标转换及地理坐标屏幕显示