研究Google maps及51ditu的图片切割及存储方法

切片方案 谷歌xyz tms 百度xyz quadTree 天地图 xy原点在经度为0纬度为0的位置,x从左向右,y从上向下。地图切片不是一个n*n的正方形,在缩放层级为z时,行数row=2^z-1, 列数col=2^z。特点:z的定义和谷歌相同,同一级别的瓦片用一个整数表示,该整数服从四叉树编码规则。特点:z表示缩放层级,xy原点在左上角,x从左向右,y从上向下。特点:z表示缩放层级,xy原点在左下角,x从左向右,y从下向上。特点:地图以左上角为原点,x从左向右,y从上向下。读取方式:地图以x\y\z的方式存储读取。读取方式:地图以x\y\z的方式存储读取。 阅读详情
2006-7-20(转载请注明出处--王继锋)
说明:个人见解,可能与实际实现不同,更或者观点有错误之处,敬请注意,并愿高手不吝赐教!本文由Andrew.Wang最初发表于http://blog.youkuaiyun.com/AndyDevelope/archive/2006/07/20/948221.aspx

Google maps切割方法

1.         缩放等级与图幅数      

Google maps的缩放等级是0-17共18个等级,比例尺与缩放等级是成反比的(比例尺越大地图越详细),其第17等级只有一幅世界地图,某一等级下所含地图数的计算公式为2^(17-n)^2(n为缩放等级)。

2.         图幅生成与编号

可以假设Google maps在每一缩放等级下的地图上都建立了一个坐标系,坐标原点为(西经180度,北纬90度),正方向分别为向东向南,经度跨度为360度,纬度跨度为180度。一般情况下,为便于理解可以这么认为,若在缩放等级n的情况下,共需生成(2^(17-n))^2副图片,其编号形如(x,y)(0<=x<=2^(17-n)-1,0<=y<=2^(17-n)-1)。

但由于制 图区域的范围、形状和地理位置等的不同需要选择不同的投影方式,以减少投影成平面地图后的误差值。在世界地图中常用墨卡托投影绘制世界航线图、世界交通图 与世界时区图;我国出版的世界地图多采用等差分纬线多圆锥投影,选用这个投影,对于表现中国形状以及与四邻的对比关系较好,但投影的边缘地区变形较大。根 据不同的需要还有许多其它的投影方式,在此不再赘述,当然国家基本比例尺地形图的投影、分幅等,是由国家测绘主管部门研究制订,不容许任意改变的,另外编 制小区域大比例尺地图,无论采用什么投影,变形都是很小的。

由于Google是 面向全世界的,故其不同比例尺下并且相同比例尺下不同地区不同国家其投影方式都是不同的,我猜测为使整个世界范围内的地图达到相对的精确是以牺牲海洋两极 等人烟稀少地图的变形为代价的,当然这也只是针对小比例尺下的地图,随着比例尺的不断放大这种投影上的差距会越来越小。

3.         结论

每个切割的小图片是256*256(像素),常识来判断每个小图片代表的实际区域长宽之比应为2:1,但由于投影不同的存在,其实它是1:1的,至于中间过程怎么处理的我也没搞明白。

关于51ditu

1.         缩放等级

使用的比例级别总共有0-12级共13个级别,他们和实际的比例尺的对应关系分别是:

0级 -------------------- 1:2,500

1级 -------------------- 1:5,000

2级 -------------------- 1:10,000

3级 -------------------- 1:25,000

4级 -------------------- 1:50,000

5级 -------------------- 1:100,000

6级 -------------------- 1:250,000

7级 -------------------- 1:500,000

8级 -------------------- 1:1,000,000

9级 -------------------- 1:2,500,000

10级 ------------------- 1:5,000,000

11级 ------------------- 1:10,000,000

12级 ------------------- 1:50,000,000

简单的说,0级地图最详细,12级地图最简单。

以上是其官方发布的数据。

                        

2.         与Google的比较

51地图和Google maps都开放了API,有人结合两者的API把它们集成到一块,发现两者的经纬度吻合的非常好,我想这也主要是在大比例尺地图下只要两者的切割方法相同就可以做到的,故为了以后能更好的兼容并向领先者学习我们也争取达到这种比较好的吻合效果。

但分析两者的切割图片发现Google的是256*256(像素),而51ditu是128*128(像素)。如下图(1)、图(2)两幅图(两幅图均没有包含到最南端的曾母暗沙):

由于两者是采用的不同的投影方式,故地图在外形上有着比较大的差别,但应该注意的是每一小片上只是面积上的差别,通俗点来讲要有都有要没有都没有;由于两者每一幅图片是不等的,在实际中Google的每一图幅的面积应该是51ditu的4倍,但我们将两者放在同样大小的比例中发现两者吻合的比较好,由此也可推测随着比例的放大吻合程度将会更好,也就是说两者的切割方法是相同的,只不过导出图片的大小不同而已。

