新普金娱乐网址


因百度地图SDK记录运动轨迹

PhoneGap & Cordova 设置白皮书

墨卡托影、地理坐标系、地面分辨率、地图比例尺

  • 十月 08, 2018
  • 地理
  • 没有评论

米及诸如素间的折算公式:

图片 1
图片 2

  Resolution和Scale的变换算法

图 3                                                    图 4

  墨卡托投影以整个世界范围,赤道作为标准纬线,本初子午线作为中央经线,两者交点为坐标原点,向东向北为正,向西往南方也因。南北极于地图的正下、上方,而东西方向处于地图的正右、左。

1:1万 对应   2.645833分辨率

图片 3

  仍旧为谷歌地图也条例:当地图处于全幅状态时,上下移动地图,使得地图中心线处纬度发生变化,因此比例尺随之转移;同理,当地图处于不同的缩放级别时,地图比例尺同样也会发生变化。如图1
和图2,纬度以及缩放级别之转引起了比例尺的别。注意:视图下之比例尺一般仰仗中心点的比例尺。

  已解一个像素的XY坐标值时,我们蛮容易取得此像素所在的Tile的XY坐标值:

  于GIS中所关联的 分辨率,也如地方分辨率(Ground
Resolution)或空中分辨率(Spatial
Resolution),表示一个像素(pixel)代表的地方实际距离。
以谷歌地图为条例:在缩放级别也 1 时,图片大小为4只 256*256
的图形,那么赤道上之上空分辨率为:地球赤道周长(实地去)除以256*2(像从大小)。其他纬度上之分辨率则也:纬度绕长度/512。
因此可以看看,分辨率取决于两个参数,纬度以及缩放级别,缩放级别决定了例如从的有些,纬度决定了当地距离的尺寸。
因此谷歌地图某视图下的分辨率计算公式为(单位:米/像素):

           1英寸=96像素;

图片 4

ground resolution = (cos(latitude * pi/180) * 2 * pi * 6378137
meters) / (256 * 2level pixels)

ps: 文章介绍地图和图层中都关涉的分辨率和比例尺的定义、关系以及分。

  下面是微软Bing Maps的TileSystem相关算法:

  而分辨率可未曾变化,因为拖欠级别下,赤道周长还没有换,图片为还是
512*512 像素,因此能够分辨率和屏幕分辨率没有涉及。

           1英寸=0.0254米=96像素

X:纬度值;

           Server中度和米之间的折算参数:

图片 5

85.05112877980659 = (math.atan(math.exp(aa / earthRadius))-math.pi/4)*2
* 180 / math.pi

  但图3和图4相比,上下运动地图时,地图比例尺并未发生变化。这是由缩放级别比较生时,即地图处较充分比例尺状态,地图上下运动,所导致的纬度变化挺小,因此比例尺就着力相当。

  由于赤道半径为6378137米,则赤道周长也2*PI*r =
20037508.3427892,因此X轴的取值范围:[-20037508.3427892,20037508.3427892]。当纬度φ接近两极,即90°时,Y值趋向于无穷。因此便将Y轴的取值范围吗限制在[-20037508.3427892,20037508.3427892]以内。因此当墨卡托影坐标系(米)下之坐标范围是:最小为(-20037508.3427892,
-20037508.3427892 )到绝酷 坐标为(20037508.3427892, 20037508.3427892)。

90分辨率 对应  1:340157.5

搭下去就是待进行度和如素间的折算:

图片 6

五、Bing Maps像从坐标系和地图图片编码

正文:  

  为了优化地图网特性,提高地图下载和显示速度,所有地图还吃细分成256
x
256像从大小的正方形小片。由于在每个放大级别下之像素数量都未均等,因此地图图片(Tile)的数量也非雷同。每个tile都发生一个XY坐标值,从左上角的(0,
0)至右下角的(2^level–1,
2^level–1)。例如在3级放大级别下,所有tile的坐标值范围也(0, 0)至(7,
7),如下图:

