GIS硬核入门,二维地图是如何使用WGS84坐标系来转换成墨卡托投影的xyz地图瓦片切片的详细原理

前言

二维地图一般分成两种,一种是简化的道路地图视图,一种是卫星拍摄的高清影像地图。

四种坐标概念理解:

  1. 经度和纬度,对应地球上唯一的一个点(例如:Google 使用世界大地测量系统 WGS84 标准)。
    经纬度理解可以参考:《GIS入门,经纬度和坐标系详解,什么是经纬度?经纬度有哪些坐标系?常见的地图应用中都使用哪些坐标系?天地图百度高德谷歌分别使用哪些坐标系?OpenLayers使用什么坐标系?》
  2. 世界坐标,对应地图上唯一的一个点。
  3. 像素坐标,对应特定缩放级别地图上的特定像素。
  4. 图块坐标,对应特定缩放级别地图上的特定图块。

墨卡托投影法

墨卡托投影法是一种常用的地图投影方法,它将地球表面上的经纬度坐标系统投影到平面上。这种投影方法由德国地理学家墨卡托(Gerardus Mercator)于16世纪中期开发。

其他投影法的扩展知识请参考:《GIS入门,什么是地图投影,地图投影有哪些类型,墨卡托投影属于哪一种类型的投影,为什么OpenLayers地图默认使用墨卡托投影》

墨卡托投影的主要特点是保持航向不变性,也就是说,直线在地图上仍然是直线,并且在航海时非常实用,因为船只可以在地图上以恒定的航向行驶。但是,由于墨卡托投影在投影过程中产生了区域失真,即赤道附近地区的面积被夸大,远离赤道的地区则被压缩,因此并不适合用于显示极地地区。

尽管墨卡托投影存在这种失真,但它仍然被广泛应用于航海、航空、导航以及一般的地图制作中,因为其简单易用和航向保持的特性。

世界坐标与墨卡托投影的关系

地图中的世界坐标是以墨卡托投影的原点(即地图西北角,经度为 180 度,纬度约 85 度)为起点测量的,在 x 轴上向东(右)递增,在 y 轴上向南(下)递增。
由于基础的墨卡托地图图块为 256 x 256 像素。因此,可用的世界坐标空间为 {0-256}, {0-256}
坐标

墨卡托投影法在经度方向上的宽度有限,但在纬度方向上的高度无限。利用墨卡托投影法在大约 +/-85 度处将基本地图图像截断,使制作出的地图呈方形,从而简化图块选择逻辑。
缺点是离极点非常近的地方绘制时,投影生成世界坐标可能在基本地图的可用坐标空间之外。

经纬度转换为世界坐标

真实世界中的位置转换为地图上的位置时,都需要将经度和纬度使用墨卡托投影法转换为世界坐标。

为便于计算像素坐标(见下文),我们假定地图在缩放级别为 0 时只包含一个基础尺寸的图块。然后,我们在缩放级别 0 定义像素坐标对应的世界坐标,使用投影将纬度和经度转换为此基础图块上的像素位置。该世界坐标是从地图投影原点到特定位置测量的浮点值。请注意,由于该值为浮点值,因此可能远比显示的地图图像的当前分辨率精确。换言之,世界坐标与当前缩放级别无关。

像素坐标

像素坐标对应特定缩放级别地图上的特定像素世界坐标是地图中指定投影上的绝对位置

像素坐标采用以下公式进行计算:

pixelCoordinate = worldCoordinate * 2zoomLevel

根据上述公式,缩放级别每增大一级,xy 轴上的尺度均会翻倍,因此分辨率将是前一个级别的四倍。
例如,在缩放级别 1,地图包含 4256x256 像素图块,因此像素空间为 512x512。在缩放级别 19,地图上的每个 xy 像素可使用 0 到 256 * 219 之间的值来定位。

世界坐标建立在地图的图块大小基础之上。因此,像素坐标整数部分的作用是标识该位置在当前缩放级别下的确切像素。

注意,对于缩放级别 0,像素坐标等于世界坐标。