3.         坐标系统

同样可以假设51ditu在每一缩放等级下的地图上也都建立了一个坐标系,不同的是其坐标原点为(西经11.25度,北纬0度),正方向分别为向东向北,跨度范围基本上就是覆盖中国的国土面积,即经度跨度为【67.5,135】,纬度跨度为【0,56.25】,而中国领土北起漠河以北的黑龙江江心(北纬53°30′),南到南沙群岛南端的曾母暗沙(北纬4°),跨纬度49度多;东起黑龙江与乌苏里江汇合处(东经135°05′),西到帕米尔高原(东经73°40′),跨经度60多度。

Google.PNG

图(1)

51ditu.PNG

图(2)

拟采用的方案

1.         方案简述      

由于Google maps并没有提供大比例尺下的中国地图,故将其作为参照系不是一个很好的选择,为便于以后的比较,我们采用与51ditu相同的坐标系统,即编号方式。

如上图(2)所示,小图片12-1-7.png,是缩放等级12之下的一副图片,1是纬度方向上的序号,7是经度方向上的序号,从以上分析我们得知,缩放等级12之下,整个地球的切图共是*张,在投影影响的基础上,每个图片的跨度为11.25*11.25度,图片12-1-7.png左下角点的经纬度为(67.5,11.25),很明显(67.5+11.25)/11.25=7,11.25/11.25=1。这样我们就得到了切割图片序号的计算公式,一般化如下:

在缩放等级为n之下,切割图片的边长(设为d)d=360度/2^(17-n),若小图片左下角坐标为(x,y),并设经度方向上的序号为bx,纬度方向上的序号为by,可得到其表达式为bx=(x+11.25)/d;by=y/d.。

由于我们只是针对中国范围,故取经度跨度为【67.5,135】,纬度跨度为【0,56.25】,在切割时可以适当延展,延展单位以11.25为准。

2.         命名规则、存储方案

在最大比例尺即缩放等级为0之下,取经度跨度为【67.5,135】,纬度跨度为【0,56.25】,可以计算出共需切割的图片数量为2^17*(67.5/360)*2^17*(56.25/360)=131072*(3/16)*131072*(5/32)=112,442,880.缩放等级n之下,所需图片数量的计算公式为2^(17-n)*(67.5/360)*2^(17-n)*(56.25/360)=15*2^(25-2n)(0<=n<=12)

以下为各比例尺之下的对应关系

缩放级别

比例尺

图幅数

存储空间(4K/幅)

0级

1:2,500

503,316,480

1920G

1级

1:5,000

125,829,120

480G

2级

1:10,000

31,457,180

120G

3级

1:25,000

7,864,320

30G

4级

1:50,000

1,966,080

7.5G

5级

1:100,000

491,520

1.875G

6级

1:250,000

122,880

 

7级

1:500,000

30,720

 

8级

1:1,000,000

7,680

 

9级

1:2,500,000

1,920

 

10级

1:5,000,000

480

 

11级

1:10,000,000

120

 

12级

1:50,000,000

30

 

由以上分析可见在大比例尺下若全部生成,其数量是很巨大的,考虑到某些大比例尺地图只是在某些地区或特殊要求时是必须的,我们没有必要全部生成,只需生成规定经纬度范围内的某一缩放级别下的地图。但即使这样小缩放级别下的图幅数量仍然不小,所以我们应该分区域在不同文件夹下存放。从级别n到级别n+1,图片数量后者是前者的4倍,即放大一个级别原级别一张图片裂变为四张,这样我们可以借鉴四杈树的组织形式,即若树的深度为N,深度为N-1的节点子节点均为30个,其余节点子节点为四个(当深度为1时,根结点子节点为5*6=30个),树的深度与缩放级别的对应关系为N=13-n。

树的节点的命名即为对应文件夹的名称,根结点即以缩放级别命名,叶节点对应图片以形如“bx-by.png”的形式命名,其它节点则是形如“0-0”、“0-1”、“1-0”、“1-1”的形式命名。

这样一来生成图片的时候就有一个路径判断和生成的问题。在确定了经度跨度为【67.5,135】,纬度跨度为【0,56.25】,并且在最小比例尺(缩放等级为12)之下我们已知图片是5*6张,即经度方向为6,纬度方向为5,这两个值很重要直接影响到我们的命名,当然前提变了这个值也随着变了。我们制定规则如下:

如前树的深度为N,经度方向上的序号为bx,纬度方向上的序号为by。则当1<N<max(N)时,经度方向上的节点值Lng=ToString(((bx-7*N)/6)%2), 纬度方向上的节点值Lat=ToString((by/5)%2),则节点名称命名为Lng+”-”+Lat。