R:常量 6378137,表示地球半径,单位:米。


1:5万 对应   13.22917分辨率

20037508.3427892 = earthRadius * (math.pi – 0)

图片 7
图片 8

quadkey = 100111(二进制) = 213(四进制) = “213”

1像从宽度 /
2.5米=1/96*25.4/1000/2.5=1/9448.82,所以可以用来做1:10000底数额

tileX = floor(pixelX / 256) tileY = floor(pixelY / 256)

PPI:每英寸的如素点数。

每当这边,<Scale>代表比例尺。比例尺是意味图上偏离比实地离开缩小的水准,也叫缩尺。公式为:比例尺=图上离/实地去。用数字的比例式或分数式表示比例尺的轻重缓急。例如地图及1厘米代表的去500千米,可写成:1∶50,000,000还是摹写成:1/50,000,000。

F(X,Y):地图分辨率;

           1英寸= 2.54厘米;

1:2千 对应 0.52917分辨率

征结果:

1像素=1/96*25.4/1000米

图片 9

单位换算

用地方图单位为过时,近似计算在1:64000000
对应的Resolution为0.1522855043731385度

  由于比例尺和分辨率一一对应,因此比例尺也有赖于纬度以及缩放级别两独参数,并且还跟
PPI 相关。

  地理经度的取值范围是[-180,180],纬度不可能达90°,通过纬度取值范围为[20037508.3427892,20037508.3427892]相反计算而获得纬度值吗85.05112877980659。因此纬度取值范围是[-85.05112877980659,85.05112877980659]。因此,地理坐标系(经纬度)对应之限量是:最小地理坐标(-180,-85.05112877980659),最要命地理坐标(180,
85.05112877980659)。

  另外,在 WMS 参数中来 bbox、height 和 width
这三独参数可唯一确定所请的地理视图范围以及缩放级别。bbox
指可视的地理范围,由4单境界值可确定中心点,而 bbox
的宽窄(实地去)除以 width(图片距离)即凡
Resolution(分辨率)。但是从未 PPI,是勿可知确定 Scale
(比例尺)的。换句话说,由 Resolution、Center、Width、Height
可唯一确定有可视范围,但就来 Sclae、Center、Width、Height
却无法确定。而在运用 SuperMap 服务器提供的服务时,由 Sclae、Center
参数(宽和高一般都有默认值)可确定唯一的可视范围。这中的来头是,SuperMap
服务器默认使用了出图服务器的PPI。有经历的用户会发现,在变更了出图服务器的分辨率时,用平等的
Sclae、Center 请求的图也是勿一样的。

earthRadius =6378137

图片 10

map scale = 1 : ground resolution * screen dpi / 0.0254 meters/inch

图片 11

图片 12

QuickBird(快鸟)由美国Digital
Globe公司发射卫星,最酷分辨率0.61米,换算为比例尺,1/96*25.4/1000/0.61=1/2305
可以为此来举行1:2000数目。

GIS辩论(墨卡托投影、地理坐标系、地面分辨率、地图比例尺、Bing
Maps Tile System)

Y:缩放级别;


率先了解一下英寸是单位,英寸是一个生独特的单位,在咱们电子产品横行之一世,丈量电子产品的长度、宽度从来没说是多少米来进展计数的,都是以英寸为单位,比如我之笔记本电脑15.4寸、手机屏幕宽度3.5寸。还有即使是这尺寸一般仰仗的是指向角线的尺寸。如图:

 

  如果 SueperMap iClient 产品之后台服务器产品选择 SuperMap
