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

server/2024/9/23 16:35:13/

前言

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

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

  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 瓦片服务。


http://www.ppmy.cn/server/120872.html

相关文章

【AI创作组】Matlab简介

1. MATLAB 简介 1.1 科学计算语言 MATLAB是一种高性能的科学计算语言,广泛应用于工程计算、控制设计、信号处理和图形显示等领域。 语言特性:MATLAB语言简洁明了,接近自然数学语言,使得用户能够轻松编写数学表达式和算法,进行高效的数值计算和符号运算。计算能力:MATLA…

茶思屋直播|TinyEngine+AI:聚焦主航道,在实践中探索低代码技术黑土地

低代码引擎使能开发者定制低代码平台。它是低代码平台的底座,提供可视化搭建页面等基础能力,既可以通过线上搭配组合,也可以通过cli创建个人工程进行二次开发,实时定制出自己的低代码平台。适用于多场景的低代码平台开发&#xff…

网络通信——路由器、交换机、集线器(HUB)

注意:传输层,应用层没有网路设备 一.路由器(网络层设备) 1.分割广播域 2.一个接口就是一个广播域 3.一般接口位4,8,12。 4.数据转发 (由路由表转发数据) 5.根据路由表来进行路径选…

bert系列模型区别(bert-base-cased/bert-base-uncased/bert-base-chinese)

文章目录 BERT模型介绍bert-base-casedbert-base-uncasedbert-base-chineseBERT-BILSTM-CRF模型介绍模型下载地址BERT模型介绍 BERT(Bidirectional Encoder Representations from Transformers)是一种预训练的语言模型,由Google开发并于2018年发布。BERT的目标是通过将大量…

ProtoBuf介绍及安装

文章目录 序列反序列化ProtoBuf特点安装ProtoBufwindowsUbuntuCentos 序列反序列化 在网络传输过程当中,可以理解为: 发送方接收方 它们彼此要通信,先要定好一个规则,也就是协议,双方都能认识的结构化数据&#xff…

制药企业医学信息团队及其职能

对于制药行业来说,医学信息职能的相关服务可追溯到 1950 年代。当制药企业的药品被更多的人所关注时,人们需要从所属公司了解准确、最新的药品信息,来帮助人们合理的使用药品。事实上,法规已经要求制药企业为所属公司的药品针对客…

Nginx 入门指南:从安装到配置的全方位探索

目录 1. 简介 什么是 Nginx Nginx 的主要功能 Nginx 的应用场景 2. 下载 Nginx 官方网站介绍 不同版本的选择(稳定版、主线版等) 3. 安装 Nginx 源码编译安装(推荐) 使用包管理器安装(如 apt, yum&#xff0…

【计算机网络 - 基础问题】每日 3 题(十三)

✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/fYaBd 📚专栏简介:在这个专栏中,我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏&…