<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>  
Google Earth Engine(GEE) ——根据单点坐标进行格网的建立(含有一个重要函数) 这是一段生成度量网格的代码。您必须在公制投影(例如 UTM)中定义坐标。您可以在 K 和 K/5 间距处生成 2 个网格,并通过横截面计算出命名并在地图中使用 col 和 row 属性。scale。 阅读详情

相关推荐

google地图的切图规范以及技术原理

google 地图的切图规范说明。介绍 Google map 切图方式 ,切图原理。

【前端小点】谷歌地图MarkerClusterer,点分类聚合

在谷歌地图中实现点聚合效果,并且按照点的分类,实现分类聚合效果.

球球博客 1683

google Map 离线 API (附带切图工具 可以定制你自己的网络地图)

WebMap DIY(定制你自己的网络地图,GMapImageCutter工具推荐) 文件说明: GMapImageCutter1.4:GMapImageCutter工具 DemoPicture:样例图片,北京师范大学平面图和北京动物园平面图 gmap:Google Maps API离线开发包,内附北京师范大学和北京动物园地图demo 预览效果: 将gmap目录拷贝到IIS的主目录下,在IE或者FireFox浏览器地址栏输入: http://127.0.0.1/gmap/BNUmap.html http://127.0.0.1/gmap/BeijingZoo.html 即可浏览北京师范大学和北京动物园的demo地图效果 其中北京师范大学demo地图进行了简单的修改,取消了地图自适应长宽的内容,并增加了一个marker 如果你不想使用Google Maps API离线开发包,只需要将html文件中调用的maps_my.js替换成你申请的Google Maps API的地址即可 你也可以使用GMapImageCutter切割一下两张样例图片。

Google map EPSG:900913 地图分块算法、切片算法个人解析。一看就明白哈

Google map 地图分块算法的解析 EPSG:900913 我下面的小伙子总是不明白map api,这块算法原理。我想很多人也一样,所以写一下说明一下哈 projection: "EPSG:900913", //投影为 900913,google 墨卡托投影 units: "m", //屏幕坐标以米为单位 maxResolution: 156543.0339, //最大比例下的每像素屏

LaoChai的专栏 2万+

ArcGIS Server切片方案

ArcGIS Server切片方案,能和谷歌地图无缝结合

ABAQUS单元刚度矩阵输出全攻略:从理论到实践(含MTX/DAT文件对比)

本文详细解析了ABAQUS中单元刚度矩阵的输出方法,涵盖理论原理、MTX与DAT文件格式对比及二次开发应用。通过具体操作步骤和性能优化建议,帮助用户高效获取并利用刚度矩阵数据,特别适合需要进行有限元分析验证和二次开发的工程师。

lg888的博客 1006

地图瓦片切片方案汇总

几乎所有的地图应用都采用地图瓦片的方式加载以提高渲染效率,web墨卡托投影的主要切片方案分为四大类:谷歌、TMS、QuadTree、百度。除此之外,国家天地图网站还支持cgcs2000经纬度投影,也有自己一套独特的切片方案。地图切片谷歌XYZTMSQuadTree百度XYZ天地图

qq_37987033的博客 5450

用Python手把手教你实现一个多层感知机(MLP)——从理论到代码实战

本文详细介绍了如何使用Python和Theano库从零开始实现多层感知机(MLP),涵盖从核心原理到代码实战的全过程。通过构建隐藏层、输出层和完整MLP模型,结合权重初始化、激活函数选择和训练技巧,帮助开发者深入理解神经网络工作机制,并应用于实际机器学习任务。

web39explorer的博客 970

研究Google maps及51ditu的图片切割及存储方法(转)

说明:个人见解,可能与实际实现不同,更或者观点有错误之处,敬请注意!Google maps切割方法1.         缩放等级与图幅数       Google maps的缩放等级是0-17共18个等级,比例尺与缩放等级是成反比的(比例尺越大地图越详细),其第17等级只有一幅世界地图,某一等级下所含地图数的计算公式为 2^(17-n)^2(n为缩放等级)。2.    

GunGunSeeBlood的专栏 1136

FANUC机器人PROFINET通讯方式组态

6 然后对模块进行命名及更改IP地址,点击“Network Detection”,进行扫描,会生成下图,双击商科模块会生成下边的对话框,对模块进行命名及更改IP地址,在“Permanent Name”处点对勾,完成后点击“Apply Name及Apply”进行命名。此处注意,上图左上在线在不了,网络扫描处上面也灰色的,扫描不了。5双击abcc-prt-2-port RT(FW1.13),生成下面图标,在右边点击1、2把原来内容删掉,从新在左侧加载 ,使1、2是输出,3、4为输入,完成后点击OK。