系列服务器产品,建议下 Map 与 Layer 中之比例尺相关属性(比如
Scale、Scales 等),因为 SuperMap 服务器直接提供了有关地图的比例尺功能。
如果后台服务器产品并从未一直提供比例尺,或者是在 WMS
这仿佛标准服务遭遇无涉嫌比例尺参数的情形下,建议选择分辨率属性(比如
Resolution、Resolutions 等)。
这是盖比例尺与用户屏幕相关的,而分辨率则是风马牛不相及的。图5和图1展示的地图是同一级别,却形了不同的比例尺。原因就是在于有限轴图自之用户电脑屏幕分辨率不同。而屏幕分辨率的例外造成了了
PPI 的成形,从计算比例尺的公式可以望,比例尺必然发生变化。

groundResolution(1 level)  = (20037508.3427892 * 2) / 512 =
78271.516964

Resolution:地图分辨率;

季、地图比例尺(Map Scale)

30分辨率 对应  1:113385.8

图片 13

现在咱们就用一个Spot的影像来拘禁一下针对性许多格外比例尺的地图。SPOT是法国卫星2001年底发射升空,2002年新正式运营
,分辨率最高而达成2.5米 。

image = 512 * 512

而是影像图都是经过分辨率来讲述精度。那么到底分辨率和比例尺如何来展开折算为?或者影像图和矢量地图进行配套下的时候,如何来配套分辨率和比例尺呢?下面我们来拘禁一下一个简便的折算方法:

  最低地图放大级别(1级),地图是512 x
512诸如从。每下一个拓宽级别,地图的万丈及增幅分别就于2:2级凡是1024 x
1024像素,3级凡是2048 x 2048如从,4级是4096 x
4096像从,等等。通常而言,地图的增幅与冲天可以由以下式子计算得到:map
width = map height = 256 * 2^level pixels

  比例尺,通常为率(如 1:10000
)来代表,表示图及相差及的去的比。例如 1:10000 表示图及 1cm
代表实际距离 10000cm,即100米。
由于比例尺来较早,通常用(纸质)图上的去衡量实际距离;而分辨率则通常用装备屏幕上的相距来衡量实际距离。而跟一个地图视图,尺度是绝无仅有的,比例尺和分辨率只不过是个别种表示方法,因此它们是各个对应之。
比例尺与分辨率之间的折算公式如下:

本地分辨率的公式为,单位:米/像素:

Scale:地图比例尺;

当我们于拓展Web
API的付出时,经常会面遇到根据Resolution来缩放地图的情状。但是其实要求面临我们还亟待根据Scale来缩放,因此就涉及到Scale和Resolution的更换。

测绘部门对DLG数据还是经过比例尺来区别数据的精度。通常将1:500、1:1000、1:2000与l:5000于例尺地形图称为杀比例尺地形图。1:1万、1:2.5万、1:5万、1:10万的图称为被比重尺图。1:20万、1:50万、1:100万底图称作为小比例尺图。在工程建设中常要因此到是那个比例尺地形图;在城、乡镇建设的规划被一般用着比例尺的地势图;在比充分范围外之母评估以及研讨用略比例尺的地貌图。

举例:

1米=1000/25.4=39.37英寸

图片 14

1英寸=96像从(一般的屏幕比例尺)

当比例尺为1:64000000米时,相当给1如素 = 64000000*0.0254000508/96 =
16933.3672米

图片 15

mapScale = groundResolution * 96 / 0.0254 = 295829355.455

1像从宽度 / 2.5米

苟手上地图比例尺为1: 125000000,则象征图上1米的125000000米;

本还无克由此这种公式换算直接以分辨率和比例尺地图画等号。毕竟还有多的元素促成相当号并无树立。比如屏幕比例尺、影像图每一个职分辨率等等都非自然是固定值。一般情形下通过分辨率计算出来的百分比尺值会油然而生偏大之场面。所以只提供一个开始估价的思绪才供参考,如产生不妥,敬请指正。

 

图 1                                                    图 2

  比例尺= 1 : (cos(latitude * pi/180) * 2 * pi * 6378137 * screen
dpi) / (256 * 2level * 0.0254)

换算为比例尺,

