当前位置: 首页 > news >正文

【WebGIS实例】(17)下载瓦片底图并实现离线加载——以天地图为例

前言

在有些项目中,会有部署到无法访问互联网的内网环境中,这时候就会有离线部署应用和地图服务等需求了。

本博客是本着交流学习的目的,分享一个离线瓦片地图的获取方案,以天地图为案例,实现步骤

  1. 安装 QGIS,在 QGIS 中加载天地图
  2. 下载天地图
  3. 通过 Nginx 发布地图的静态资源
  4. 通过地图框架加载资源

实现

  • 首先下载并安装 QGIS:https://www.qgis.org/
  • 然后申请天地图的 token:http://lbs.tianditu.gov.cn/server/MapService.html

1. 加载

在QGIS中新建XYZ瓦片地图:

在这里插入图片描述

  • 影像::https://t0.tianditu.gov.cn/img_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILECOL={x}&TILEROW={y}&TILEMATRIX={z}&tk=您的密钥

  • 影像注记:https://t0.tianditu.gov.cn/cia_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cia&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILECOL={x}&TILEROW={y}&TILEMATRIX={z}&tk=您的密钥

2. 下载

在 QGIS 中,可以通过右键顶部工具栏打开面板,打开工具箱面板后在搜索框内搜索 XYZ,打开生成XYZ瓦片(目录) 功能

在这里插入图片描述

  1. 选择一个需要下载的范围:可以手动框选,也可以选择图层。比如说想要只下载广东省区域的天地图,则可以通过导入广东省的行政区划边界图层,范围直接选定该行政区划图层即可。
  2. 缩放级别:最小缩放级别一般是1,最大是18这取决于你加载的地图服务。实际下载时,因为数据量会很大,建议分批次下载,比如先下 1 到 12,然后下 12 到 17,最后下载 17 到18
  3. 其他选项默认即可,最后修改一下输出的目录路径。

于是,我们就得到了一堆分好了层级的天地图瓦片地图图片。

3. 发布

下载 nginx ,修改一下配置文件 nginx.conf

在这里插入图片描述

  server {listen 81;server_name localhost;location / {root  D:/Downloads/tdt/;autoindex on; # 打开目录浏览功能autoindex_exact_size off;autoindex_localtime on; add_header Access-Control-Allow-Origin *;add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';if ($request_method = 'OPTIONS') {  return 204;  }}}
  • 上面的 D:/Downloads/tdt/ 为离线地图图片存放路径的父级文件夹。

然后启动 nginx 服务,就可以通过 http://localhost:81/访问到地图图片了:

在这里插入图片描述

4. 加载服务

在 QGIS 下载完成同时,会生成一个通过 Leaflet 加载的 HTML 示例文件。

这里,我们通过 Mapbox GL JS 来加载:

代码实现

addLayer({type: "raster",id: "离线底图",source: {type: "raster",tiles: ["http://localhost:81/{z}/{x}/{y}.png", // 替换为你的本地服务器地址],tileSize: 256, // 分辨率},
});

注:如果这一步出现了跨域的问题,你就可以在项目配置文件里加入一下代理。

最后

同样的,借助这个方案可以下载其他的 XYZ 瓦片服务。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 什么是产品生命周期管理(PLM)
  • 基于AFM注意因子分解机的推荐算法
  • 基于yolov8的无人机检测系统python源码+onnx模型+评估指标曲线+精美GUI界面
  • 基于opencv的车牌检测和识别系统(代码+教程)
  • VMware ESXi 8.0U3b macOS Unlocker OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版)
  • 2024年双十一有什么好物值得买呢?双十一必买好物清单
  • 3.《DevOps》系列K8S部署CICD流水线之部署MetalLB负载均衡器和Helm部署Ingress-Nginx
  • 51单片机快速入门之按键应用拓展
  • 实时数据的处理一致性
  • 【JavaScript】算法之贪心算法(贪婪算法)
  • 10款超好用的文档加密软件|2024企业常用文档加密软件排行榜
  • 美食共享圈:Spring Boot校园周边美食平台
  • js笔记(第二章)
  • 软件测试技术之 GPU 单元测试是什么!
  • 标准C++(二)
  • [deviceone开发]-do_Webview的基本示例
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 【mysql】环境安装、服务启动、密码设置
  • ES6语法详解(一)
  • java第三方包学习之lombok
  • Linux下的乱码问题
  • PHP 小技巧
  • Rancher-k8s加速安装文档
  • SpringBoot 实战 (三) | 配置文件详解
  • SpringCloud集成分布式事务LCN (一)
  • SSH 免密登录
  • 初识 webpack
  • 多线程事务回滚
  • 浮动相关
  • 警报:线上事故之CountDownLatch的威力
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 面试总结JavaScript篇
  • 如何编写一个可升级的智能合约
  • 学习ES6 变量的解构赋值
  • (9)STL算法之逆转旋转
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (补充):java各种进制、原码、反码、补码和文本、图像、音频在计算机中的存储方式
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (二)Kafka离线安装 - Zookeeper下载及安装
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (生成器)yield与(迭代器)generator
  • (微服务实战)预付卡平台支付交易系统卡充值业务流程设计
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (转)fock函数详解
  • (转)德国人的记事本
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • .ai域名是什么后缀?
  • .axf 转化 .bin文件 的方法
  • .net dataexcel winform控件 更新 日志
  • .NET Framework 3.5安装教程
  • .net 微服务 服务保护 自动重试 Polly
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .Net6 Api Swagger配置
  • .NET业务框架的构建