于是就可以使用像素坐标在每个缩放级别精确表示地图上的每个位置。
地图引擎会根据指定的地图中心点(采用 经纬度 形式)缩放级别和外围 DOM 元素的大小来构造视图,并将此边界框转换为像素坐标。
然后,从逻辑上确定位于指定像素边界内的所有地图图块。每个地图图块均使用图块坐标来定位,该坐标大大简化了地图图像的显示。

图块坐标

对于较高的缩放级别,地图引擎无法一次加载所有地图图像。
地图引擎将各缩放级别的图像分解成一组在逻辑上以便于应用理解的顺序排列的地图瓦片(金字塔结构的图块)。当地图移动(滚动)至新位置,或者切换到新的缩放级别时,地图引擎会使用像素坐标确定需要哪些图块,然后将这些值转换为需要检索的一组图块。这些图块坐标采用特殊的分配架构,使得在逻辑上更容易确定哪个图块包含指定位置点的图像。

地图中的图块从与像素原点相同的位置开始编号。为了便于地图引擎实现墨卡托投影法,原点图块始终位于地图的西北角,x 值从西向东增加,y 值从北向南增加。系统使用基于该原点的 x,y 坐标为图块建立索引。例如,缩放级别为 2 时,地球分成 16 个图块,每个图块都可通过唯一的 x,y 来定位。

分为四行和四列图块的世界地图。
图块
通过将像素坐标除以图块大小 (256) 并取结果的整数部分,可以生成当前缩放级别的图块坐标。

如此便构成了最常用的xyz瓦片地图格式,更多xyz瓦片地图知识请参考:《GIS入门,xyz地图瓦片是什么,xyz数据格式详解,如何发布离线XYZ瓦片到nginx或者tomcat中》

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Day49:WEB攻防-文件上传存储安全OSS对象分站解析安全解码还原目录执行

目录 文件-解析方案-目录执行权限&解码还原 目录执行权限 解码还原 文件-存储方案-分站存储&OSS对象 分站存储 OSS对象存储 知识点: 1、文件上传-安全解析方案-目录权限&解码还原 2、文件上传-安全存储方案-分站存储&OSS对象 文件-解析方案-目…

数据结构之二叉树由浅入深(四)

目录 题外话 正题 第一题 第一题思路 第一题代码详解 第二题 第二题思路 第二题代码详解 第三题 第三题思路 第三题代码及详解 第四题 第四题思路 第四题代码及详解 第五题 第五题思路 第五题代码及详解 题外话 本来昨天就想写完这篇文章,怎么样是不是很大胆?…

ttkbootstrap界面美化系列之Notebook(四)

在简单的界面设计中,Notebook也是常用的组件之一,Notebook组件的引入可以根据标签来切换不同的界面。使得界面更有层次感,不必都挤在一个界面上。在tkinter中就有Notebook组件,在ttkbootstrap中,同样也对Notebook进行了…

Flutter开发之objectbox

Flutter开发之objectbox 在之前进行iOS开发的时候使用WCDB去进行管理数据库很方便,它支持ORM(Object-Relational Mapping,对象关系映射),用于实现面向对象编程语言里不同类型系统的数据之间的转换。 那么在Flutter开发…

d3dcompiler_43.dll丢失的解决方法,快速解决win10系统错误问题

当系统提示“d3dcompiler_43.dll缺失”时,意味着计算机中缺少这一关键性动态链接库文件。该文件作为DirectX 3D编译器组件的一部分,对于许多依赖于DirectX技术的应用程序或游戏至关重要。这个错误通常会导致游戏或应用程序无法正常运行。为了解决这个问题…

java Web洗衣店管理系统用eclipse定制开发mysql数据库BS模式java编程jdbc

一、源码特点 JSP 洗衣店管理系统是一套完善的web设计系统,对理解JSP java 编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,eclipse开发,数据库为Mysql5.0,使用…

记一次dubbo provider获取不到dubbo.tag问题排查

1. 背景 项目里通过dubbo.taggray传递灰度标,但是上游consumer已经在attachment里面设置dubbo.gray了,下游却拿不到 2. 排查过程 2.1. 前提 先把源码下载下来,方便排查 详细可见:tps://blog.csdn.net/qq_26012495/article/det…

9、jenkins微服务持续集成(一)

