`
gstarwd
  • 浏览: 1538857 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

必应地图图片系统(Tile System)之二

 
阅读更多
【坐标系和地图图片编码】

为了优化地图系统性能,提高地图下载和显示速度,所有地图都被分割成256 x 256像素大小的正方形小块。由于在每个放大级别下的像素数量都不一样,因此地图图片(Tile)的数量也不一样:

map width = map height = 2^ level tiles

每个tile都有一个XY坐标值,从左上角的(0, 0)至右下角的(2^level –1, 2^level –1)。例如在3级放大级别下,所有tile的坐标值范围为(0, 0)至(7, 7),如下图:

Bb259689.209e5af1-34c1-45f6-ba24-41df3e1a1b10(en-us,MSDN.10).jpg

已知一个像素的XY坐标值时,我们很容易得到这个像素所在的Tile的XY坐标值:

tileX = floor(pixelX / 256)

tileY = floor(pixelY / 256)

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

tileX = 3 = 011(二进制)

tileY = 5 = 101(二进制)

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

Quadkey还有其他一些有意思的特性。第一,quadkey的长度等于该tile所对应的放大级别;第二,每个tile的 quadkey的前几位和其父tile(上一放大级别所对应的tile)的quadkey相同;下图中,tile 2是tile 20至23的父tile,tile 13是tile 130至133的父tile:Bb259689.5cff54de-5133-4369-8680-52d2723eb756(en-us,MSDN.10).jpg

最后,quadkey提供的一维索引值通常显示了两个tile在XY坐标系中的相似性。换句话说,两个相邻的tile对应的quadkey非常接 近。这对于优化数据库的性能非常重要,因为相邻的tile通常被同时请求显示,因此可以将这些tile存放在相同的磁盘区域中,以减少磁盘的读取次数。

实战应用一下,如果大家用过httpWatch的话,可以发现获取必应地图tile的URL如下:

http://r3.tiles.ditu.live.com/tiles/r13023.png?g=47

关于这个URL的详细解释我在以后的博客中加以阐述,我们看到其中r13023.png,r表示道路图片,13023就是tile所对应的quadkey。显然这个tile所在的地图放大级别为5,其祖父tile为上图黑框中130。

分享到:
评论

相关推荐

    必应地图卫星影像瓦片(0-10级)

    开发者需要根据瓦片的坐标系统和层级结构,正确请求并拼接这些图片,以展示完整的地图视图。 总的来说,必应地图卫星影像瓦片提供了丰富的地理信息资源,对于需要地图服务的开发者来说,这是一个宝贵的工具。通过...

    Rotorz Tile System unity3d

    "Rotorz Tile System" 是一款专为Unity3D游戏引擎设计的关卡地图构建工具,它简化了2D游戏地图的创建和管理过程。这款插件提供了强大的功能,使开发者能够快速、直观地设计出复杂的游戏场景,尤其适用于平台跳跃、...

    TileMap地图游戏资源

    10. **可扩展性**:TileMap系统通常是模块化的,允许开发者轻松添加新的瓷砖类型、地图层或者事件,从而适应不同游戏的需求和内容更新。 总的来说,TileMap地图在游戏开发中扮演着核心角色,提供了一种强大而灵活的...

    tile-lnglat-transform:高德百度谷歌腾讯必应的地图经纬度坐标和瓦片坐标相互转换

    提供了高德、百度、谷歌、腾讯和必应地图的经纬度坐标与瓦片坐标的相互转换 特点 实现了国内常用地图的经纬度坐标与瓦片坐标的相互转换 使用 UMD 模块打包,可以在 node 和 browser 中直接使用 转换原理 各地图的...

    瓦片地图编辑工具Tilemap Editing Tools

    瓦片地图编辑工具Tilemap Editing Tools . 用TileMap制作了一张地图,是按照480 * 320制作的,但build到真机的时候...用Tile制作地图,但是每一层上只允许有一个贴图集,其实就是把需要用到的多个图片合到一张图片上。

    Tile Studio 地图编辑器

    《Tile Studio地图编辑器深度解析》 在游戏开发和像素艺术创作领域,地图编辑器扮演着至关重要的角色,其中Tile Studio地图编辑器以其强大的功能和易用性深受用户喜爱。本文将深入探讨Tile Studio的特性、功能以及...

    素材_tilemap素材_使用TileMap快速构造2D关卡_

    TileMap(瓷砖地图)是一种高效且灵活的工具,常用于构建2D游戏的环境和场景。本素材包主要围绕如何使用TileMap来快速构造2D关卡,帮助开发者节省时间和精力,专注于游戏玩法的创新。 1. TileMap简介: TileMap是2...

    MapTile切片工具

    MapTile是一款专为GIS(地理信息系统)用户设计的高效图片切片工具,它能够处理几乎所有的图片格式,并且用户可以根据需求自由设定切片等级。在WebGIS应用中,地图的加载速度往往受到单个图像文件大小的影响,Map...

    tile地图编辑器

    "Tile地图编辑器"是一款专用于创建和编辑地图的软件工具,尤其适用于游戏开发和地理信息系统。这款编辑器因其简洁的界面和强大的功能而受到广大用户的喜爱。在本篇文章中,我们将深入探讨这款编辑器的核心特性、使用...

    tileStudio地图编辑器中文版

    《tileStudio地图编辑器中文版:开启你的2D游戏世界创作之旅》 在游戏开发领域,尤其是2D游戏,地图编辑器是不可或缺的工具之一。tileStudio作为一款知名的2D地图编辑器,以其强大的功能和易用性赢得了众多开发者和...

    tile-utils:Python脚本,用于拼接来自多个来源的平铺地图(必应航拍图,网络地图,MBTiles文件)-python source file

    tile-utils是一组Python脚本,用于拼接平铺的Web地图。 支持以下网络地图资源: 必应航空地图 使用切片方案的Web地图 本地文件 可能的应用 准备要打印的大地图 在移动设备中制作绘画程序的原纸 先决条件 Python ...

    Tile-Studio地图编辑器

    **Title:** Tile-Studio地图编辑器 **Description:** Tile-Studio是一款专用于创建和编辑地图的专业工具,尤其适用于像素艺术风格的游戏开发。它的最新版本为ts2_076b,其中包含的主要可执行文件是ts.exe。此外,...

    全功能瓦片地图下载(百度、高德、谷歌、腾讯、微软等等)

    瓦片地图下载是一种在GIS(地理信息系统)领域中常见的数据获取方式,特别是在处理大量地图数据时。本资源提供了全面的功能,支持从多个主流地图服务提供商,包括百度、高德、谷歌、腾讯和微软等,下载相应的瓦片...

    使用必应图像1

    在本文中,我们将深入探讨如何使用必应地图的图像服务,并通过C#语言与OpenLayers库结合,构建一个可以切换图层的地图应用。首先,我们要理解必应地图是微软提供的地图服务,它提供了多种图像类型,如航拍、带有标签...

    军火地图(system)软件

    想方便操作自己的运行命令吗? 废话少说,看拉就知道!

    TILE块地图编辑器

    《TILE块地图编辑器:探索游戏地图设计的艺术与技术》 在游戏开发的世界里,地图设计是一项至关重要的任务,它决定了玩家的游戏体验和虚拟世界的视觉感受。TILE块地图编辑器,作为一款专为此目的设计的工具,以其...

    tiledmap-跑酷地图素材

    1. 图块集(Tilesets):这些是构成地图的基本单元,由多个预设图形组成,可以是不同风格的地砖、障碍物、道具等,开发者可以通过拼接图块来构建地图。 2. 地图层(Layers):地图由多个层组成,例如背景层、地面层...

    Tile Studio V3.0 地图编辑器

    在游戏开发、图形设计以及地理信息系统中,地图编辑器起着至关重要的作用。Tile Studio V3.0,作为一款专业的地图编辑工具,它以其强大的功能和易用性,赢得了众多用户的青睐。本文将深入探讨Tile Studio V3.0的核心...

    游戏地图编辑器 Tile 砖块地图 wxPython

    游戏地图编辑器 Tile 砖块地图 wxPython,一开始考虑不全面,后面写的时候就只有一个心思,烂代码,完成就好。代码创建控件实例是个痛苦的过程,因为做的基本都是重复的事,能用循环的最好写进循环,熟悉控件后推荐...

Global site tag (gtag.js) - Google Analytics