原先地图瓦片服务器采用的是arcgisserver发布的地图服务并进行切片,但ags发布的地图服务很占内存,发布太多的话服务器压力很大。再一个就是ags价太高了。
学习Nodejs之后,发现这是一个可以开发高并发服务器,类似游戏服务器、视频聊天服务器等。因此想如果用它来开发一个地图服务器也是一个不错的想法。
我的设计思路是这样的:
1)mongodb采用集合-文档来存储地图瓦片文件。在mongodb1.8版本以后文档最大可存储16MB,由于地图瓦片不可能太大,因此采用文档来存储而不是大文件存储方式。
集合以底图或专题图为单位来存储,意思就是每个集合代表一个地图瓦片服务,存储这个地图服务所有级别的瓦片数据,当然了,要有一个可以用来索引的字段,我采用的是X-Y-Z的形式来用为文档的key。
2)mongodb提供有nodejs的驱动程序,nodejs可以访问mongodb数据库。
3)nodejs提供一个getimage的路由供外部来访问地图瓦片数据,参数有LAYER,X,Y,Z
LAYER: 图层名称,即mongodb集合名称。
X,Y,Z: 采用的是google地图的瓦片编码规则。