前端leaflet框选下载bing遥感图

微软必应bing遥感图。

bing地图比百度遥感图清晰很多,19级,百度是18级,同样的18级,bing地图比百度也清晰很多。所以没有必要用百度地图了。不过bing地图仅用于学习,商用要付费。

参考了

python获取bing地图发布自己的TMS服务(一)下载瓦片 - 小专栏

JS下载地图离线数据,前端下载谷歌离线地图_加载离线google地图 js-CSDN博客

Bing Maps Tile System - Bing Maps | Microsoft Learn

https://www.cnblogs.com/giserhome/p/12590932.html

js知识

js实现文件流式下载文件方法详解及完整代码_javascript技巧_脚本之家

https://www.cnblogs.com/vant-xie/p/16755784.html

JavaScript Math log() 方法 JS Math log() 方法 - 自学教程

javascript 使用sleep函数的常见方法详解_javascript技巧_脚本之家

golang拼图参考:

GO多张图片拼成大图_goland 实现全景图拼接-CSDN博客

试验过程记录

一、首先是研究看微软bing地图的介绍,有4个重点要注意。

  1. 申请一个bing地图的key,正常的注册几乎行不通,老是循环机器人验证,用github登录就简单多了。

  1. 它的原理是通过这样一个地址https://dev.virtualearth.net/REST/v1/Imagery/Metadata/{imagerySet}?key={bingMapsKey}&include=ImageryProviders&uriScheme=https&c={culture}来获得这样一个地址https://ecn.{subdomain}.tiles.virtualearth.net/tiles/a{quadkey}.jpeg?g=13239

请看Get Imagery Metadata - Microsoft Bing Maps | Microsoft Learn,里面讲的很清楚。

  1. 获得了图片初步地址后,需要替换里面的{subdomain}和{quadkey},见上文python的代码(贴在下面了)


# 例如:http://ecn.{subdomain}.tiles.virtualearth.net/tiles/a{quadkey}.jpeg?g=7786
tileUrlTemplate = data['resourceSets'][0]['resources'][0]['imageUrl']
# 对获取到的地址里的变量进行替换
url = tileUrlTemplate.replace("{subdomain}", imageDomains[0])
url = url.replace("{quadkey}", qk)
# 请求网络,将获取到的图片存入文件
response = requests.get(url, stream=True)
            print(response)
            with open(tileFileName, 'wb') as out_file:
                shutil.copyfileobj(response.raw, out_file)

# 左上为原点
tilePixelMax = quadkey.TileSystem.geo_to_pixel((lat_max, lon_max), tileZoom)
tilePixelMin = quadkey.TileSystem.geo_to_pixel((lat_min, lon_min), tileZoom)
print(tilePixelMax)
print(tilePixelMin)

# 2层循环进行下载
for x in range(tilePixelMin[0], tilePixelMax[0], 256):
    for y in range(tilePixelMax[1], tilePixelMin[1], 246):
        get_tiles_by_pixel((x, y))
  1. quadkey四键怎么算

微软的bing介绍里有现成的C#代码,首先要将地图上的经纬度转成pixelxy(LatLongToPixelXY),再将结果转为tilexy(PixelXYToTileXY),再将结果tilexy转为quadkey(TileXYToQuadKey)

二、研究leaflet-bing-layer.js这个插件,借用里面的代码。

如果js比较熟悉,直接请求上面的地址获得图片地址,再替换图片地址里的变量,变成真实图片地址,再下载。

三、leaflet的geoman插件里的pm方法。直接从上面链接中把矩形绘制,获得矩形顶点的经纬度,填入代码,进行循环。

四、注意下载防止被封,所以需要设定随机停顿时间。

五、动画演示:浏览器框选按级下载高清bing遥感地图并拼接图片_哔哩哔哩_bilibili

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值