缩放级别

地图宽度、高度(像素)

地面分辨率(米/像素)

地图比例尺(以96dpi为例)

1

512

78,271.5170

1 : 295,829,355.45

2

1,024

39,135.7585

1 : 147,914,677.73

3

2,048

19,567.8792

1 : 73,957,338.86

4

4,096

9,783.9396

1 : 36,978,669.43

5

8,192

4,891.9698

1 : 18,489,334.72

6

16,384

2,445.9849

1 : 9,244,667.36

7

32,768

1,222.9925

1 : 4,622,333.68

8

65,536

611.4962

1 : 2,311,166.84

9

131,072

305.7481

1 : 1,155,583.42

10

262,144

152.8741

1 : 577,791.71

11

524,288

76.4370

1 : 288,895.85

12

1,048,576

38.2185

1 : 144,447.93

13

2,097,152

19.1093

1 : 72,223.96

14

4,194,304

9.5546

1 : 36,111.98

15

8,388,608

4.7773

1 : 18,055.99

16

16,777,216

2.3887

1 : 9,028.00

17

33,554,432

1.1943

1 : 4,514.00

18

67,108,864

0.5972

1 : 2,257.00

19

134,217,728

0.2986

1 : 1,128.50

20

268,435,456

0.1493

1 : 564.25

21

536,870,912

0.0746

1 : 282.12

22

1,073,741,824

0.0373

1 : 141.06

23

2,147,483,648

0.0187

1 : 70.53

1英寸(inch)=25.4mm

次、地理坐标系(Geographical coordinates)

  那么,在 SueperMap iClient 产品中 Map 和 Layer
对象又兼有比例尺和分辨率属性,该怎么进行分选吗?

当我们当为此arcgis server
构建切片时,我们会发觉在缓存生成的conf.xml中产生诸如此类的有:

  地理气象以及地理要素的抒发通常是大抵规格的,尺度表示了地物的概括水平及岗位精度,衡量标准之概念一般用分辨率或比例尺。

球中心有雷同盏灯,把球面上之图纸投影到圆柱体上,再管圆柱体展开,这虽是如出一辙幅标准纬线为零度(即赤道)的“墨卡托投影”绘制出之世界地图。

http://support.supermap.com.cn/DataWarehouse/WebDocHelp/6.1.1/iServerJavaOnlineHelp/mergedProjects/sl/G\_MapAndLayer/L\_ResolutionAndScale.html

Resolution跟dpi有关,跟地图的单位关于。(dpi代表各英寸的比如说素数)

  其中 PPI,即 Pixel per
Inch,即每英寸的诸如素点数(在非混淆情况下,也闹因此 DPI
来表示该参数)。0.0254 为英寸和米之换常数。

double resolution = scale * 0.0254000508/96/111194.872221777;

贪图 5 不同屏幕分辨率下之截图

  地面分辨率和地图比例尺之间的干:

map scale = 256 * 2level / screen dpi / 0.0254 / (cos(latitude *
pi/180) * 2 * pi * 6378137)

图片 16

  为了简化索引和存储地图图片,每个tile的二维XY值被移成为一维字串,即四交树键值(quardtree
key,简称quadkey)。每个quadkey独立对应某个放大级别下之一个tile,并且它可为用作数据库中B-tree索引值。为了用坐标值转换成quadkey,需要拿Y和X坐标二前行制值交错组合,并转移成4上前制值及相应的字符串。例如,假而于放级别也3时,tile的XY坐标值为(3,5),quadkey计算如下:

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

tileY = 5 = 101(二进制)

screendpi = 96


老三、地面分辨率(Ground Resolution)

  墨卡托投影(Mercator
Projection),又称为“等比赛正轴圆柱投影”,荷兰地图学家墨卡托(Mercator)在1569年拟订,假设地球被圈以一个空心的圆柱里,其赤道与圆柱相接触,然后再度借用想地

           1像素=0.0254/96 米

  <Resolution>,代表分辨率。Resolution
