在ArcMap或各类前端地图框架(Leaflet.js、OpenLayers.js、ArcGIS Javascript等)中都需要加载WMTS或ArcGIS Rest服务,但所有的地图显示的原理基本上都是通过坐标和每张瓦片的分辨率来计算行列号的,但WMTS服务标准中其实是没有分辨率Resolution这个参数的,他只给出了比例尺“ScaleDenominator”这个值,需要用户根据这个比例尺自己计算出分辨率。(参考下图,为同一个瓦片服务的Rest服务和WMTS服务)

REST:http://basemap.nationalmap.gov/arcgis/rest/services/USGSTopo/MapServer

WMTS:https://basemap.nationalmap.gov/arcgis/rest/services/USGSTopo/MapServer/WMTS/1.0.0/WMTSCapabilities.xml

但在ArcGIS Rest服务中你会发现服务的Lod信息里是同时给出了比例尺“Scale”和分辨率“Resolution”值了的。有心读者读到这里和看到下面的图片时,应该会有两个疑惑。

  1. Resolution和Scale的计算公式是什么?
  2. 为什么同一份已经切好了的瓦片,在ArcGIS Rest服务和WMTS服务的比例尺不一样?

一、Scale和 Resolution的计算公示

案例一:如果地图的坐标单位是米,dpi为96

参考: https://blog.csdn.net/redsky200905/article/details/84369213

1英寸=2.54厘米;

1英寸=96像素;

最终换算的单位是米;

如果当前地图比例尺为1:125000000,则代表图上1米实地125000000米;

米和像素间的换算公式:

1英寸=0.0254米=96像素

1像素=0.0254/96 米

则根据1:125000000比例尺,图上1像素代表实地距离是 125000000*0.0254/96 = 33072.9166666667米。

以上图第0级为例,比例尺为 Scale=591657527.591555,Resolution=156543.03392800014

591657527.591555*0.0254/96 =156,542.7208419323

591657527.591555*0.0254000508/96 =156,543.0339273739

我们这个换算结果和切片的结果略微有0.07米的误差。这个误差产生的原因是英寸换算厘米的参数决定的,server使用的换算参数1英寸约等于0.0254000508米。

关于1英寸单位换算有以下文献说明

参考:http://scienceworld.wolfram.com/physics/Inch.html

An nonmetric unit of length, originally defined as the lengths of three "average size" barleycorns laid end-to-end, but now more rationally defined as 2.54 cm. An older definition no longer used was 1 meter= 39.37 inches, giving 2.54000508 cm/inch.

12 inches are called 1 foot.

案例二:如果地理坐标系是wgs84,地图的单位是度,dpi为96

Server中度和米之间的换算参数: 1 度约等于 111194.872221777 米

接下来就需要进行度和像素间的换算:

当比例尺为1:64000000米时,相当于1像素 = 64000000*0.0254000508/96 = 16933.3672米,再将米转换为度 16933.3672/ 111194.872221777 = 0.1522855043731385 度

因此当地图单位为度时,近似计算在1:64000000 对应的Resolution为0.1522855043731385度。

二、WMTS服务中的Scale和ArcGIS Rest服务中不一样的原因

最核心的原因是因为DPI计算方式不一样!!!

WMTS assumes a DPI 90.7 instead of 96 as is clearly documented in the WMTSCapabilities document which states,

"The tile matrix set that has scale values calculated based on the dpi defined by OGC specification (dpi assumes 0.28mm as the physical distance of a pixel)."

0.28 mm per pixel = 0.0110236 inches per pixel or 90.71446714322 pixels per inch.

