把之前做的一些项目进行一些总结,发现网上关于瓦片时空数据的相关资料还真是不多,这里结合实际的项目,说一些关于瓦片时空数据库建设的一些想法和思路。
技术路线
数据库:Mongo DB;
语言:C# Restful Service;
支持切片格式:栅格Geoserver Map Cache,ArcGIS松散型切片,Arcgis Cache bundle 1.0, Arcgis Cache bundle 2.0。这里需要注意的是,Arcgis从10.3以后,其紧凑型切片数据的压缩格式发生的了变化。而对于切片格式的判别,可以从conf.xml中进行获取。
注意这里的V2就表示Arcgis 10.3之后的切片格式。
整体包括这么几个部分:
数据库部分
基于MongoDB 每个切片图层作为一个数据库进行存储,存储的内容包括
1) 图层的描述文件,即图层的基本信息,这里参照arcgis server图层的rest服务进行输出。具体的内容可以查找Arcgis的mapserver服务。
2) 切片数据,按照行列号+时间的方式,存储每个瓦片的数据流
3) 索引:主要存储图层的清单和Server的一些信息。
入库工具
根据不同切片数据的特点,读取并解析数据,按照时间+瓦片数据流的方式存储到Mongo中。这个部分最主要的就是针对不同类数据的解析。
数据发布工具
基于C# restful服务,根据客户端请求的数据格式,读取指定行列号的数据。这里需要注意的是,由于加入了时间轴,所以在瓦片数据读取时,若碰到客户端不带时间信息的,需要返回当前时间点,各分块最新的数据。当客户端带时间信息时,需要返回以当前时间点A之前的各分块最新的信息。
后面会针对各个部分做详细的介绍。