dxs93的博客 8428

ALSA音频开发实战:如何用snd_pcm_avail避免缓冲区溢出(附完整代码)

本文深入探讨了在ALSA音频开发中,如何利用`snd_pcm_avail`函数有效管理环形缓冲区,从而避免音频数据溢出或下溢。通过实战代码示例,详细解析了该函数在播放场景下的核心作用,即实时查询可写入的帧数,并构建了自适应写入循环以实现稳健的流量控制,确保音频流的平滑与稳定。

weixin_29183637的博客 461

Google maps及51ditu的图片切割及存储方法2

关于51ditu<br /><!--[if !supportLists]-->1.         <!--[endif]-->缩放等级<br />使用的比例级别总共有0-12级共13个级别,他们和实际的比例尺的对应关系分别是:<br />0级 -------------------- 1:2,500<br />1级 -------------------- 1:5,000<br />2级 -------------------- 1:10,000<br />3级 --------------------

maniacbin 625

TekTronix 高速信号完整性基础以及测试方法分析

如果信号速率比较高,则CTLE与FFE都无法满足要求,尤其是大于10G,比如USB3.1Gen2 10Gbps,PCIe4.0 16Gbps,这些场合都会采用DFE均衡,DFE的优点是,它既可以识别当前比特,并且可以判决前面的n个比特(Tap的阶数越高,看到的前面的比特数越多),根据前面比特的变化来计算出要处理当前比特所要变化的幅度,来补偿由于前面比特变化所引起的信号幅度的变化。10G以下,一般都不太关心这个串扰,高于10G的信号,会发现相互之间的串扰越来越明显,已经成为引起误码的重要的原因之一。

weixin_45365488的博客 4141

Google maps及51ditu的图片切割及存储方法

说明:个人见解,可能与实际实现不同,更或者观点有错误之处,敬请注意!Google maps切割方法1.         缩放等级与图幅数       字串6 Google maps的缩放等级是0-17共18个等级,比例尺与缩放等级是成反比的(比例尺越大地图越详细),其第17等级只有一幅世界地图,某一等级下所含地图数的计算公式为 2^(17-n)^2(n为缩放等级)。 字

冷月宫主的专栏 1337

AI应用架构师进阶:智能控制系统架构的多Agent设计

本文将从“AI应用架构师”的视角,系统讲解智能控制系统中多Agent架构的设计方法。理解多Agent系统的核心特性与在智能控制场景中的优势;掌握多Agent架构的设计流程:从需求分析到角色划分、通信设计、决策实现;通过实战案例(智能家居控制场景),手把手带你落地一个多Agent智能控制系统;探讨进阶话题:动态Agent组织、安全性设计、与大语言模型(LLM)的融合等。在多Agent系统中,Agent(智能体)是具备自主决策能力的最小执行单元。

小程序开发 1085

ZYNQ PS-PL数据交互方式总结

一,中断 二,IO方式:MIO EMIO GPIO 三,BRAM或FIFO或EMIF (1)通过BRAM实现PL/PS之间交互 PS 的配置如下图所示。使能 M_AXI_GP0 口,将 FCLK_CLK0 设为 100MHz,使能 PL 至 PS 的中断。 AXI BRAM Controller IP 核连接 PS 的 M_AXI_GP0 口和 BRAM,完成 AXI 接口至 BRAM 接口的转换。 添加BRAM,将BRAM设置为双口RAM,将PORTA与AXI B...

wangjie36的博客 1万+

Google maps图像分割方法探索与分析

1.比例尺与缩放等级     a。地图 1:100 ——1:10000万     b。卫星 1:10 ——1:10000万     c。地形 1:100 ——1:10000万 20个等级,从下至上,依次编号为0,1,2,3,4,5,6..19。 对应比例尺依次增大,图幅数依次增加,缩小成像,可以扩大视野范围。 随着在线时间的增长,最大比例尺会减小,比如1:10-&gt;1:20-...

renyucheng的专栏 802

Carla运行显示The following component(s) are required to run this program:DirectX Runtime |nvapi64.dll没有被

Carla运行显示The following component(s) are required to run this p 参考: 【1】EPIC 启动游戏提示The following component(s) are required to run this program:... - 『悬赏问答区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cnhttps://www.52pojie.cn/thread-1485651-1-1.html ...

anananajiushiwo的博客 5万+

带你真正理解web地图切片规则

切图规则

qq_37891961的博客 2794

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Java Map拆分成子Map

java Map按照指定个数拆分成子Map列表

咘噜biu的博客 9017

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

上一篇: AJAX In Google 初探
下一篇: 人成长中必须知道的20个故事(转)
AndyDevelope
博客等级 码龄21年 16粉丝 36原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值