栅格瓦片和矢量瓦片

news2024/11/28 4:33:14

地图瓦片

地图瓦片的诞生

在以前没有瓦片的概念时,由于地图要素多、范围大等特点导致地图数据量很大,如果从浏览器可视化地图就对网络和数据渲染能力有高的要求,所以导致瓦片诞生以前,地图多在pc电脑中桌面软件使用。随着互联网的高速发展,催生了通过浏览器使用地图的需求,于是在1999年,谷歌推出了WMS(Web Map Service)这样的解决方案。在浏览器这一端,没有地图的概念,但浏览器天生就是为了显示文本和图片。WMS的设计是,在服务器端把地图渲染成图片,浏览器端显示地图图片。解决地图体量大,减轻浏览器的压力,在浏览器端进行图片拼接,形成了地图瓦片的雏形。

地图瓦片的原理

类似拼图一样,一副大的地图,用一块一块有统一长宽、分辨率大小的小拼图,拼接为一副大的图。这些一块一块小拼图就是一张一张的地图瓦片,每张瓦片都有其对应的级别、行列号作为唯一标记。在浏览器中根据金字塔规则计算当前显示范围和层级,对服务器发送瓦片请求后显示拼接后的瓦片。

地图瓦片的进化

以图片拼接的方式(栅格瓦片)在互联网时代大放异彩,地图在生活中得到迅速普及在各个领域得到应用,但是随时互联网时代发展,迎来了移动互联网时代,慢慢的栅格瓦片这种以图片为媒介的方式,遇到了瓶颈:
1.图片占用带宽和存储较大,不利于地图在移动设备的应用
2.图片无法交互

促使出现了新的一种地图瓦片:

矢量瓦片 MVT

矢量瓦片采用和栅格瓦片相同的分级切割方案(按比例尺进行分级切割),但是不同的是,瓦片不是以图片形式存在,是以矢量数据、数据属性、数据显示风格等数据瓦片形式存在。浏览器请求到这些数据数据瓦片后进行渲染。

优势:
1.数据体量小:以数据瓦片形式存在,可高度压缩,占用的存储空间比栅格瓦片要小上千倍。
2.大大减小带宽:由于数据体量大大减小,一方面减小网络带宽,一方面使用离线地图成为可能。
3.可灵活设置风格:栅格瓦片是切的一幅幅图片,无法再到浏览器更改风格样式,但是矢量瓦片是请求数据瓦片进行再渲染的,所以渲染风格可在浏览器设置。
4.数据改动牺牲很小:如果栅格瓦片数据更新,需要全副重新切,或者区域内重切,对比之下,矢量瓦片更优。

缺点:
数据太大、要素太多、风格样式繁琐的场景不适合矢量瓦片,渲染压力很大。

矢量瓦片文件简介

在这里插入图片描述
.sci:瓦片配置文件,记录了整个地图生成瓦片的想过切图范围、切图比例尺、瓦片存储类型、瓦片设置、投影等参数信息。可用于 SupcrMap iScrver 发布 UGCVS(MVT)瓦片为地图服务。

styles:包含JSON格式的风格文件,用于定义地图的样式,包括绘制什么数据,绘制的顺序、绘制方式等。fonts: 存放字体源数据。

sprites: sprites 文件央中存放了绘制地图时所需的图标,采用 sprite 图集的方式,包含图标集文件 (.png),以及用于定位图标位置的元数据文件 (.json)。 此外,文件夹中还包含*@2x.png 用于在高分辨率屏幕上显示。

tiles:存放矢量瓦片数据。存储结构直观的表现为不同比例尺级别文件夹下的瓦片数据存储为一组文件。原始型缓存的瓦片格式为*.mvt,紧凑型为*.cf。

矢量瓦片和栅格瓦片对比

矢量瓦片栅格瓦片
瓦片形式mvt文件图片文件
瓦片格式Google Protocol Buffers 数据序列化格式png、jpg、png8等
瓦片内容瓦片对应范围的地图矢量数据的坐标和字段,基于MapBox样式规范的瓦片风格瓦片对应范围的地图内容输出的图片
瓦片结构瓦片按照层级和行列号分文件存储;采用全球剖分层级比例尺创建瓦片可自定义层级比例尺创建瓦片
瓦片大小和瓦片对应范围的矢量地图数据量大小正相关图片文件大小
瓦片存储支持原始、紧凑,本地文件形式和MongoDB数据库都可以支持原始、紧凑,本地文件形式和MongoDB数据库都可以