文章目录 一、流程说明二、源码概述三、本地部署3.1 SpringCloud微服务部署本地运行微服务本地部署微服务3.2 静态Web前端部署四、Docker快速入门一、流程说明 Jenkins+Docker+SpringCloud持续集成流程说明 大致流程说明: 开发人员每天把代码提交到Gitlab代码仓库Jenkins从G…

烟草行业率先布局新质生产力,中国烟草11省40家公司已上线实在Agent数字员工

为了更好赋能烟草行业数智化转型发展需求,各地烟草集团公司都开始陆续展开数智化赋能培训。近日,杭州烟草临安分公司举办“人工智能作为企业新质生产力发展的落地探索”论坛会议,实在智能受邀出席,聚焦“TARS大模型及实在Agent数字…

武汉星起航:引领跨境电商新潮流,一站式服务助合作伙伴成功起航

武汉星起航电子商务有限公司是一家集自营亚马逊跨境电商与亚马逊卖家孵化服务于一体的公司。在创始人张振邦先生的引领下,公司凭借深厚的电子商务运营经验和对行业的深刻洞察,积极响应国家大力发展跨境电商行业的号召,为刚起步和未起步的合作…

vue3封装Element表格自适应

表格高度自适应 分页跟随表格之后 1. 满屏时出现滚动条 2. 不满屏时不显示滚动条 坑 表格设置maxHeight后不出现滚动条 解决方案 表格外层元素设置max-height el-table–fit 设置高度100% .table-box {max-height: calc(100% - 120px); } .el-table--fit {height: 100%; }示例代…

会声会影剪刀为什么灰色 会声会影分割素材的方法 会声会影视频制作教程 会声会影2023旗舰版下载 会声会影快捷键

会声会影是一款操作简单,功能齐全,适合新手使用的视频剪辑软件。在使用会声会影剪辑的过程中,我们一般需要使用【剪刀工具】,但有时会声会影剪刀是灰色无法使用的状态,这个时候该怎么办呢?本文将为大家介绍…

pytest--python的一种测试框架--简介

一、什么是接口测试 接口测试是软件测试的一种类型,用于验证不同软件系统之间的接口是否按照设计规范进行通信和交互。接口测试通常涉及以下方面: 功能性验证:确认接口按照规范执行预期的功能。 性能测试:验证接口在不同负载条…

木地板 VS 瓷砖,不同风格应该怎么选?福州中宅装饰,福州装修

不同装修风格应该怎么选择地板铺贴材质?是选择木地板还是瓷砖?以下分点阐述: ①现代简约风格 推荐使用瓷砖。因为瓷砖的表面光滑,能反射出灯光的倒影,营造出简洁明亮的视觉效果。同时,瓷砖耐磨、易清洁&am…

CNN卷积神经网络股票价格预测

部分代码: %% 清空环境变量 warning off % 关闭报警信息 close all % 关闭开启的图窗 clear % 清空变量 clc % 清空命令行 %% 重构数据 data_Trend xlsread("dataguOne.xlsx") dT …

idea-创建java8的springboot项目

现在使用IDEA创建 Spring Boot 项目,jdk 版本最低要求为 17。Spring Boot 官方在全力维护 3.x 版本,而 Spring Boot 3.x 对 jdk 版本的最低要求为17。 如果需要继续使用 jdk8,则需要修改 Server URL ,改成:https://st…

electron的学习基础汇总

通过学习electron了解一下做项目中好奇的问题,我觉得下面这张图就可以说明一切了,就是在初次创建并显示主窗口后,一切都将建立在渲染进程和主进程的通信上,而用的技术就是ipcMain和ipcRender,那么渲染进程如何与主进程…

X-Bogus逆向分析(纯算+补环境)

声明 本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 前言 此平台 本人 仅限…

储能逆变器测试负载箱解决方案

储能逆变器是新能源领域的重要设备,其性能的优劣直接影响到整个系统的运行效率和稳定性。因此,对储能逆变器进行严格的测试和验证是保证其性能的关键步骤。在这个过程中,负载箱是必不可少的工具,它可以模拟真实的负载条件&#xf…

JUC并发编程——对于synchronized关键字的理解

现象🔍: 两个线程对初始值为 0 的静态变量一个做自增,一个做自减,各做 5000 次,最后输出的 counter一定为0 吗? Slf4j(topic "c.Test17") public class Test17 {static int counter 0;public…