想在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行处,增加以下代码:

# start

def 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 " + name

if workspace:

msg += " in " + str(workspace)

raise ConflictingDataError(msg)

except FailedRequestError:

# we don't really expect that every layer name will be taken

pass

if 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

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

到这里配置完成。

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

from geoserver.catalog import Catalog

geourl = "http://localhost:8080/geoserver/rest" # the url of geoserver

geocat = Catalog(geourl) # create a Catalog object

store_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文件,完成发布。

转载自:https://blog.csdn.net/qq_21231159/article/details/78294435

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

  1. 天地图离线瓦片的打包与发布(GeoServer)

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

  2. ol+天地图+geoserver_教程:使用GeoServer发布离线地图服务(WMS)

    太乐地图下载器 是一款集地图类数据下载(谷歌/百度/天地图/海图/专题图/E都市等).矢量类数据下载(高程/DEM/等高线/三维地形.兴趣点POI.建筑轮廓.路网/水系/绿地等),地图服务发布.离线地 ...

  3. 2021-04-26QGIS3.10加载天地图影像(地图瓦片)的一种方法

    QGIS3.10加载天地图影像(地图瓦片)的一种方法 目录 QGIS3.10加载天地图影像(地图瓦片)的一种方法 1.天地图地图瓦片的链接获取. 2.QGIS加载数据 3.关于url参数的一点提醒 1 ...

  4. QGIS离线数据或瓦片并使用Cesium调用离线瓦片(vx gzh【图说GIS】)

    前言 QGIS在数据处理上确实已经做的很好了,尤其是其插件丰富,跟VSCode的插件系统设计思路感觉差不多.下面我将QGIS添加在线地图瓦片并将其离线为tif或瓦片以及矢量的方法记录下来.欢迎批评指正 ...

  5. ios 高德地图加载瓦片地图_OpenLayers加载高德地图离线瓦片地图

    谷歌地球离线瓦片下载使用"迈高图-地图数据下载器"(以下简称:迈高图),演示数据以湖南省长沙市7~16级瓦片数据为例. 下载演示数据 迈高图选择谷歌地球为当前地图源,地图图层选择为 ...

  6. ios 高德地图加载瓦片地图_OpenLayers加载谷歌地球离线瓦片地图

    本文使用OpenLayers最新版本V5.3.0演示:如何使用OpenLayer加载谷歌地球离线瓦片地图.OpenLayers 5.3.0下载地址为:https://github.com/openla ...

  7. openlayers加载天地图及天地图地形图影像图

    openlayer加载天地图.天地图地形图.天地图影像图,相关代码有注释. 加载效果: 天地图底图 天地图地形图 天地图影像图 相关代码: import {XYZ,TileImage} from 'o ...

  8. A1.0.2 离线瓦片用ol3显示多功能地图

    昨天写了如何下载瓦片并且贴了如何调用瓦片的html代码,今天来一个稍微全面些的. 参考魏经理和openlayers官方网站API写了这么多. 能实现什么? 1.地图放大缩小,全屏.并且可自由更改参数( ...

  9. OpenLayers加载谷歌地球离线瓦片地图

    本文使用OpenLayers最新版本V5.3.0演示:如何使用OpenLayer加载谷歌地球离线瓦片地图.OpenLayers 5.3.0下载地址为:https://github.com/openla ...

  10. 不同分辨率加载不同js_OpenLayers加载百度离线瓦片地图(完美无偏移)

    本文使用OpenLayers最新版本V5.3.0演示:如何使用OpenLayer完美无偏移加载百度离线瓦片地图.OpenLayers 5.3.0下载地址为:https://github.com/ope ...

最新文章

  1. 手撕ArrayList底层,透彻分析源码
  2. linux开启FTP以及添加用户配置权限,只允许访问自身目录,不能跳转根目录
  3. maven项目配置Jetty服务器
  4. mac系统装mysql还是mariadb_Mac上安装mariadb
  5. AQS.doReleaseShared
  6. 为什么基于内容的读取缓存 (CBRC) 对于 Horizon View 和 VSAN 如此重要?
  7. shell 登录mysql 然后quit_MySQL 数据库简单操作
  8. 面板数据回归模型(固定效应、随机效应、混合回归、变系数)、面板数据AR、VAR模型
  9. InnoDB关键特性之doublewrite
  10. 【js】实现 鼠标按下并未松开 事件
  11. 64位浮点数_【C语言教程】C语言浮点数及其应用
  12. linux常用指令学习记录
  13. linux 文件类型 时间戳 ls bash特性四 文件查看命令 cp move echo
  14. 平安银行薪资职级表_程序员工资有多高?看看阿里、腾讯、百度这些大厂薪资和职级一览...
  15. db2实现两个数相减_DB2 日期相减
  16. 阅读 SICP 感想(0. 关于前言和序言)
  17. 容斥原理和概率与数学期望
  18. 如何把文本文档转换成html格式,把固定格式的文本文档转换为Excel电子表格的方法...
  19. 超详细的VsCode创建SpringBoot项目(图文并茂)
  20. Spark开发环境搭建

热门文章

  1. 万能的应用商店_WiFi万能助手
  2. Android Studio新建项目
  3. 计划策略10、11、40
  4. 【小教程】steam长展柜制作
  5. 【批处理DOS-CMD命令-汇总和小结】-输出/显示命令——echo
  6. 信号公式汇总之Z变换
  7. Java 实现 pdf 和 Excel 的生成及数据动态插入、导出
  8. Windows系统文件浏览标签窗口工具
  9. 工具学习——介绍几个C++项目可用的UML工具
  10. [源码解读]position_estimator_inav_main解读(如何启动光流)