在GIS中,当你拿到一个图层的地理坐标后,如果需要绘制到屏幕上,那么不可避免的需要在地理坐标和屏幕坐标之间进行转换,转换的方法相信每一个做GIS的都会有自己的实现方法,本文描述的是和ArcGIS、WMS、OpenLayers完全一致的坐标转换方法,当然这三个工具、标准、脚本也是采用的相同的方法;
因为采用完全一致的坐标转换方法,因此在我自己实现的WMS服务程序中提供的含透明通道的图,可以完全和ArcGIS提供的图在WEB客户端进行精确的匹配;
现在来介绍坐标转换的原理,其实该原理很简单,就是将视图的中心点和视野的中心点进行配对,然后给定一个地理坐标根据该坐标和视野中心点的偏移和比例尺来进行计算就可以获得屏幕坐标,反之亦然;
下面就是将窗口坐标转换为地理坐标的代码:
1
ptGeo.x = geo_center_.x + ( ptWnd.x - see_center_.x ) * resolution_ ;
2
ptGeo.y = geo_center_.y - ( ptWnd.y - see_center_.y ) * resolution_ ;
下面是将地理坐标转化为窗口坐标的代码:
1
ptWnd.x = see_center_.x + ( long )( ( ptGeo.x - geo_center_.x ) / resolution_ + 0.5 );
2
ptWnd.y = see_center_.y - ( long )( ( ptGeo.y - geo_center_.y ) / resolution_ + 0.5 );
在上面的代码中,see_center_ 是屏幕坐标的窗口中心、geo_center_ 是地理坐标的视野中心,而 resolution_ 就是当前的比例尺;
然而最关键的是,当传入的视野和窗口的比例不一致时,如何进行处理,标准的做法就是分别计算水平和垂直的比例尺,然后取其中较大的那个值作为比例尺,也就是说比例尺的调整向着地理视野更小的方向进行调整,参考如下的代码:
view sourceprint?
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 协议中,如果请求的图片大小和视野的宽高比不成比例时也是要求将图片较小的一边增加,让地理视野和图片的比例一致,然后进行绘制,最后一步将生成的图片进行不等比放缩到原始请求的图片大小,这是为了保证客户端采用非矩形点阵的显示设备时能够正常显示地理图;
分享到:
相关推荐
在给定的代码中,我们可以看到三个方法,分别用于将地理坐标转换为屏幕坐标,地图坐标(一种特殊类型的地理坐标)转换为页面布局坐标,以及页面布局坐标转换回地图坐标。这些方法在ArcGIS ADF(ArcGIS Desktop ...
在ArcGIS JavaScript API中,地理坐标与屏幕坐标的相互转换是一项重要的功能,它允许开发者将地图上的地理位置(经纬度)转换为用户界面中的像素位置,反之亦然。这对于实现地图交互、绘制图形以及进行空间分析等...
GIS地理坐标系与投影坐标转换技术是GIS领域中的核心概念,涉及到地球表面点的位置表示以及地图制作中的坐标换算。地理坐标系统(Geographic Coordinate System, GCS)使用经纬度来定位地球表面的任何一点,它基于三...
在计算机图形学和软件开发中,...通过这样的学习和实践,你将能够更好地理解和掌握屏幕坐标与地理坐标之间的转换,这对于从事GIS(地理信息系统)开发、游戏开发或任何与地理位置相关的应用开发都是非常有价值的技能。
文章中提到了以AutoCAD和ArcGIS两个常用软件为例,重点介绍如何在转入GIS软件时进行正确的投影和地理坐标设置。AutoCAD是一款广泛用于工程制图的CAD软件,而ArcGIS则是GIS领域的主流软件之一。通过正确设置这两个...
总的来说,这个“地理坐标转换小工具集”是一个实用的工具包,包含了多种坐标系统的转换方法和工具,对于GIS专业人员或者需要处理地理数据的人来说,是一个非常有价值的资源。在实际应用中,正确理解和使用这些工具...
本人开发的GIS工具箱,集成了坐标拾取器、坐标系转换工具和随机坐标生成工具;已被300人的公司广泛使用。良心资源,童叟无欺! 打包出售,更实惠! 也可根据需要单独购买 坐标系转换工具 ...
在IT领域,尤其是在GIS(地理信息系统)中,坐标系转换是一项关键操作。本文将详细讲解“地理坐标系转换工具V.1.3”,它主要用于百度、高德以及84坐标系之间的互转。 首先,我们需要了解什么是坐标系。在地球上定位...
GIS(地理信息)+坐标转换+十进制度转度分秒(度分秒转十进制度)+公式 GIS工作者,经常出现坐标格式转换的问题,将十进制度转换为度分秒格式(十进制度->度分秒)例如:87.509614 44.075376 -----> 87°30′34....
GIS(Geographic Information System,地理信息系统)是一种集成了计算机硬件、软件和地理数据的系统,用于获取、存储、管理、分析和展示所有类型的空间或地理位置相关的数据。在GIS中,坐标系、投影和转换是至关...
地理坐标到本地坐标的坐标转换是地理信息系统(GIS)和导航系统中不可或缺的一部分。这个过程涉及到不同的坐标系,包括地球地心惯性坐标系(ECI)、WGS84地心地固坐标系(ECEF)、本地水平坐标系(LTP,通常表示为...
我是为了将EPSG:4326坐标转换成EPSG:900913坐标,找到的工具,然后添加了两者之间的转换方式! 使用方式: private static Projection proj = ProjectionFactory .getNamedPROJ4CoordinateSystem("epsg:900913");...
- **增强地理分析能力**:使地理信息系统(GIS)能够处理来自不同坐标系统的数据,从而提升分析效率和精确度。 - **满足法律和标准要求**:许多国家和地区规定了特定的坐标系统用于官方用途。 #### 四、坐标系转换...
例如,从屏幕坐标转换为地理坐标,我们可能需要使用`Map`对象的`ScreenToGeoPoint`方法,传入屏幕上的像素坐标,得到对应的地理坐标点。 相反,从地理坐标到屏幕坐标的转换则是将地理空间数据映射到屏幕上显示的...
### ARCGIS中坐标转换及地理坐标、投影坐标定义 #### 一、动态投影(ArcMap) 在ARCGIS中,动态投影是一个非常实用的功能,它允许用户在不同的坐标系统之间无缝切换,使得多源数据的集成变得更为简单。动态投影的...
在IT领域,尤其是在GIS(地理信息系统)中,坐标系转换是一项关键操作。本文将深入探讨“地理坐标系转换工具”,包括百度、高德和84坐标系之间的转换,并结合提供的压缩包文件“坐标转换工具”来阐述相关知识。 ...
在GIS(地理信息系统)领域,坐标转换是一项至关重要的任务,特别是在处理不同来源、不同标准的地理数据时。本文将详细讲解如何使用ARCGIS软件进行北京54坐标系到西安80坐标的转换。 首先,我们需要理解这两个坐标...
地理坐标系统是用于描述地球上任意位置的数学框架,常见的有笛卡尔坐标系统、极坐标系统和地理坐标系统。其中,地理坐标系统以经度和纬度来表示位置,而笛卡尔和极坐标系统则常用于平面地图的绘制。由于地球并非完美...
在IT领域,坐标转换是一项基础且重要的工作,特别是在地理信息系统(GIS)中。"经纬度坐标和xy坐标转换程序.rar" 提供了一个实用工具,帮助我们处理这两种坐标系统之间的转换。接下来,我们将深入探讨经纬度坐标系统...