python下载谷歌地图瓦片_python抓取天地图瓦片

【实例简介】

抓取天地图瓦片

【实例截图】

【核心代码】

# _*_coding:utf-8_*_

from urllib import request

import re

import urllib.request

import os

import random

import math

agents = [

'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36',

'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.0 Safari/532.5',

'Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.9 (KHTML, like Gecko) Chrome/5.0.310.0 Safari/532.9',

'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.514.0 Safari/534.7',

'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.14 (KHTML, like Gecko) Chrome/9.0.601.0 Safari/534.14',

'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.14 (KHTML, like Gecko) Chrome/10.0.601.0 Safari/534.14',

'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.20 (KHTML, like Gecko) Chrome/11.0.672.2 Safari/534.20", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.27 (KHTML, like Gecko) Chrome/12.0.712.0 Safari/534.27',

'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.24 Safari/535.1']

resolution={18:5.36441802978515E-06,

17:1.07288360595703E-05,

16:2.1457672119140625E-05,

15:4.29153442382814E-05,

14:8.58306884765629E-05,

13:0.000171661376953125,

12:0.00034332275390625,

11:0.0006866455078125,

10:0.001373291015625,

9:0.00274658203125,

8:0.0054931640625,

7:0.010986328125,

6:0.02197265625,

5:0.0439453125,

4:0.087890625,

3:0.17578125,

2:0.3515625,

1:0.703125}

# 经纬度反算切片行列号 3857坐标系

def deg2num(lat_deg, lon_deg, zoom):

#lat_rad = math.radians(lat_deg)

#n = 2.0 ** zoom

#xtile = int((lon_deg 180.0) / 360.0 * n)

#ytile = int((1.0 - math.log(math.tan(lat_rad) (1 / math.cos(lat_rad))) / math.pi) / 2.0 * n)

xtile = math.floor(( lon_deg 180.0)/(resolution[zoom]*256))

ytile = math.floor((90.0-lat_deg)/(resolution[zoom]*256))

return (xtile, ytile)

# 下载图片

def getimg(Tpath, Spath, x, y):

try:

f = open(Spath, 'wb')

req = urllib.request.Request(Tpath)

req.add_header('User-Agent', random.choice(agents))  # 换用随机的请求头

pic = urllib.request.urlopen(req, timeout=60)

f.write(pic.read())

f.close()

print(str(x) '_' str(y) '下载成功')

except Exception:

print(str(x) '_' str(y) '下载失败,重试')

getimg(Tpath, Spath, x, y)

zoom =16  # 下载切片的zoom

lefttop = deg2num( 28.317231,115.846340, zoom)  # 下载切片的左上角角点

rightbottom = deg2num( 23.567119,120.722095, zoom)

print(str(lefttop[0]))

print(str(rightbottom[0]))

print(str(lefttop[1]))

print(str(rightbottom[1]))

print("共" str(lefttop[0] - rightbottom[0]))

print("共" str(lefttop[1] - rightbottom[1]))

for x in range(lefttop[0], rightbottom[0]):

for y in range(lefttop[1], rightbottom[1]):

path = "F:/lcc/fujian" "/" str(zoom) "/" str(x)

if not os.path.exists(path):

os.makedirs(path)

tilepath = "http://t0.tianditu.gov.cn/DataServer?T=cia_c&x=" str(x) "&y=" str(y) "&l=" str(zoom) "&tk=28b495e4df789d971d2ae77b01a55a55"

# 天地图的url 可以换成谷歌地图的

getimg(tilepath, path "/" str(y) ".png", x, y)

print('完成')

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值