(SuperMap iDesktop为例)

MVT生成时注意事项

分离数据与风格(前端可更改)

在这里插入图片描述
分离数据与风格”默认是选中状态,切图的时候可以按需求选中或者不选中。
选中代表生成的矢量瓦片的数据和风格是分离的,这样数据是完整的数据,在风格文件style.json中也会存在filter表达式;
不选中代表在生成矢量瓦片的时候就将数据给过滤了,生成的数据是过滤后的数据,在风格文件style.json中没有filter表达式;
意义:如果有表达式,可以在前端进行过滤表达,如果没有那么在前端只能修改样式不能进行选择性过滤操作。

属性字段(前端可以获取)

在这里插入图片描述

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

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

相关文章

【YOLOv5】LabVIEW+YOLOv5快速实现实时物体识别(Object Detection)

前言 前面我们给大家介绍了基于LabVIEWYOLOv3/YOLOv4的物体识别(对象检测),今天接着上次的内容再来看看YOLOv5。本次主要是和大家分享使用LabVIEW快速实现yolov5的物体识别,本博客中使用的智能工具包可到主页置顶博客LabVIEW AI视…

一个简单的MATLAB脚本——快速行进算法(FMM))

一个简单的MATLAB脚本——快速行进算法(FMM) 介绍快速行进算法(FMM)的简单MATLAB脚本,不到20行代码实现快速行进算法的运算结果,而且计算速度非常快。给了两个实例模型来说明计算结果。 文章目录一个简单的…

unicloud生成微信小程序分享码

一,方案 看了官方的文档,获取小程序码有三种,我采用的是第二种:生成数量不受限制的分享码。 对应的官方文档:https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/qrcode-link/qr-code/getUnlimitedQRCode.…

MySQL 锁

在之前的文章有多次提到,MySQL在数据更新和性能优化上会用到锁机制。我们在实际的应用中也经常会遇到锁相关的问题,即使很多时候我们并没有人为的为数据库添加锁,但还是会出现死锁的问题,这是因为在我们操作数据时MySQL隐式的帮我…

java UDP通信程序DatagramSocket数据发送

首先 我们先来了解一下 UDP 首先 他是一种不可靠的网络协议 他在通信的两端 各建立一个 Socke对象 但是他们只是 发送和接收数据的对象 发送端只管发送 不会顾及接收端是否接到 接收到只负责接收数据 而不会给出发送端反馈 因此对于UDP通信的双方而言 是有没什么 客户端和服务…

架构师进阶,微服务设计与治理的 16 条常用原则

今天将从存储的上一层「服务维度」学习架构师的第二项常用能力 —— 微服务设计与治理。 如何设计合理的微服务架构? 如何保持微服务健康运行? 这是我们对微服务进行架构设计过程中非常关注的两个问题。 本文对微服务的生命周期定义了七个阶段&#xf…

正大国际期货:为什么外盘期货顺势交易这么难

要回答“为什么趋势交易这么难?”需要先回答:“为什么交易?”。 你应该为了抓住赚取期望利润的机会而交易,为了长期持续赚钱的目的而交易,而不是为了赚得短期利润的喜悦而交易,也不是为了证明你的市场分析…

音频转文字怎么转?这些方法值得一试

在日常生活中我们经常会遇到要把音频转换成文字的情况,很多小伙伴还在使用传统的方法,一边播放一边记录。虽然这样能解决问题,但是需要花费很多时间,效率特别低。我们不妨尝试使用一些转换软件,这样就能节省很多时间了…

界面组件Kendo UI for Angular——让应用数据显示更直观!(二)

Kendo UI致力于新的开发,来满足不断变化的需求,通过React框架的Kendo UI JavaScript封装来支持React Javascript框架。Kendo UI for Angular是专用于Angular开发的专业级Angular组件,telerik致力于提供纯粹的高性能Angular UI组件&#xff0c…