If you replace 96 in the equation above with 90.71428571429 you'll get the ScaleDenominator value so ESRI used a different conversion constant. After a little research I learned that

        1 in = 2.54 cm (I thought this was an approximation but it's by definition)

Since there are 25.4 mm in one inch then 25.4 / .28 = 90.71428571429 DPI which is the value we're after for DPI. Here is a site which confirms this calculation.

继续以第一图为例:

559082264.0285016 * 0.00028 = 156,543.0339279804,这样计算的结果就和ArcGIS Rest中的差不多保持一致了。

参考文献:

https://blog.csdn.net/redsky200905/article/details/84369213

https://gis.stackexchange.com/questions/123195/why-are-rest-lod-scales-different-to-the-wmts-capabilities-xml

https://gis.stackexchange.com/questions/29671/mathematics-behind-converting-scale-to-resolution/29733#29733

关于GIS中Scale和Resolution的那些事儿的更多相关文章

  1. Scale和Resolution的含义及转换算法

    当我们在用arcgis server 构建切片时,我们会发现在缓存生成的conf.xml中有这样的片段: 在上述片段中<LODInfo>代表了每一级切片的信息,<LevelID> ...

  2. (转) GIS 中地理坐标和屏幕坐标的标准转换方法

    from :http://www.cnblogs.com/WonKerr/archive/2010/01/01/Coord_Transform.html 在GIS中,当你拿到一个图层的地理坐标后,如果 ...

  3. 地图四叉树一般用在GIS中,在游戏寻路中2D游戏中一般用2维数组就够了

    地图四叉树一般用在GIS中,在游戏寻路中2D游戏中一般用2维数组就够了 四叉树对于区域查询,效率比较高. 原理图

  4. GIS中相交的定义(OGC相交的定义)

    我们常用GIS中的相交,比如在地图漫游的时候,屏幕显示的图形和屏幕这个包络线就是相交的关系.我们常用的GIS工具,拉框查询,这个用到的也是相交. 首先题目开起来很简单(开始的时候我是这样想的),但是做 ...

  5. 浅谈设计模式在GIS中的应用

    设计模式在GIS中的应用 一.设计模式概述 随着面向对象技术的广泛应用,软件复用在越来越多的开发工程中被采用.在研究软件复用的过程中,设计模式的概念被提了出来.所谓设计模式就是一些设计面向对象的软件的 ...

  6. GIS中的引擎:地图引擎

    什么是地图引擎?它和地图软件有什么区别? 引擎一词是英文单词engine的音译,通常指发动机,就是动力输出设备.诸如汽车.轮船.飞机的动力提供的核心设备就是引擎.IT领域中,常听说的有搜索引擎.图形引 ...

  7. GIS中栅格数据结构的显示与计算

    在GIS中,根据数据存储的表现形式不同,通常将空间数据分为矢量数据和栅格数据.最简单的区别是:当栅格数据放大到一定程度时,就会呈现出我们熟悉的讨厌的"马赛克". 栅格数据存储 最简 ...

  8. GIS中的数据库.gdb与.mdb的区别

    gdb是文件地理数据库,mdb是个人地理数据库,都是数据库文件类型. 个人地理数据库,是以access数据库为基础的个人将数据库格式mdb,可以存储不超过2G的文件,只适合Windows系统下: 文件 ...

  9. GIS中的空间参考

    GIS一般都是研究的基于地球的某个区域,例如一个国家.省或市的情况,既然地球上都有经纬度来标识,那么直接用经纬度来标识物体的位置不可以吗?但如果应用不一样,在实际中选择的空间参考系也是不一样的.例如我 ...

随机推荐

  1. Vue的基本使用(四)

    1.refs属性的使用 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset= ...

  2. C#编程之接口

    1.定义 接口是把公共方法和属性组合起来,以封装特定功能的一个集合.(一旦定义了接口,就可以在类中实现它.这样类就可以支持接口所指定的所有属性和成员) 注意1:接口不能单独存在.不能像实例化一个类那样 ...

  3. linux初学者-磁盘阵列篇

    linux初学者-磁盘阵列篇 在磁盘的使用中,有时候需要提高磁盘的读写数据速度,就要用到磁盘组——raid,也就是磁盘阵列. 磁盘阵列是由最少两块以上的磁盘组成的,raid有许多模式,在这里将介绍其中 ...

  4. spark 源码分析之六--Spark RPC剖析之Dispatcher和Inbox、Outbox剖析

    在上篇 spark 源码分析之五 -- Spark内置RPC机制剖析之一创建NettyRPCEnv 中,涉及到了Diapatcher 内容,未做过多的剖析.本篇来剖析一下它的工作原理. Dispatc ...

  5. XTTS系列之一:U2L迁移解决方案之XTTS的使用

    本系列的定位是对XTTS及相关技术进行深入的学习研究.作为本系列的开篇,本着实用性的原则,我先把一次实际生产环境U2L的迁移实战实施方案进行提炼简化,旨在能清楚说明该如何使用XTTS这种解决方案来进行 ...

  6. 2019牛客暑期多校训练营(第四场)J-free

    >传送门< 题意:给你n个城市,m条道路,经过每一条要花费这条路的代价,现给你k个机会,使得最多k条路的代价为0,问从起点s到终点t花费的最少代价 思路:分层图最短路经典裸题 方法一 Co ...

  7. springBoot-mongodb

    作者:纯洁的微笑出处:http://www.ityouknow.com/ 版权归作者所有,转载请注明出处 mongodb是最早热门非关系数据库的之一,使用也比较普遍,一般会用做离线数据分析来使用,放到 ...

  8. SpringBoot底层原理及分析

    一,Spring Boot简介 1.什么是Spring Boot: SpringBoot是由Pivotal团队提供的框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程. 该框架使用了特 ...

  9. Find out "Who" and "Where"

    Yesterday a friend of mine Kirby came to me with a smartphone and she wanted me to do her a favor. S ...

  10. 刷脸即可解锁让iDevice取证不再难如登天

    最近有则取证相关的消息,链接如下,光看标题便知道与Apple的Face ID有关. https://www.cnet.com/news/fbi-unlocked-an-iphone-x-by-forc ...