的其实意义代表时地图范围外,1像素代表有些地图单位(X地图单位/像素),地图单位在数量我的长空参考。

尽管因1:125000000较例尺,图及1像素代表的去是125000000*0.0254/96 =
33072.9166666667米。我们以此换算结果和片的结果小有0.07米之误差。这个误差产生的故是英寸换算厘米的参数决定的,server使用的折算参数1英寸约等于0.0254000508米。

  地图比例尺是凭测量相同目标时,地图上偏离及实际距离的比重。通过地图分辨率在计算可知由Level可收获图片的像素大小,那么要拿其变为坐米为单位之距离,涉及到DPI(dot
per inch),暂时可知晓吧接近之PPI(pixel per
inch),即各级英寸代表有点只像素。256 * 2level / DPI
即获相应的英寸inch,再把英寸inch除以0.0254变换为米。实地去还是:cos(latitude
* pi/180) * 2 * pi * 6378137 meters; 因此比例尺的公式为:

Quadkey还出其它部分有趣的特征。第一,quadkey的长等该tile所对应之放级别;第二,每个tile的quadkey的前头几乎位以及那父tile(上一样放大级别所对应的tile)的quadkey相同,下图中,tile
2是tile 20交23底父tile,tile 13是tile 130到133的父级:


  由于Mercator
Projection在两极附近是趋于无限值得,因此它们并没完全呈现了全部社会风气,地图及高纬度是85.05度。为了简化计算,我们下球形映射,而未是椭球体形状。虽然采取Mercator
Projection只是为了有利于展示地图,需要理解之是,这种映射会给Y轴方向带来0.33%底误差。

  最后,quadkey提供的同等维索引值通常显示了区区个tile在XY坐标系中之相似性。换句话说,两单相邻的tile对应之quadkey非常相近。这对优化数据库的性能好重大,因为隔壁之tile通常给以请求显示,因此可以以这些tile存放在同样之磁盘区域被,以缩减磁盘的读取次数。

末段换算的单位是米;

平、墨卡托投影坐标系(Mercator Projection)

当上述部分中<LODInfo>代表了各国一级切片的音讯,<LevelID>代表切片的级数。

using System;

using System.Text;

namespace Microsoft.MapPoint

{

    static class TileSystem

    {

        private const double EarthRadius = 6378137;

        private const double MinLatitude = -85.05112878;

        private const double MaxLatitude = 85.05112878;

        private const double MinLongitude = -180;

        private const double MaxLongitude = 180;

        /// <summary>

        /// Clips a number to the specified minimum and maximum values.

        /// </summary>

        /// <param name="n">The number to clip.</param>

        /// <param name="minValue">Minimum allowable value.</param>

        /// <param name="maxValue">Maximum allowable value.</param>

        /// <returns>The clipped value.</returns>

        private static double Clip(double n, double minValue, double maxValue)

        {

            return Math.Min(Math.Max(n, minValue), maxValue);

        }

        /// <summary>

        ///Determines the map width and height (in pixels) at a specified level

        /// of detail.

        /// </summary>

        /// <param name="levelOfDetail">Level of detail, from 1 (lowest detail)

        /// to 23 (highest detail).</param>

        /// <returns>The map width and height in pixels.</returns>

        public static uint MapSize(intlevelOfDetail)

        {

            return (uint) 256 << levelOfDetail;

        }

        /// <summary>

        ///Determines the ground resolution (in meters per pixel) at a specified

        /// latitude and level of detail.

        /// </summary>

        /// <param name="latitude">Latitude (in degrees) at which to measure the

        /// ground resolution.</param>

        /// <param name="levelOfDetail">Level of detail, from 1 (lowest detail)

        /// to 23 (highest detail).</param>

        /// <returns>The ground resolution, in meters per pixel.</returns>