Word处理控件Aspose.Words功能演示:在 Java 中将 Word DOCX 转换为 Markdown

如今,Markdown ( MD ) 格式被广泛用于编写在线文章、博客和文档。但是,在大型文档的情况下,它的语法变得难以记忆和书写。为方便起见,您可以在 MS Word 中编写内容,然后将DOCX文件转换为 Markdown。为了以编程方式执行…

nacos--基础--5.2.2--集成--SpringCloud--服务注册,发现,负载均衡

nacos–基础–5.2.2–集成–SpringCloud–服务注册,发现,负载均衡 代码位置 https://gitee.com/DanShenGuiZu/learnDemo/tree/master/nacos-learn1、介绍 服务发现客户端 从服务发现中心获取服务列表服务消费 通过负载均衡获取服务地址 2、添加依赖 …

jdk安装配置教程2022年12月最新版

这两天配了好几遍jdk,删了又下下了又删,总结一下,也算有点收获 1. 下载:官网Java Downloads | Oracle jdk1.8在下面,上面是最新的jdk17和jdk19 2.下载完成后,一路安装解压(我撞在了C盘&#…

IfcOpenShell简明教程【BIM】

IFC 是用于存储 BIM 数据的 ISO 标准格式。 IfcOpenShell 是一个包含 Python 库的项目,可以用来解析 IFC 文件。 1、下载安装IfcOpenShell 首先,我们需要下载并安装 IfcOpenShell python。 目前没有 IfcOpenShell 的 API 文档,但考虑到它主…

Vector源码解析

Vector源码解析 简介 Vector 是一个古老的 线程安全(内部的核心方法都加了synchronized) 的容器,在 JDK1.0 时就已经存在,到如今已经很少使用。 基本结构与 ArrayList 类似,可以认为是线程安全版本的 ArrayList,但因为 Vector …

BCN-PEG-FITC 环丙烷环辛炔聚乙二醇荧光素 BCN-PEG-荧光素

双环[6,1,0]壬炔 (BCN) (环丙烷环辛炔)可以通过无铜的点击化学与叠氮化物标记的分子或生物分子反应生成稳定的三氮唑连接。 产品名称 BCN-PEG-FITC 环丙烷环辛炔聚乙二醇荧光素 中文名称 环丙烷环辛炔聚乙二醇荧光素 英文名称 BCN-PEG-FITC 分子…

基于Android的二维码识别系统的研究 与实现

XXXX 本科生毕业设计(论文) 学院(系): XX 专 业: XX 学 生: XX 指导教师: XX XX 完成日期 年 月 XXX本科生毕业设计(论文) 基于Android的二维码识别系统的研究 与实现 Research and Implementati…

防重放、防篡改攻击的实现(Java版)

文章目录一、问题描述1、什么是重放攻击、篡改攻击?2、如何模拟重放攻击、篡改攻击?2.1、重放攻击模拟方式2.2、篡改攻击模拟方式二、解决方案三、在项目中使用1、项目简介2、项目实践一、问题描述 1、什么是重放攻击、篡改攻击? 1、重放攻击…

【SSM框架】为集合类型属性赋值

🍓个人主页:个人主页 🍒系列专栏:SSM框架 目录 1.为集合类型属性赋值 ①为List集合类型属性赋值 ②为Map集合类型属性赋值 2.p命名空间 3.引入外部属性文件 1.为集合类型属性赋值 ①为List集合类型属性赋值 在Clazz类中添加…

中国三大主流开源Linux操作系统社区及其产品生态

作者:IT圈黎俊杰 操作系统是基础软件的核心,是科技研发必备的底层支撑产品,它的核心技术至今仍然由美国为代表的西方国家所掌控着。由于以前国产操作系统产业长期处于“多、小、散”的状态,未能建立起完善的生态、未能研发出真正好…

python笔记(一)

文章目录字节对象与字符转换动态爬虫实施辅助工具python 部分内置方法示例:python虚拟环境的创建与激活执行多个.py程序获取当前系统默认浏览器名称反编译小程序PC端小程序(wxapkg)解密:反编译字节对象与字符转换 data1 babc # …