openlayers 使用WMTS和XYZ加载天地图切片服务

openlayers 使用WMTS和XYZ加载天地图切片服务

本篇介绍一下使用openlayers加载天地图切片,两种方法:

  1. 使用WMTS
  2. 使用XYZ

1 需求

  • openlayers加载天地图

2 分析

主要是不同类型source的使用

  • WMTS(Web Map Tile Service) 是 OGC(Open Geospatial Consortium)标准,用于提供预渲染的地图切片。
  • XYZ切片是一种在线地图数据格式,由goole公司开发,将地图数据分解为一系列小的图像块,以提高地图显示效率和性能。
  • WMTS 和 XYZ 的主要区别在于,WMTS 提供了更多的元数据和配置选项(如投影、分辨率、矩阵集等),而 XYZ 通常更简单,只需要一个 URL 模板即可。
  • 天地图同时提供 WMTS 和 XYZ(或其他格式)的服务

3 实现

3.1 WMTS

<template><div id="map" class="map"></div>
</template><script setup lang="ts">import { Map, View } from 'ol';
import { Tile as TileLayer } from 'ol/layer';
import { get } from 'ol/proj';
import { getWidth, getTopLeft } from 'ol/extent';
import { WMTS } from 'ol/source';
import WMTSTileGrid from 'ol/tilegrid/WMTS';const projection = get('EPSG:4326');
const projectionExtent = projection.getExtent();
const size = getWidth(projectionExtent) / 256;
const resolutions = [];
for (let z = 2; z < 19; ++z) {resolutions[z] = size / Math.pow(2, z);
}const layerTypeMap = {vector: ['vec', 'cva'], // [矢量底图, 矢量注记]image: ['img', 'cia'], // [影像底图, 影像注记]terrain: ['ter', 'cta'] // [地形晕渲, 地形注记]};
const matrixIds= ['0','1','2','3','4','5','6','7','8','9','10','11','12','13','14']const map = ref();onMounted(() => {initMap('image');
});const initMap = (layerType = 'image') => {const key = '换成申请的天地图key';const matrixSet = 'c';// c: 经纬度投影 w: 墨卡托投影map.value = new Map({target: 'map',layers: [// 底图new TileLayer({source: new WMTS({url: `http://t{0-6}.tianditu.com/${layerTypeMap[layerType][0]}_${matrixSet}/wmts?tk=${key}`,layer: layerTypeMap[layerType][0],matrixSet: matrixSet,style: 'default',crossOrigin: 'anonymous', format: 'tiles',wrapX: true,tileGrid: new WMTSTileGrid({origin: getTopLeft(projectionExtent),resolutions: resolutions,matrixIds:matrixIds})})}),// 注记new TileLayer({source: new WMTS({url: `http://t{0-6}.tianditu.com/${layerTypeMap[layerType][1]}_${matrixSet}/wmts?tk=${key}`,layer: layerTypeMap[layerType][1],matrixSet: matrixSet,style: 'default',crossOrigin: 'anonymous', format: 'tiles',wrapX: true,tileGrid: new WMTSTileGrid({origin: getTopLeft(projectionExtent),resolutions: resolutions,matrixIds: matrixIds})})}),],view: new View({center: [116.406393, 39.909006],projection: projection,zoom: 5,maxZoom: 17,minZoom: 1})});
};
</script>
<style scoped lang="scss">
.map {width: 100%;height: 100%;
}
</style>

3.2 XYZ


<template><div id="map" class="map"></div>
</template><script setup lang="ts">
import { Map, View } from 'ol';
import { Tile as TileLayer } from 'ol/layer';
import { get } from 'ol/proj';
import { XYZ } from 'ol/source';const projection = get('EPSG:4326');const layerTypeMap = {vector: ['vec', 'cva'], // [矢量底图, 矢量注记]image: ['img', 'cia'], // [影像底图, 影像注记]terrain: ['ter', 'cta'] // [地形晕渲, 地形注记]
};const map = ref();onMounted(() => {initMap('image');
});const initMap = (layerType = 'image') => {const key = '换成申请的天地图key';// c: 经纬度投影 w: 墨卡托投影const matrixSet = 'c';map.value = new Map({target: 'map',layers: [// 底图new TileLayer({source: new XYZ({url: `https://t{0-7}.tianditu.gov.cn/DataServer?T=${layerTypeMap[layerType][0]}_${matrixSet}&tk=${key}&x={x}&y={y}&l={z}`,projection,})}),// 注记new TileLayer({source: new XYZ({url: `https://t{0-7}.tianditu.gov.cn/DataServer?T=${layerTypeMap[layerType][1]}_${matrixSet}&tk=${key}&x={x}&y={y}&l={z}`,projection,})})],view: new View({center: [116.406393, 39.909006],projection: projection,zoom: 5,maxZoom: 17,minZoom: 1})});
};
</script>
<style scoped lang="scss">
.map {width: 100%;height: 100%;
}
</style>

4 WMTS和XYZ区别

WMTS(Web Map Tile Service)和XYZ作为地图瓦片服务的两种不同方式,在多个方面存在显著的差异。以下是它们之间的主要不同点:

4.1 标准化与自定义:

  • WMTS:是一种由Open Geospatial Consortium (OGC)制定的开放标准,它定义了在Web上发布和使用预渲染地图瓦片的标准方法。这种标准化确保了不同厂商和平台之间的互操作性。
  • XYZ:是一种更偏向于自定义的地图瓦片服务格式,通常用于OpenStreetMap和其他提供标准XYZ URL格式的地图服务。它没有像WMTS那样的严格标准,但提供了一种灵活的方式来提供地图瓦片。

4.2 数据提供方式:

  • WMTS:通过HTTP请求获取地图瓦片,通常提供详细的元数据和配置选项,如投影、分辨率、矩阵集等。这些选项允许开发人员更精细地控制地图的显示和性能。
  • XYZ:通常通过简单的URL模板(如https://t{0-7}.tiledata.plus/tiles/v1/mapnik/{z}/{x}/{y}.png)来提供地图瓦片,其中{z}、{x}和{y}分别代表缩放级别、列索引和行索引。这种方式更加简洁和直观。

4.3 性能与缓存:

  • WMTS:支持瓦片缓存,这可以提高地图显示的性能和效率。通过控制缓存时间和版本,WMTS可以确保服务正常运行的同时减少数据传输量。
  • XYZ:虽然也支持缓存(由浏览器或代理服务器实现),但通常没有WMTS那样的详细缓存控制机制。

4.4 应用场景:

  • WMTS:由于其标准化和灵活性,WMTS适用于各种Web地图应用程序、GIS(地理信息系统)应用程序、移动应用程序以及数据分析和可视化等场景。
  • XYZ:由于其简单性和自定义性,XYZ通常用于需要快速集成地图功能的项目,如网站、移动应用等。

4.5 数据格式与输出:

  • WMTS:支持多种数据格式的输出,如JPEG、PNG、GIF、TIFF等。提供者可根据实际需求选择适合的数据格式。
  • XYZ:通常使用PNG或JPEG等常见图像格式来提供地图瓦片。

4.6 坐标系统和投影:

  • WMTS:支持多种坐标系统和投影方式,并可以自由定义坐标范围和坐标系。这使得WMTS能够灵活地适应不同地区和地图源的坐标定义。
  • XYZ:通常使用WGS84(或类似)地理坐标系和Web墨卡托投影(或类似投影),但具体取决于地图服务提供商的实现。

综上所述,WMTS和XYZ在标准化、数据提供方式、性能与缓存、应用场景、数据格式与输出以及坐标系统和投影等方面存在显著差异。开发人员应根据具体需求和使用场景选择最适合的地图瓦片服务方式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/28753.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一道全等三角形证明题

接着上次那道题 一道初中一年级几何题解析&#xff0c;再来做一道初中一年级下半学期几何题目&#xff1a; 傍晚丢垃圾散步时看到小小的学生学习群里丢了这个题目&#xff0c;想到一个解法。实在构造不出契合题干阅读材料结论的三角形&#xff0c;索性先根据这结论做一个推论…

ByteTrack

1. 论文中伪代码表示的流程图 2. 简要版 此图源自&#xff1a; ByteTrack多目标跟踪原理&#xff0c;白老师人工智能学堂 3. 详细版 根据ByteTrack-CPP-ncnn代码的数据流画的较为详细的流程图&#xff1a; 4. ByteTrack-CPP-ncnn的UML类图 Reference ByteTrack多目标跟踪原…

Excel小技巧| 批量多列多行转为一列

前期刘小生Star分享了Excel批量一列转多列多行&#xff0c;你学会了嘛&#xff01; 前期刘小生遇到需“对多列对行数据合并并找到唯一不重复的信息”&#xff0c;今天举一反三&#xff0c;继续沿用“替换等号”方法&#xff0c;将多列多行转为一列&#xff01; 下面一个模拟案…

xml与动态SQL

XML映射文件 规范 XML映射文件的名称与Mapper接口名称一致,并且将XML映射文件和Mapper接口放置在相同包下(同包同名)。 ● XML映射文件的namespace属性为Mapper接口全限定名一致。 ● XML映射文件中sql语句的id与Mapper接口中的方法名一致,并保持返回类型一致。 动态SQL &…

Excel批量一列转多列多行

你在公司或学校是否遇到过对人员进行分组&#xff0c;你是否曾一个一个复制粘贴&#xff0c;如只有100人&#xff0c;尚有时间一一分组&#xff0c;如1000人&#xff0c;甚至更多&#xff0c;不知分到“地老天荒”是否可以完成&#xff01; 今天刘小生分享一个方法“用替换等号…

环信beta版鸿蒙IM SDK发布!深度适配HarmonyOS NEXT系统

环信beta版鸿蒙IM SDK已正式发布&#xff01;欢迎有需求开发者体验集成&#xff01; 版本亮点 提供原生鸿蒙 SDK&#xff0c;支持原生 ArkTS 语言&#xff0c;全面拥抱鸿蒙生态提供鸿蒙系统上单聊、群聊、会话等能力和服务覆盖消息管理、用户属性、群租管理、离线推送.多设备…

【Echarts系列】平滑折线面积图

【Echarts系列】平滑折线面积图 序示例数据格式代码 序 为了节省后续开发学习成本&#xff0c;这个系列将记录我工作所用到的一些echarts图表。 示例 平滑折线面积图如图所示&#xff1a; 数据格式 data [{name: 2020年,value: 150},{name: 2021年,value: 168},{name: 2…

tmux 移植到ARM板端运行环境搭建

tmux源码下载&#xff1a; Home tmux/tmux Wiki GitHub 依赖的库代码下载&#xff1a; libevent&#xff1a; ncurses: 第一步&#xff1a;将以上三个代码解压放在同一个目录下&#xff0c;逐个编译 1. cd ./libevent-2.1.12-stable ./configure --host"arm-nextvp…

2024年粤港澳青少年信息学创新大赛图形化编程小低组真题试卷

2024年粤港澳青少年信息学创新大赛图形化编程小低组真题试卷 题目总数&#xff1a;16 总分数&#xff1a;100 单选题 第 1 题 单选题 默认小猫角色&#xff0c;以下哪个Scratch程序可以在点击绿旗后让小猫说”你好!"一共10秒? A. B. C. D. 第 2 题 单选题 …

50etf期权交易规则杠杆怎么计算?

今天带你了解50etf期权交易规则杠杆怎么计算&#xff1f;近年来&#xff0c;期权交易在股票市场中变得愈发流行&#xff0c;其中50ETF期权备受关注。作为一种金融衍生品&#xff0c;50ETF期权为投资者提供了更灵活的投资方式和更多的策略选择。 50etf期权交易规则杠杆怎么计算&…

CCF 矩阵重塑

第一题&#xff1a;矩阵重塑&#xff08;一&#xff09; 本题有两种思路 第一种 &#xff08;不确定是否正确 但是100分&#xff09; #include<iostream> using namespace std; int main(){int n,m,p,q,i,j;cin>>n>>m>>p>>q;int a[n][m];for(i…

现代易货:创新交易模式引领物品交换新潮流

在繁华的现代经济浪潮中&#xff0c;物品交换的文化逐渐崭露头角&#xff0c;引领了一种新颖的交易潮流——现代易货交易模式。这种模式不仅是对古老“以物易物”交易的现代化诠释&#xff0c;更是对物品价值多元化和交换方式创新的深入探索。那么&#xff0c;现代易货交易究竟…

员工入职平台ChiefOnboarding

什么是 ChiefOnboarding &#xff1f; ChiefOnboarding 是一个免费开源的员工入职平台。您可以通过 Slack 或门户网站让新员工入职。 安装 在群晖上以 Docker 方式安装。 在注册表中搜索 chiefonboarding &#xff0c;选择第一个 chiefonboarding/chiefonboarding&#xff0c…

R语言dplyr统计指定列里面种类个数和比例

输入数据框&#xff1a;dfuorf&#xff0c;Type列有uORF和overlpaORF两种类型 dfuorf1 <- dfuorf %>%group_by(Type) %>% summarise(Countn()) %>% mutate(percentCount/sum(Count)) %>% mutate(percent1 (paste0(round((Count/sum(Count)), 2)*100,"%&…

示例:WPF中使用DecodePixelHeight和DecodePixelWidth优化Image性能

一、目的&#xff1a;在使用Image控件时&#xff0c;如果图片太大或者图片数量过多时加载出来的程序内存会非常的大&#xff0c;但一般图片多时我们只要预览缩略图就可以&#xff0c;查看时再显示原图&#xff0c;这个时候需要通过通过设置BitmapImage的DecodePixelHeight和Dec…

YOLOv5目标检测——基于YOLOv5的吊车安全监测

移动式起重机是建筑施工中使用的重要设备。 遵守正确的操作程序对于防止事故很重要。 然而&#xff0c;其中存在人为错误的因素。 这里我将举一个例子来说明计算机视觉&#xff08;CV&#xff09;如何帮助解决这个问题。 1、移动式起重机操作的安全问题 为简单起见&#xff0…

MySQL 离线安装客户端

1. 官方网址下载对应架构的安装包。 比如我的是centOs 7 x64。则需下载如图所示的安装包。 2. 安装 使用如下命令依次安装 devel , client-plugins, client. rpm -ivh mysql-community-*.x86_64.rpm --nodeps --force 在Linux系统中&#xff0c;rpm是一个强大的包管理工具&…

Python基础教程(二十四):日期和时间

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; &#x1f49d;&#x1f49…

springboot弘德图书馆座位预约管理系统-计算机毕业设计源码07028

摘 要 在面对当今培育人才计划的压力&#xff0c;人们需要汲取更多的不同领域的知识来不断扩充自己的知识层面&#xff0c;因此他们对学习的欲望不断扩大&#xff0c;图书馆作为我们的学习宝地&#xff0c;有着不可替代的地位。但是在信息化时代&#xff0c;传统模式下的图书馆…

栅格数据实现最优参数地理探测器(OPGD)详细教程!(上)

数据准备 要探寻一堆因素对因变量的影响,首先你要确定要用哪些自变量来影响哪个因变量 想好了之后 你需要到相应的网站去下载你的研究区的自变量和因变量数据的栅格数据(可以是离散的,也可以是连续的) 后续操作是到Arcgis里对你的数据处理一下 由于不是教程的重点,这里就…