想在GeoServer中直接发布松散型的瓦片是不支持的,需要使用GeoServer的mbtiles扩展。先将瓦片存储到SQLite数据库中,再将数据库发布,中间进行了一个转折。

实现思路:
1.将已有的天地图瓦片存入SQLite数据库并取名后缀为mbtiles。
2.将mbtiles文件使用Geoserver REST API发布到GeoServer。

实验环境:
VS2010
GeoServer

所需配置:
GeoServer wps,mbtiles扩展(先装wps,才能再装上mbtiles否则会出错)
Python2.7
gsconfig-master

环境安装:
默认已安装GeoServer和Python2.7
首先是GeoServer的wps和mbtiles插件,具体可参考以下博客:
GeoServer安装mbtiles扩展

再就是GeoServer REST的安装,这里使用的是Python版本,下载地址可去github上找,这里贴出地址:
gsconfig-master下载地址
里面有安装方式,因为本人没接触过Python所以安装的时候确实很费脑筋。。。
这里我先下载,然后打开。

在这里shift+鼠标右键,“在此处打开命令窗口”。
在cmd中输入python setup.py develop,按下回车等待安装。安装完成后会在你的Python安装文件夹下找到一个名为geoserver的文件夹。

打开geoserver文件夹下的store.py在大概152行处:
self.dirty.update(name = name, enabled = True, type = “Tiff”,
改为self.dirty.update(name = name, enabled = True, type = “MBTiles”
这里的type要更改为符合你发布的类型,如果是发布tif文件则不用更改。

打开geoserver文件夹下的catalog.py在大概329行处,增加以下代码:

     # startdef create_coveragestore3(self, name, data_url, workspace=None, overwrite=False):if not overwrite:try:store = self.get_store(name, workspace)msg = "There is already a store named " + nameif workspace:msg += " in " + str(workspace)raise ConflictingDataError(msg)except FailedRequestError:# we don't really expect that every layer name will be takenpassif workspace is None:workspace = self.get_default_workspace()headers = {"Content-type": "text/plain","Accept": "application/xml"}ext = "mbtiles"cs_url = url(self.service_url,["workspaces", workspace.name, "coveragestores", name, "external." + ext],{"configure": "first", "coverageName": name})headers, response = self.http.request(cs_url, "PUT", data_url, headers)self._cache.clear()if headers.status != 201:raise UploadError(response)# end

参考博客:http://blog.csdn.net/theonegis/article/details/45950785

C++中需要进行相关的配置,主要是C++操作SQLite数据库,在另一篇文章中已经讲过了。有需要的请移步:C++操作SQLite以及配置
到这里配置完成。

直接修改运行以下Python代码即可实现发布:

from geoserver.catalog import Cataloggeourl = "http://localhost:8080/geoserver/rest"  # the url of geoserver
geocat = Catalog(geourl)  # create a Catalog objectstore_name = "mbtilestest" #在geoserver中显示发布的名称
data_url = "file:D:/test.mbtiles"  #mbtiles文件所在的位置
geostore = geocat.create_coveragestore3(store_name, data_url) #实现发布

如果想在C++中实现发布,我的思路如下:
1.读取指定瓦片路径下的所有瓦片名称。
2.将这些瓦片,及瓦片属性存储到SQLite数据库中。
3.调用Python 实现发布。

注:本人在这里没有找到很好的C++调用Python,因为涉及到参数的传递,没有找到想要的方法,所以采取了一种投机取巧的方式。
将上面发布的代码以文件流的形式输出到文本中,然后调用
string run=”python “+filename;
system(run.c_str());
直接系统执行python文件,完成发布。

天地图离线瓦片的打包与发布(GeoServer)相关推荐

  1. geoserver发布离线瓦片卫星图TIF格式

    geoserver发布离线瓦片卫星图TIF格式 看了诸多关于geoserver发布离线瓦片的博客,发现别人的瓦片下载方式和工具跟我的不太相同,而且对与新人来说有点难以看明白,鄙人就写这样的一篇博客,给 ...

  2. Openlayers中加载Geoserver切割的EPSG:900913离线瓦片地图并显示

    场景 Openlayers下载与加载geoserver的wms服务显示地图: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/114 ...

  3. Geoserver怎样切割离线瓦片地图

    场景 Openlayers下载与加载geoserver的wms服务显示地图: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/114 ...

  4. 使用Openlayers绘制Geoserver离线瓦片

    需求 将遥感影像tif数据通过Geoserver进行发布,为了加快服务器响应速度,我们使用Geoserver对遥感数据做了缓存处理,如下图,使用离线瓦片,我这里出现了中文不识别的问题,因此没法直接Su ...

  5. Geoserver中切割离线瓦片TileLayer预览时放大之后缺失

    场景 Geoserver怎样切割离线瓦片地图: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/118491320 在上面切割离线瓦 ...

  6. Geoserver中TileLayers中切割离线瓦片预览时地图模糊不清

    场景 Geoserver怎样切割离线瓦片地图: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/118491320 上面介绍了怎样切 ...

  7. Geoserver中切割离线瓦片TileLayer选项中没有900913选项(图层和图层组怎样配置TileLayers的切割选项)

    场景 Geoserver怎样切割离线瓦片地图: Geoserver怎样切割离线瓦片地图_BADAO_LIUMANG_QIZHI的博客-CSDN博客_geoserver 切瓦片 上面介绍了怎样切割离线瓦 ...

  8. Openlayers中加载Geoserver切割的EPSG:900913离线瓦片图层组

    场景 Openlayers中加载Geoserver切割的EPSG:900913离线瓦片地图并显示: Openlayers中加载Geoserver切割的EPSG:900913离线瓦片地图并显示_BADA ...

  9. Cesium 加载 离线的天地图影像瓦片

    Cesium 加载 离线的天地图影像瓦片 一.下载 天地图影像 通过水经注软件下载天地图影像(也许有其他下载方式). 1.下载 水经注软件 链接:http://www.rivermap.cn/down ...

最新文章

  1. Centos配置yum为阿里源
  2. 列出5个python标准库_Python常用标准库使用(一)
  3. 592zn rom/apk 自动签名工具_ios超级签名服务器
  4. 如何看待水氢发动机事件
  5. Photoshop Blendmodi in GLSL
  6. 0x08标志类型的RTMPE、RTMPTE协议分析
  7. ## normalize.css 中文版
  8. 计算机网络实验一:网线制作和局域网组建
  9. syn重发_疑难杂症之被丢弃的SYN包
  10. ckfinder php 配置,PHP中Ckeditor Ckfinder配置图片上传功能
  11. 环洋市场调研-2021年全球肽化妆品行业调研及趋势分析报告
  12. 百度地图API详解之自定义地图类型
  13. 【原生Ajax】全面了解xhr的概念与使用。
  14. Power BI查漏补缺_1
  15. bark 自建服务器,自建iOS消息推送服务Bark
  16. HIFI音箱中最常用的七种音箱摆位方法
  17. c语言 数据结构 课程设计 通讯录制作
  18. 苹果面临集体诉讼 因涉嫌销售iTunes和Apple Music用户数据
  19. 实用的Dock栏快速启动工具:uDock for Mac
  20. wdr通刷固件_高手绕道 新手 菜鸟修WD硬盘 少走弯路 必出通刷和方法以及一些个人见解...

热门文章

  1. 去哪儿网查不到历史订单_12306网站上超过30天的历史订单去哪儿找纪录?
  2. 数据中心暖通系统建设交付关键路径分析
  3. 均匀线阵列波束形成matlab仿真
  4. 职业价值观确认表? What is really important to you?
  5. 好看又炫酷的网页特效例子收集
  6. Elixir交互式Shell: 1. 运行时系统标记
  7. 高等数学(第七版)同济大学 习题5-3 个人解答(前3题)
  8. bytedance怎么读_我被字节的HR骗了...
  9. 金融银行测试面试题分享
  10. 用C语言代码编写一个五子棋小游戏