ol+天地图+geoserver_天地图离线瓦片的打包与发布(GeoServer)
想在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)相关推荐
- 天地图离线瓦片的打包与发布(GeoServer)
想在GeoServer中直接发布松散型的瓦片是不支持的,需要使用GeoServer的mbtiles扩展.先将瓦片存储到SQLite数据库中,再将数据库发布,中间进行了一个转折. 实现思路: 1.将已有 ...
- ol+天地图+geoserver_教程:使用GeoServer发布离线地图服务(WMS)
太乐地图下载器 是一款集地图类数据下载(谷歌/百度/天地图/海图/专题图/E都市等).矢量类数据下载(高程/DEM/等高线/三维地形.兴趣点POI.建筑轮廓.路网/水系/绿地等),地图服务发布.离线地 ...
- 2021-04-26QGIS3.10加载天地图影像(地图瓦片)的一种方法
QGIS3.10加载天地图影像(地图瓦片)的一种方法 目录 QGIS3.10加载天地图影像(地图瓦片)的一种方法 1.天地图地图瓦片的链接获取. 2.QGIS加载数据 3.关于url参数的一点提醒 1 ...
- QGIS离线数据或瓦片并使用Cesium调用离线瓦片(vx gzh【图说GIS】)
前言 QGIS在数据处理上确实已经做的很好了,尤其是其插件丰富,跟VSCode的插件系统设计思路感觉差不多.下面我将QGIS添加在线地图瓦片并将其离线为tif或瓦片以及矢量的方法记录下来.欢迎批评指正 ...
- ios 高德地图加载瓦片地图_OpenLayers加载高德地图离线瓦片地图
谷歌地球离线瓦片下载使用"迈高图-地图数据下载器"(以下简称:迈高图),演示数据以湖南省长沙市7~16级瓦片数据为例. 下载演示数据 迈高图选择谷歌地球为当前地图源,地图图层选择为 ...
- ios 高德地图加载瓦片地图_OpenLayers加载谷歌地球离线瓦片地图
本文使用OpenLayers最新版本V5.3.0演示:如何使用OpenLayer加载谷歌地球离线瓦片地图.OpenLayers 5.3.0下载地址为:https://github.com/openla ...
- openlayers加载天地图及天地图地形图影像图
openlayer加载天地图.天地图地形图.天地图影像图,相关代码有注释. 加载效果: 天地图底图 天地图地形图 天地图影像图 相关代码: import {XYZ,TileImage} from 'o ...
- A1.0.2 离线瓦片用ol3显示多功能地图
昨天写了如何下载瓦片并且贴了如何调用瓦片的html代码,今天来一个稍微全面些的. 参考魏经理和openlayers官方网站API写了这么多. 能实现什么? 1.地图放大缩小,全屏.并且可自由更改参数( ...
- OpenLayers加载谷歌地球离线瓦片地图
本文使用OpenLayers最新版本V5.3.0演示:如何使用OpenLayer加载谷歌地球离线瓦片地图.OpenLayers 5.3.0下载地址为:https://github.com/openla ...
- 不同分辨率加载不同js_OpenLayers加载百度离线瓦片地图(完美无偏移)
本文使用OpenLayers最新版本V5.3.0演示:如何使用OpenLayer完美无偏移加载百度离线瓦片地图.OpenLayers 5.3.0下载地址为:https://github.com/ope ...
最新文章
- 手撕ArrayList底层,透彻分析源码
- linux开启FTP以及添加用户配置权限,只允许访问自身目录,不能跳转根目录
- maven项目配置Jetty服务器
- mac系统装mysql还是mariadb_Mac上安装mariadb
- AQS.doReleaseShared
- 为什么基于内容的读取缓存 (CBRC) 对于 Horizon View 和 VSAN 如此重要?
- shell 登录mysql 然后quit_MySQL 数据库简单操作
- 面板数据回归模型(固定效应、随机效应、混合回归、变系数)、面板数据AR、VAR模型
- InnoDB关键特性之doublewrite
- 【js】实现 鼠标按下并未松开 事件
- 64位浮点数_【C语言教程】C语言浮点数及其应用
- linux常用指令学习记录
- linux 文件类型 时间戳 ls bash特性四 文件查看命令 cp move echo
- 平安银行薪资职级表_程序员工资有多高?看看阿里、腾讯、百度这些大厂薪资和职级一览...
- db2实现两个数相减_DB2 日期相减
- 阅读 SICP 感想(0. 关于前言和序言)
- 容斥原理和概率与数学期望
- 如何把文本文档转换成html格式,把固定格式的文本文档转换为Excel电子表格的方法...
- 超详细的VsCode创建SpringBoot项目(图文并茂)
- Spark开发环境搭建