谷歌地图解析及ArcEngine加载谷歌地图方法

本文详细介绍了如何在ArcEngine中加载谷歌地图,包括谷歌地图的切片地址解析、经纬度与切片的转换以及缩放级别的计算方法。文章提供了代码示例,展示了如何根据经纬度获取切片坐标,并通过比例尺比较法和最大切片数量法确定缩放级别。同时,文章提醒注意谷歌地图在国内的访问问题,建议考虑使用国产地图服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

上一章介绍了ArcGIS加载天地图的方法。然后谷歌地图确是ArcGIS目前没有支持的,网上也有一些工具可以添加到ArcMap的toolbox中从而实现加载谷歌地图。那么在ArcEngine开发中,该如何实现谷歌地图的加载呢?具体代码下载,各位看官可戳这里
接下来将从实现原理展开介绍

1.简介

谷歌地图采用的是web墨卡托投影,坐标系为WGS84坐标系,为了方便忽略了两极变形较大的地区,把世界地图做成了一个边长等于赤道周长的正方形(赤道半径为6378137米),原点在正方形中心,即经纬度为(0,0)处。Web墨卡托投影的X,Y坐标取值范围为:[-20037508.3427892,20037508.3427892],对应的经度取值范围为[-180,180],对应的纬度范围则为[-85.05112877980659,85.05112877980659]
参考自:Google 地图切片URL地址解析_GIS 随笔-优快云博客

2.获取切片地址

打开谷歌地图,地址:http://www.rivermap.cn/google_view.html

在这里插入图片描述
点击F12,通过变化地图,可在后侧NetWork——All中检测到刚刚的操作访问到的网址,选择其中一个网址(也可直接双击打开),在右侧PreView可进行切片预览,点击Header,可获得该网址的具体信息(如下所示),其中Request URL即为我们需要下载的切片的地址。
在这里插入图片描述
众所周知,谷歌系列产品在国内向来不太友好,因此谷歌地图的切片地址也是有可能变化的,但是万变不离其中,类型标签与切片计算方法是基本不变的。

m:路线图
t:地形图
p:带标签的地形图
s:卫星图
y:带标签的卫星图
h:标签层(路名、地名等)

2020年12月份左右,谷歌地图的各类地址规则如下

switch (type)
{
   
    case "地形":
        uri = new Uri($"http://mt3.google.cn/vt/lyrs=t@131,r@227000000&hl=zh-CN&gl=cn&x={x}&y={y}&z={z}&s=Galile");
        break;
    case "高程":
        //谷歌电子地图
        uri = new Uri($"http://mt3.google.cn/vt/lyrs=m@207000000&hl=zh-CN&gl=CN&src=app&x={x}&y={y}&z={z}&s=Galile");
        break;
    case "影像":
    default:
        uri = new Uri($"http://mt3.google.cn/vt/lyrs=y@126&hl=zh-CN&gl=cn&src=app&s=G&x={x}&y={y}&z={z}");
        break;
}

其中,x代表切片的横坐标,y代表切片的纵坐标,z代表缩放级别,mt3代表切片存储的服务器,我尝试过换成mt0,mt1,mt2结果其实都是一致的,只是不同服务器上的相同切片罢了,猜测谷歌地图采用的是一种并发访问机制。

然而,到了2021年,在写这篇博文时发现由于某些原因,谷歌地图貌似被禁了,访问慢不说(当然也不排除我的网速问题),切片请求地址也发生了变化,但是从下面两张图也可以发现,谷歌地图的访问地址是非常相似的,切换type标签基本上就够了,如果切换标签也无法获取切片,那么方法和上述一样,访问该类型的地图,用F12获取切片地址规律
在这里插入图片描述
在这里插入图片描述

3.经纬度与切片的相互转换

class GoogleTile
<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShirmyMao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值