麻辣GIS微信平台

更多 GIS 干货

微信关注不错过

ArcGIS Pro 添加 Bing Maps 底图

在之前的文章《ArcGIS Pro 服务国内被封?国内的用户惨了...》中小编介绍了关于ArcGIS Pro 国内服务被屏蔽的相关介绍,后面虽然服务恢复了,但已经全线换成了天地图服务,底图服务不多,仅有6个可用,所以小编最近一直在尝试分享更多国内可用的底图服务。今天小编给大家介绍一种在ArcGIS Pro 中添加 Bing Maps 底图的方法,有点绕,仅供大家参考。

PS:小编之前分享的底图服务可以参考最后的链接。

官方方法

如果你是正版的用户,ArcGIS Pro官方是直接支持添加Bing Maps底图的。

在「Map」选项卡 → 「Basemap」 → 选择

  • Bing Maps Aerial(卫星)
  • Bing Maps Roads(道路)
  • Bing Maps Hybrid(混合)

有个前提:你需要登录 ArcGIS Online 账户并启用 Bing Maps 授权(组织账号管理员配置),我相信看我文章的多数人是没有 ArcGIS Online 账户的,并且现在 arcgis.com 域名的底图的服务已经被被屏蔽,强行添加会显示504,所以这种方法对于多数人来说并不可用。

解决思路

小编最先看到这种方法是在使用之前推荐的QGIS插件《QGIS插件推荐——QuickMapService(底图插件)》中找到了关于Bing Maps的地址。

https://t0.tiles.virtualearth.net/tiles/a{q}.jpeg?g=685&mkt=en-us&n=z

小编直接将这个地址添加到ArcGIS Pro中,发现无论如何都添加不进去,后面发现 ArcGIS Pro 不直接支持 {q} 这种 Bing quadkey 编码方式的 URL 模板,因为它与标准的 {x}/{y}/{z} Web Mercator XYZ 瓦片索引不同,但好在 quadkey 编码方法可以和 {x}/{y}/{z} 兼容互算。

于是小编有了一个大胆的想法,能不能启动一个服务器将 {q} 转换成 {x}/{y}/{z},然后使用添加服务的方式添加 Bing Maps 底图呢?经过小编的实践找到了国内可用的添加方式。

核心代码

def tileXYToQuadKey(x, y, zoom):
    quadKey = ""
    for i in range(zoom, 0, -1):
        digit = 0
        mask = 1 << (i - 1)
        if (x & mask) != 0:
            digit += 1
        if (y & mask) != 0:
            digit += 2
        quadKey += str(digit)
    return quadKey

最核心的就是这个函数,其输入是传统的x/y/z坐标,输出是 Bing Maps 的 quadkey 编码,就这么简单。关于quadkey的完整介绍可以参考官方文档《Bing Maps Tile System

使用方法

小编将完整源代码打包了一份,地址如下:

麻辣GIS为了防止资源恶意爬取导致被和谐,此处内容被作者隐藏。
验证码:

关注本站微信公众号,回复“资源下载”,获取验证码。

在微信里搜索“麻辣GIS”或微信扫描右侧二维码即可关注本站微信公众号。

具体使用方法如下:

先将下载的文件解压一个目录,得到一个 add_bingmap_to_arcgispro.py 文件,这个目录后面会用,最好简单一点,没有中文及空格。然后打开ArcGIS Pro,点击 工程 -- 包管理器

点击 添加包,输入 flask

然后点击安装,安装完成如图:

回到ArcGIS Pro,选择 分析 -- Python -- Python窗口,打开Python控制器,输入如下代码:

exec(open(r"C:\替换成你自己的目录\add_bingmap_to_arcgispro.py", "r", encoding='utf-8').read())

直接回车确认,这时候会显示如下的界面:

然后点击 地图 -- 从路径添加数据

复制卫星底图地址: http://127.0.0.1:5000/bing/tiles/{z}/{x}/{y}.jpeg,输入进去

点击确定,没有意外的话,Bing地图就添加成功了。

总结

这个底图添加还是比较有趣的,和传统的国内添加Google Maps的底图思路相似,但又有所不同。相同的是都需要一个中间层来完成转发,而Google Maps解决的是网络问题,Bing Maps解决的是quadkey 编码计算的问题。

行文至此,其实过程中还遇到了不少问题,一些经验总结会在后面分享,大家有其他需要的底图也可以参考这种方法。

相关阅读

麻辣GIS-Sailor

作者:

GIS爱好者,学GIS,更爱玩GIS。

声明

1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。

2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。

手机阅读
公众号关注
知识星球
手机阅读
麻辣GIS微信公众号关注
最新GIS干货
关注麻辣GIS知识星球
私享圈子
没有下文

留言板(小编看到第一时间回复)