英雄联盟地图的抓取与分析

第 50 篇

读完需要

14

分钟

速读仅需 5 分钟

/ 0.背景 /

S11 比赛正在如火如荼的举行。作为一个 S3 赛季的老玩家和地理人,我想从另外个角度带你了解 LOL 的世界。

/ 1.数据获取 /

1

数据初探

英雄联盟推出了其世界地图网页版,访问地址为:( https://map.leagueoflegends.com/ ).

鼠标移动到图标上时,会有该地区的行政图:

放大时,该地区会变得清晰,并且有地形的起伏:

因此这个地图应该有一个高分辨率的地图,类似于栅格金字塔。同时有一个 DEM 数据对地形进行拉伸渲染。

2

地图抓取

亘古不变的 F12 键,查看从页面打开时的网页请求,找到 png 图片:

3

英雄联盟地图结构解析

通过后期数据的抓取与思考,我粗略的画了一下 LOL 展示地图的结构:

英雄联盟的地图浏览起来非常丝滑,但是这个地图的原理很复杂。不仅对 DEM 进行了在线渲染,而且会根据各种掩膜进行判定,比如说被海洋掩膜覆盖的区域,会生成一个“水波荡漾”的效果。

/ 2.本地地图制作 /

主要分为三个方面:各个城邦矢量图的制作、高分辨率影像图的合成以及 DEM 数据的重构。

/ 2.1 城邦矢量化/

从官方网页结构中,我们可以获得矢量图,每一个城邦拥有一个范围栅格图(.png 格式,2048*2048 像素),比如说诺克萨斯城邦:

我们将其放到 arcgis,根据其边界逐一描绘:

/ 2.2 DEM 数据的重构 /

从官网界面,我们可以看到三维的地形数据,实际上是利用了一个 DEM 图进行了 Blender 在线渲染,我们从网页中获得的 DEM 数据是一个 Unit8 像素深度的栅格图,DEM 值的范围是 0-255。

DEM 的 Value 值范围为 0-146,我们不知道真实的海拔高度。有没有什么办法大致知道 DEM 的每一个值代表的真实高度?

考虑到德玛西亚城的河谷平原像素值在 20 左右,以及 LOL 最高峰应该超过 4000 米。我们假设每一个像素值代表高度为 28 米。因此,LOL 世界最高山峰的海拔为 4116 米。

使用栅格计算器,重新计算 LOL 世界的 DEM:

在本地使用 Blender 对 DEM 数据渲染效果如下:

/ 2.3 LOL 高分辨地图的重制 /

LOL 官网的地图存在两种分辨率,一种是地图总览的低分辨率,一种是放到到局部的高分辨率。高分辨率的地图需要逐个抓取。

我观察到,高分辨率的地图链接是有规律的,因此写了一个脚本将这些图片都爬取下来:

待数据下载完之后,使用我之前写好的镶嵌脚本,逐个对图片进行镶嵌:

#将影像进行镶嵌import PIL.Image as Imageimport os
IMAGES_PATH = r'小切片的路径' # 图片集地址# IMAGES_FORMAT = ['.jpg', '.JPG'] # 图片格式IMAGES_FORMAT = ['.png'] # 图片格式IMAGE_SIZE = 256 # 每张小图片的大小IMAGE_ROW = 7 # 图片间隔,也就是合并成一张图后,一共有几行IMAGE_COLUMN = 6 # 图片间隔,也就是合并成一张图后,一共有几列IMAGE_SAVE_PATH = 'predict.jpg' # 图片转换后的地址
#按数字大小进行排序files = os.listdir(IMAGES_PATH)files.sort(key=lambda x: int(x.split('.')[0]))
# 获取图片集地址下的所有图片名称image_names = [name for name in files for item in IMAGES_FORMAT if os.path.splitext(name)[1] == item]

# 简单的对于参数的设定和实际图片集的大小进行数量判断if len(image_names) != IMAGE_ROW * IMAGE_COLUMN: raise ValueError('合成图片的参数和要求的数量不能匹配!')print(image_names)
# 定义图像拼接函数def image_compose(): to_image = Image.new('RGB', (IMAGE_COLUMN * IMAGE_SIZE, IMAGE_ROW * IMAGE_SIZE)) # 创建一个新图 # 循环遍历,把每张图片按顺序粘贴到对应位置上 for y in range(1, IMAGE_ROW + 1): for x in range(1, IMAGE_COLUMN + 1): from_image = Image.open(IMAGES_PATH + image_names[IMAGE_COLUMN * (y - 1) + x - 1]).resize( (IMAGE_SIZE, IMAGE_SIZE), Image.ANTIALIAS) to_image.paste(from_image, ((x - 1) * IMAGE_SIZE, (y - 1) * IMAGE_SIZE)) return to_image.save(IMAGE_SAVE_PATH) # 保存新图

低分辨率的图片的大小为:2048X2048,高分辨率的图片的大小为:7168X6144。

/ 3.数据分析 /

/ 3.1 各个城邦的土地面积分析 /

使用 gis 的面积制表工具,统计每一个城邦的个数。

由于 LOL 世界是否是一个球形星球,也不知道该地图是否有投影变形。我们暂且用像元个数代表每个城邦的面积。诺克萨斯的面积不仅大,还横跨三个大的区域,实力不容小觑。

虽然诺克萨斯的面积是德玛西亚的四倍,但是德玛西亚永不屈服。

/ 3.2 各个联邦的地形分析 /

将 LOL 世界的海拔进行重分类:

海拔 1960 米以上就可以视为山脉,可以看看各个城邦的山脉分布图:

从这个图,我们能猜测出克萨斯和德玛西亚打仗最激烈的地方,所谓狭路相逢勇者胜:

/ 4.写到最后 /

(1)该推文只做学习使用,请勿作为非法用途,任何非法用途与本人无关。

(2)祝愿 EDG 取得好成绩,LPL 加油!

(0)

相关推荐

  • ArcGIS中地形渲染图制作技巧

    GIS技术 |  作者 /  星火  整理  /  白水 01 概述 DEM数据作为GIS数据中常见的一种数据,经常都会使用到,除了用来生成等高线.高程点和做各种分析之外,生成地形渲染图也是常见的用途 ...

  • ArcGIS中如何用栅格裁剪栅格

    自然资源频道 学习改变生活 知识创造未来 4篇原创内容 公众号 在使用ArcGIS的过程中常常需要从一张大的栅格图像中抠出我们需要用的那一部分,特别是需要用的部分的形状不规则该怎么办喃??? 上图中彩 ...

  • 如何抓取和分析互联网公开数据

    文/郑晓伟 导读:互联网蕴藏着丰富的公开数据资源,通过获取这些数据,作为城市研究的辅助支撑,是未来城市研究者必备的技能之一,近期我们也会继续介绍一些简单有趣的公开数据分析应用. 在互联网领域,对数据的 ...

  • Log抓取和分析

    参考文章: http://blog.csdn.net/createchance/article/details/51954142 Google为了方便Android开发人员分析整个系统平台或者某个AP ...

  • Python 抓取网页乱码原因分析

    在用 python2 抓取网页的时候,经常会遇到抓下来的内容显示出来是乱码. 发生这种情况的最大可能性就是编码问题:运行环境的字符编码和网页的字符编码不一致. 比如,在 windows 的控制台(gb ...

  • 耶鲁大学公布第一个仿生手抓取视频数据集,超60个小时22种分析法27000个抓取实例

    科幻电影中,动作自如的仿生假肢使身体残缺的人行动与常人无异,人类可以利用肌电信号,控制身外之物. 这一切都从内到外渗透着天马行空的想象力,各种未来科技世界的场景不禁让人心存涟漪--一位失去手臂的残疾人 ...

  • wireshark如何抓取分析https的加密报文

    [问题概述] https流量基于ssl/tls加密,无法直接对报文进行分析. [解决方案] 方案1 -- 利用"中间人攻击"的代理方式抓包分析.整个方案过程比较简单,这里不赘述,大 ...

  • 英雄联盟手游:闪现硬抓,疯狂发信号不听

    手游<英雄联盟>,闪现硬抓,疯狂发信号不听.我觉得他说的很对,我们总有很多觉得理所当然的事,队友要么压根不信,要么想不到.你相信他们,就是默认他们会做这些事,而通常他们都做不到.这种信息差 ...

  • 英雄联盟手游:没有打野刀,抓不到人经济就落后了

    游戏<英雄联盟手游>,没有打野刀,抓不到人经济就落后了,想问下大家手游还需要辅助吗?总感觉也没有辅助装不经济,玩输出经济也不低,为啥不玩个c保证输出呢?因为少个辅助c位输出环境很差,可能在 ...

  • 《英雄联盟手游》:地图明显缩小,砍掉了兵营和门牙塔

    游戏<英雄联盟手游>,地图明显缩小,砍掉了兵营和门牙塔,有一说一,局内打起来还是就看个轮廓和特效,不会拉近静态细看.所以局外展示华丽好看,至少让人觉得皮肤钱花得比一张原画当局外要超值得多. ...

  • 拳头游戏美术师Oliver:《英雄联盟》地图新召唤师峡谷是如何制作的

    整理/游戏陀螺 浩南哥 12月3日,<英雄联盟>艺术分享沙龙在中央美术学院举行,拳头游戏环境设计师Oliver Chipping出席并发表演讲,他从美术风格.故事性.易读性等方面介绍了&l ...