        public static double GroundResolution(double latitude, int levelOfDetail)

        {

            latitude = Clip(latitude, MinLatitude, MaxLatitude);

            return Math.Cos(latitude * Math.PI / 180) * 2 * Math.PI * EarthRadius / MapSize(levelOfDetail);

        }

        /// <summary>

        ///Determines the map scale at a specified latitude, level of detail,

        /// and screen resolution.

        /// </summary>

        /// <param name="latitude">Latitude (in degrees) at which to measure the

        /// map scale.</param>

        /// <param name="levelOfDetail">Level of detail, from 1 (lowest detail)

        /// to 23 (highest detail).</param>

        /// <param name="screenDpi">Resolution of the screen, in dots per inch.</param>

        /// <returns>The map scale, expressed as the denominator N of the ratio 1 : N.</returns>

        public static double MapScale(double latitude, int levelOfDetail, intscreenDpi)

        {

            return GroundResolution(latitude, levelOfDetail) * screenDpi / 0.0254;

        }

        /// <summary>

        /// Converts a point from latitude/longitude WGS-84 coordinates (in degrees)

        /// into pixel XY coordinates at a specified level of detail.

        /// </summary>

        /// <param name="latitude">Latitude of the point, in degrees.</param>

        /// <param name="longitude">Longitude of the point, in degrees.</param>

        /// <param name="levelOfDetail">Level of detail, from 1 (lowest detail)

        /// to 23 (highest detail).</param>

        /// <param name="pixelX">Output parameter receiving the X coordinate in pixels.</param>

        /// <param name="pixelY">Output parameter receiving the Y coordinate in pixels.</param>

        public static void LatLongToPixelXY(double latitude, double longitude, intlevelOfDetail, out int pixelX, out int pixelY)

        {

            latitude = Clip(latitude, MinLatitude, MaxLatitude);

            longitude = Clip(longitude, MinLongitude, MaxLongitude);

            double x = (longitude + 180) / 360; 

            double sinLatitude = Math.Sin(latitude * Math.PI / 180);

            double y = 0.5 - Math.Log((1 + sinLatitude) / (1 - sinLatitude)) / (4 * Math.PI);

            uint mapSize = MapSize(levelOfDetail);

            pixelX = (int) Clip(x * mapSize + 0.5, 0, mapSize - 1);

            pixelY = (int) Clip(y * mapSize + 0.5, 0, mapSize - 1);

        }

        /// <summary>

        /// Converts a pixel from pixel XY coordinates at a specified level of detail

        /// into latitude/longitude WGS-84 coordinates (in degrees).

        /// </summary>

        /// <param name="pixelX">X coordinate of the point, in pixels.</param>

        /// <param name="pixelY">Y coordinates of the point, in pixels.</param>

        /// <param name="levelOfDetail">Level of detail, from 1 (lowest detail)

        /// to 23 (highest detail).</param>

        /// <param name="latitude">Output parameter receiving the latitude in degrees.</param>

        /// <param name="longitude">Output parameter receiving the longitude in degrees.</param>

        public static void PixelXYToLatLong(int pixelX, int pixelY, intlevelOfDetail, out double latitude, out double longitude)

        {

            double mapSize = MapSize(levelOfDetail);

            double x = (Clip(pixelX, 0, mapSize - 1) / mapSize) - 0.5;

            double y = 0.5 - (Clip(pixelY, 0, mapSize - 1) / mapSize);

            latitude = 90 - 360 * Math.Atan(Math.Exp(-y * 2 * Math.PI)) / Math.PI;

            longitude = 360 * x;

        }

        /// <summary>

        /// Converts pixel XY coordinates into tile XY coordinates of the tile containing

        /// the specified pixel.

        /// </summary>

        /// <param name="pixelX">Pixel X coordinate.</param>

        /// <param name="pixelY">Pixel Y coordinate.</param>

        /// <param name="tileX">Output parameter receiving the tile X coordinate.</param>

