7点 讲明白地图切片的概念与原理

简介: 7点 讲明白地图切片的概念与原理

定义

地图切片:采用预生成的方法存放在服务器端,然后根据用户提交的不同请求,把相应的地图瓦片发送给客户端的过程,它是一种多分辨率层次模型,从瓦片金字塔底层到顶层,分辨率越来越低,但表示的地理范围不变。

地图缓存:又称地图瓦片,是一个包含了不同比例尺下整个地图范围的地图切片的目录,即一个缓存的地图服务就是能够利用静态图片来快速地提供地图的服务。

优缺点

1)速度快,预先配色,显示效果佳,满足高并发访问,适合做底图。

2)瓦片地图缓存非常高效,如果你曾经查看过某一区域的瓦片,当你再次查看该区域的瓦片时,浏览器可能使用之前缓存的相同的瓦片,而不用重新下载一次。

3)瓦片地图可以渐进加载。中心区域的瓦片可能优先于边缘区域的瓦片加载,你可以移动或定位某一点,即使当前地图边缘区域还未加载。

4)简单易用。所以很容易在服务器、网络、桌面或移动设备上实现技术集成。

5)需要额外占用磁盘空间,需要预先生成切片,无法自定义地图。

原理

在进行切片之前首先要确定切图的起点(Tiling scheme origin point)、图片宽度和高度,设置起点(WGS84下默认是(-400,400))的目的在于保证同一坐标系下的切片地图可以完美的叠加在一起。

在默认的Tiling scheme origin下和图片大小的情况下进行地图切片,可以根据用户设置的比例尺来计算地图数据在整个网格中的行列号,计算公式如下:

col=(int)Math.floor((point.x1-this.x1)/256/plottingResolution);
row=(int)Math.floor((Math.abs(point.y1-this.y1))/256/plottingResolution);

其中point是当前坐标,this是origin点坐标,plottingResolution指当前Level的地图的地图分辨率。

如果要计算plottingResolution,可以根据用户输入的levelScale得到当前条件下的地图分辨率:

Scale=1:(96*2*Math.PI*6378137*resolution/360/0.0254);

主要概念

1) 四至(Extent)和原点(Origin)

2)切片的分辨率和比例尺

比例尺:图上一单位长度代表实际多少长度单位;分辨率:屏幕一像素(px)代表实际多少单位,实际单位按照地图坐标而定。分辨率与dpi(每英寸的像素数)有关、与地图单位有关。

两者之间的转换关系:

1、如果地图单位是米,dpi=96 1英寸=2.54厘米;1英寸=96像素;最终换算的单位是米;

Scale=1:(96*Resolution/0.0254);

2、如果地图单位是度(地理坐标系是WGS84),dpi为96,1度约等于111194.872221777米;

Scale=1:(96*2*Math.PI*6378137*Resolution/360/0.0254);

切片分类

1)矢量切片(详情)

是一种利用协议缓冲(Protocal Buffers)技术的紧凑的二进制格式用来传递信息。当渲染地图时矢量切片使用一系列存储的内部数据进行制图。被组织到矢量切片的图层比如(水、道路、区域等),每一层都有包含几何图形和可变属性的独立要素。通俗地讲,就是将矢量数据以建立金字塔的方式,像栅格切片那样分割成一个个描述性文件,以GeoJson格式或者PDF等自定义格式组织,然后在前端根据显示需要按需请求不同的矢量瓦片数据进行Web绘图

常见的格式有GeoJson、TopoJson、PDF(ArcGIS格式)、KML、GeoRSS等等。

2)栅格切片

注意事项

注意切片等级的设定,如果生成的级别太高,等待时间非常漫长。以ArcGIS Server切片服务为例,每一级相对上一级是 4 倍的关系,每一级是将上一级一个切片再分成大小一致的四个切片,也就是说每一级生成的切片数将是 4 的 n 次幂。

不同平台的切片方式

ArcGIS:ArcGIS Desktop、ArcGIS Server、ArcGIS API For JS/Flex

开源GIS:MapServer/GeoServer、Udig、PostGIS、openLayers

目录
相关文章
|
Java 定位技术 数据处理
windows下gdal的java开发环境搭建
本文介绍了gdal在windows环境下怎么搭建java开发,同时提供一个开发示例,通过输出gdal支持的数据驱动来演示其支持的数据类型,同时表明我们的环境搭建完成,可以基于java进行相应开发。
1859 0
windows下gdal的java开发环境搭建
|
3月前
|
人工智能 监控 安全
AI正在掏空程序员人才梯队:初级工程师没了,高级工程师从哪里来?
本文剖析AI对软件行业人才链的深层冲击:初级岗位首当其冲被替代,但真正危机在于“练级场”消失——简单任务原是新人理解系统、培养判断力的关键入口。AI接管执行,却无法传递经验。若企业只重短期效率、拒培新人,三五年后将面临高级人才断层。行业需重构培养模式:让新人早参与需求评审、AI审查、故障复盘,在真实项目中锤炼定义问题与评估结果的能力。
|
11月前
|
人工智能 Java API
Java Spring Boot 拥抱 AI 原生:从 API 调用到架构重构的进化之路
在AI时代,Java开发者需突破调用API的表层应用,以Spring Boot为基石,推动从“菜单驱动”到“意图驱动”的范式变革。通过构建智能体为核心、工具化封装Service、强化记忆与安全管控的四层架构,融合RAG、异步调度与全链路监控,实现AI原生应用的工程化落地。依托Spring生态的稳定性与可管理性,逐步演进现有系统,让Java在AI原生时代焕发新生。
594 8
|
移动开发 API 开发工具
uniapp如何与原生应用进行混合开发?
uniapp如何与原生应用进行混合开发?
1824 0
|
消息中间件 存储 负载均衡
C 语言多线程编程:并行处理的利剑
C语言多线程编程是实现并行处理的强大工具,通过创建和管理多个线程,可以显著提升程序执行效率,尤其在处理大量数据或复杂计算时效果显著。
1290 5
|
异构计算
【FPGA】Verilog 编码实现:与非门 | 或非门 | 异或门 | NAND/NOR/XOR 行为验证
【FPGA】Verilog 编码实现:与非门 | 或非门 | 异或门 | NAND/NOR/XOR 行为验证
3636 0
|
Java 关系型数据库 MySQL
基于Java的校园点餐系统的设计与实现(论文+源码)_kaic
基于Java的校园点餐系统的设计与实现(论文+源码)_kaic
|
人工智能 自然语言处理 安全
Gemini 人工智能:谷歌AI重磅来袭!好消息,国内可用
Gemini 是 Google 🧠 开发的革命性人工智能模型,旨在打造一个功能强大的多模态 AI 系统。
|
Kubernetes 负载均衡 应用服务中间件
部署一套完整的Kubernetes高可用集群(二进制,最新版v1.18)下
部署一套完整的Kubernetes高可用集群(二进制,最新版v1.18)下
部署一套完整的Kubernetes高可用集群(二进制,最新版v1.18)下