首页 理论教育 GIS坐标转换:实现地图绘制与交互功能

GIS坐标转换:实现地图绘制与交互功能

时间:2023-08-24 理论教育 版权反馈
【摘要】:前文介绍了GIS数据的来源,但还有一个未解决的问题,即在获得了矢量数据后,如何在屏幕中将这些数据的地理坐标转换为屏幕坐标,从而将屏幕端的各个要素绘制出来。只有实现了地图逻辑坐标到屏幕坐标的转换,当客户端执行图形交互绘制、地图查询、编辑等操作时,才能实现具体的功能。窗口坐标系与地理坐标系存在比例关系,这个比例关系可以理解为地理坐标系中单位长度与窗口坐标系中的长度的投影。它们之间存在以下转换关系。

GIS坐标转换:实现地图绘制与交互功能

前文介绍了GIS数据的来源,但还有一个未解决的问题,即在获得了矢量数据后,如何在屏幕中将这些数据的地理(Geometry)坐标转换为屏幕坐标,从而将屏幕端的各个要素绘制出来。只有实现了地图逻辑坐标到屏幕坐标的转换,当客户端执行图形交互绘制、地图查询、编辑等操作时,才能实现具体的功能。

实现屏幕坐标与地理坐标进行转换的前提是:

(1)知道屏幕的最左上角所对应的真实的地理坐标;

(2)知道此时的地图所在级别上每个瓦片所对应的实际地理长度

(3)知道瓦片的大小,即一个瓦片所拥有的屏幕像素

数据坐标到屏幕窗口坐标的映射可以看成现实世界中的景物在浏览器窗口的显示。窗口坐标系与地理坐标系存在比例关系,这个比例关系可以理解为地理坐标系中单位长度与窗口坐标系中的长度的投影。它们之间存在以下转换关系。

(1)屏幕坐标转换为地理坐标:(www.xing528.com)

geoXY.x=screenGeoBounds.left(屏幕最左侧的真实地理坐标)+screenX×sliceLevelLength(该等级上每个瓦片所对应的实际地理长度)/tileSize(每个瓦片所占的像素大小)

geoXY.y=screenGeoBounds.topt(屏幕最上方的真实地理坐标)-screenY×sliceLevelLength/tileSize

(2)地理坐标转换为屏幕坐标:

screenXY.x=(geoX-screenGeoBounds.left)/(sliceLevelLength/tileSize)

screenXY.y=(screenGeoBounds.top-geoY)/(sliceLevelLength/tileSize)

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