        /// <param name="tileY">Output parameter receiving the tile Y coordinate.</param>

        public static void PixelXYToTileXY(int pixelX, int pixelY, out int tileX, out int tileY)

        {

            tileX = pixelX / 256;

            tileY = pixelY / 256;

        }

        /// <summary>

        /// Converts tile XY coordinates into pixel XY coordinates of the upper-left pixel

        /// of the specified tile.

        /// </summary>

        /// <param name="tileX">Tile X coordinate.</param>

        /// <param name="tileY">Tile Y coordinate.</param>

        /// <param name="pixelX">Output parameter receiving the pixel X coordinate.</param>

        /// <param name="pixelY">Output parameter receiving the pixel Y coordinate.</param>

        public static void TileXYToPixelXY(int tileX, int tileY, out int pixelX, out int pixelY)

        {

            pixelX = tileX * 256;

            pixelY = tileY * 256;

        }

        /// <summary>

        /// Converts tile XY coordinates into a QuadKey at a specified level of detail.

        /// </summary>

        /// <param name="tileX">Tile X coordinate.</param>

        /// <param name="tileY">Tile Y coordinate.</param>

        /// <param name="levelOfDetail">Level of detail, from 1 (lowest detail)

        /// to 23 (highest detail).</param>

        /// <returns>A string containing the QuadKey.</returns>

        public static string TileXYToQuadKey(int tileX, int tileY, intlevelOfDetail)

        {

            StringBuilder quadKey = newStringBuilder();

            for (int i = levelOfDetail; i > 0; i--)

            {

                char digit = '0';

                int mask = 1 << (i - 1);

                if ((tileX & mask) != 0)

                {

                    digit++;

                }

                if ((tileY & mask) != 0)

                {

                    digit++;

                    digit++;

                }

                quadKey.Append(digit);

            }

            return quadKey.ToString();

        }

        /// <summary>

        /// Converts a QuadKey into tile XY coordinates.

        /// </summary>

        /// <param name="quadKey">QuadKey of the tile.</param>

        /// <param name="tileX">Output parameter receiving the tile X coordinate.</param>

        /// <param name="tileY">Output parameter receiving the tile Y coordinate.</param>

        /// <param name="levelOfDetail">Output parameter receiving the level of detail.</param>

        public static void QuadKeyToTileXY(string quadKey, out int tileX, out int tileY, out intlevelOfDetail)

        {

            tileX = tileY = 0;

            levelOfDetail = quadKey.Length;

            for (int i = levelOfDetail; i > 0; i--)

            {

                int mask = 1 << (i - 1);

                switch (quadKey[levelOfDetail - i])

                {

                    case '0':

                        break;

                    case '1':

                        tileX |= mask;

                        break;

                    case '2':

                        tileY |= mask;

                        break;

                    case '3':

                        tileX |= mask;

                        tileY |= mask;

                        break;

                    default:

                        throw new ArgumentException("Invalid QuadKey digit sequence.");

                }

            }

        }

    }

}

  地面分辨率是为一个像素(pixel)代表的地头尺寸(米)。以微软Bing
Maps为条例,当Level为1时常,图片大小为512*512(4只Tile),那么赤道上空分辨率为:赤道周长/512。其他纬度的半空中分辨率则也
纬度圈长度/512,极端的北极虽说为0。Level为2经常,赤道的上空分辨率为
赤道周长/1024,其他纬度为 纬度圈长度1024。很扎眼,Ground
Resolution取决于两个参数,缩放级别Level和纬度latitude
,Level决定像从的有点,latitude决定地面距离的尺寸。

更以米变为度 16933.3672/111194.872221777 = 0.1522855043731385度

             1度约等于 111194.872221777米

tileX = 3 = 011(二进制)

Resolution和Scale的换算法:

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

相关文章

No Comments, Be The First!
近期评论
    分类目录
    功能
    网站地图xml地图