快速导航(持续更新中…)
从零开始学GeoServer源码一(开篇)
从零开始学GeoServer源码二(搭建开发环境)
从零开始学GeoServer源码三(断点应该打在哪?)
从零开始学GeoServer源码四(自定义插件或拓展数据源)
从零开始学GeoServer源码五(切片原理及自定义插件支持wms、wmts、tms)
从零开始学GeoServer源码六(如何打包发布?)
从零开始学GeoServer源码七(如何注册服务并发布3dtiles和cesium的地形terrain?)
从零开始学GeoServer源码八(内存溢出?Out of Memory Error ?)
从零开始学GeoServer源码九(如何集成Cesium以实现预览3dtiles和terrain服务?)
从零开始学GeoServer源码十(如何修改菜单项以整合我们的功能?)
从零开始学GeoServer源码十一(如何解决No Multipart-config for Servlet错误)
从零开始学GeoServer源码十二(GeoServer中的切片规则)
从零开始学GeoServer源码十三(GeoServer生成的矢量切片缺失问题)
从零开始学GeoServer源码十四(GeoServer Cloud微服务版本初体验)
1.前言:
最近研究了一下GeoServer
源码,这也是我从C#
转到 Java
后接触的第一个开源项目,也是我从新浪博客迁移到csdn
博客发的第一篇博客。因为我们最近有个需求,需要把MongoDB
中的切片发布出来。其实,原生GeoServer
是支持发布MongoDB
中的矢量文件的,但我们在MongoDB
中存的影像切片,GeoServer
并不支持,因此,就需要改GeoServer
的源码,也就有了这一个系列。在这一个系列中,我将一步一步讲明白我是如何将MongoDB
的影像切片发布出来的。
2.思路
其实这个思路我和同事沟通的时候偶然发现的,当时同事说他用GeoServer
发布过MBTiles
文件,其实MBTiles
本质上就是SQLLite
数据库,里面存的就是切片。这不就是我要效果吗?真是无心插柳柳成荫啊。我就跟他要了一个MBTiles
的文件,并且在GeoServer
里装上MBTiles
的插件,结果发现在GeoServer
里,MBTiles
既可以做为矢量数据源,也可以作为栅格数据源。那我就改改MBTiles
插件的源码,让程序去读MongoDB
数据库不就行了嘛。
3.最终效果
3.1 WMS访问
wms是动态渲染的
3.2 WMTS访问
wmts
是ogc
的标准切片协议
3.3 TMS访问
tms
,准确的来说是google tms
,原点在左上角,并不是那个原点在左下角的osgeo tms
3.4 原始数据
4.总结
毕竟这是我第一个Java
开源项目,收获还是蛮多的,比如对分辨率(resolution
)的理解、对切片原理的理解,对 osgeo tms
和 google tms
的理解,对 wms
和 wmts
的理解都加深了,所以多看源码真的是很有必要的。
更多精彩内容见公众号AIGIS