基于栅格图片的WEBGIS实现概述 (转)

来源:互联网 发布:windows 日志分析 编辑:程序博客网 时间:2024/04/30 08:41
Go2map分析
在涉及到城市尺度的面向公众电子地图应用上,很多产品都使用栅格图片,除了Go2map以外,51ditu、Mapabc等也是采用的这种技术路线。相比使用矢量数据,这种处理方法对于面向大众的浏览器应用来说非常适合,因为不需要在浏览器端为了GIS矢量数据进行特别的部署;而在服务器端,由于地图更新总不是很快的,因此预先生成图片也可以大大减少服务器的压力。
Go2map在这方面跟其他产品没有本质的区别,但是在具体实现上有些细节的差异,最显著的一个方面就是无刷新。每次用户发出对地图进行放大缩小的请求时,当前的地图图片并不消失,而是在原有分辨率上进行缩放,当后台将新的图片下载以后,再用新的地图进行替换。这让用户有个比较好的体验,这可能也是跟Google Earth学习的结果。
在被sohu收购以后,Go2map在搜索上又有了一些改变。过去以城市为单位进行的地图维护不利于搜索,因此Go2map将全中国的地图进行整合,形成新的地图。另外,Go2map的产品可能是基于MapXtreme,页面是通过DHTML的方法进行动态生成的
2       Google Earth/Map分析
Go2map和当前很多地图网站采用的预生成图片、图片分块和有限级缩放等方法,可能都是来源于Google Earth的影响。而且Google Earth采用的底图也并不是由若干矢量地图叠加生成的栅格图,而是纠正的遥感卫片,这给用户很大的视觉冲击,曾经引起大众极大兴趣,虽然它需要用户首先安装一个客户端。
而更像地图的Google Map产品跟Go2map等产品则更加相像,具体的做法大体是这样,把一定范围的栅格图按一定大小切块后,每级图层按一定比例缩放,这样可以生成十几个不同比例尺的栅格图了。栅格数据不存放数据库,还可以通过Web服务器进行缓冲。
对地图的缩放、定位就是找到一个当前地图的中心地图格子,然后显示周围的格子。而在漫游地图时,可视区域周围的格子已经通过异步通讯被后台下载到本地,因此在一定范围内的浏览基本无延迟。
3         大概技术方案
对于基于栅格图片的GIS来说,需要实现的步骤基本也是这样。需要实现的功能大体上可以分为GIS相关的和非GIS相关的。GIS相关的功能主要包括查询、标注、空间分析等,这些需要在服务器端对矢量数据进行操作才可以进行;非GIS相关的主要就是地图的显示,用上述的图片分块异步显示的方法实现。GIS相关和非GIS相关的功能相对比较独立,但两者可以通过坐标换算来进行沟通。
首先是非GIS相关的图片显示,在数据层大概可以这样实现:在对整个图片进行分割以后,根据行、列、分辨率等属性值在数据库中建立索引。用户在浏览器端发送请求,控制器根据请求查询数据库,得到相应图片文件的索引,再根据索引获得图片后生成结果页面返回给用户。整个过程不需要任何GIS中间件的参与。
和GIS相关的,一些是查询功能,一些是分析功能,还有可能是一些编辑功能。不管是和几何特征有关的功能(空间分析等)还是仅仅基于属性的功能(查询、编辑),都可以在服务器端实现,前者需要用到某些数据库的空间扩展,甚至可以根据具体情况需要部署GIS功能组件;后者则直接对数据库进行sql操作。
这样的方案的优点是服务器负担小、用户响应快,缺点就是可能开发的工作量会比较大一点。
4         可选开发平台
从上面的大概技术方案来看,开发平台的搭建主要考虑的是数据库的GIS功能扩展和Web服务器的性能。
数据库的GIS功能扩展可选的选项不多:Oracle+Spatail、PostgreSQL+PostGIS、MySQL、SQL Server+MsSQLSpatial。功能上面最强大的可能是Oracle,它甚至支持数据库的最短路径分析等复杂功能;PostGIS在开源GIS界是口碑最好的,PostgreSQL数据库稳健性也好;MySQL的空间信息扩展模块推出还不久,并不很成熟;Sql Server的空间扩展模块是第三方社区维护的开源项目,整合性可能不很好,而且这个项目基于.Net2.0,对操作系统有限制。
如果项目有基于Java的需求,并且尽量削减成本,那么最好的方案可能就是Linux+Tomcat+PostgreSQL/PostGIS。另外对于性能要求多高,是否需要做多服务器负载均衡,我不太了解,还需要根据实际情况进行研究。
 
原创粉丝点击