因为需要简单写了一个下载地图的爬虫,代码如下:

#coding=utf-8
import urllib.request
import os
import socket
import zlib
import math # python版本3.7
# 设置超时
socket.setdefaulttimeout(60) def mkdir(path): # 去除首位空格
path=path.strip()
# 去除尾部 \ 符号
path=path.rstrip("\\") # 判断路径是否存在
# 存在 True
# 不存在 False
isExists=os.path.exists(path) # 判断结果
if not isExists:
# 如果不存在则创建目录
# 创建目录操作函数
os.makedirs(path) print('path create success!')
return True
else:
# 如果目录存在则不创建,并提示目录已存在
print('path already exist!')
return False # 定义要创建的目录
mkpath="F:\\python\\TMS\\"
# 调用函数
#mkdir(mkpath) def callbackfunc(blocknum, blocksize, totalsize):
'''回调函数
@blocknum: 已经下载的数据块
@blocksize: 数据块的大小
@totalsize: 远程文件的大小
'''
# percent = 100.0 * blocknum * blocksize / totalsize
# if percent > 100:
# percent = 100
print("--") def long2tile(lon, zoom) :
return (math.floor((lon + 180) / 360 * math.pow(2, zoom))) def lat2tile(lat, zoom):
return (math.floor((1 - math.log(math.tan(lat * math.pi / 180) + 1 / math.cos(lat * math.pi / 180)) / math.pi) / 2 * math.pow(2, zoom))) #范围
zmin = 9
zmax = 14
south_edge = 25.2526
north_edge = 26.6384
west_edge = 118.376
east_edge = 120.512 #便利URL,获取数据
def getDataByUrl():
for z in range(zmin,zmax):
top_tile = lat2tile(north_edge, z)
left_tile = long2tile(west_edge, z)
bottom_tile = lat2tile(south_edge, z)
right_tile = long2tile(east_edge, z)
minLong = min(left_tile, right_tile)
maxLong = max(left_tile, right_tile)
minLat = min(bottom_tile, top_tile)
maxLat = max(bottom_tile, top_tile)
for x in range(minLong,maxLong):
path=str(z)+"\\"+str(x)
temppath=mkpath+path
mkdir(temppath)
for y in range(minLat,maxLat):
url=str(z) + '/' + str(x) + '/' + str(y)
str3='https://cartodb-basemaps-a.global.ssl.fastly.net/dark_nolabels/'+ url + '.png'
path2=temppath+'\\'+str(y)+'.png'
try:
urllib.request.urlretrieve(str3,path2)
except Exception as e:
print(e) getDataByUrl()

根据范围爬TMS规则瓦片的更多相关文章

  1. Python爬取地图瓦片

    由于要在内网开发地图项目,不能访问在线的地图服务了,就想把地图瓦片下载下来,网上找了一些下载器都是需要注册及收费的,否则下载到的图都是打水印的,如下: 因为地图瓦片就是按照层级.行.列规则组织的一张张 ...

  2. python获取bing地图发布自己的TMS服务(一)下载瓦片

    部分结果 bing地图瓦片使用QuadKey作为命名方式. QuadKey简介 如何计算quadkey 在给定level下,把行号tileY和列号tileX转换为2进制,然后行列交叉存储,再转换为4进 ...

  3. 9) drf JWT 认证 签发与校验token 多方式登陆 自定义认证规则反爬 admin密文显示

    一 .认证方法比较 1.认证规则图 django 前后端不分离 csrf认证 drf 前后端分离 禁用csrf 2. 认证规则演变图 数据库session认证:低效 缓存认证:高效 jwt认证:高效 ...

  4. cesium地形瓦片(HeightMap)格式

    目录 1.瓦片切分规则 2..terrain瓦片格式分析 参考资料: heightmap 1.0 Tile Map Service Specification 国内主要地图瓦片坐标系定义及计算原理 H ...

  5. 如何让矢量瓦片配图神器maputnik支持 geoserver

    关键词:maputnik.geoserver.矢量地图.矢量瓦片.mapbox.mapboxgl.地图配图.地图配色 一直想搞一个类似百度.高德地图那样的矢量地图配图工具 百度个性化地图配图工具: 高 ...

  6. SharePoint 2013中的爬网最佳做法

    了解在 SharePoint Server 2013 中爬网的最佳做法 搜索系统对内容进行爬网,以构建一个用户可以对其运行搜索查询的搜索索引.本文包含有关如何最有效地管理爬网的建议. 本文内容: 使用 ...

  7. SharePoint 2013 搜索爬网功能

    最近在政府部门介绍SharePoint 2013 新功能,我也准备了很多,比如SharePoint 2013的Search.以后有机会谈谈Office Web App,Workflow等. Share ...

  8. Linux企业级项目实践之网络爬虫(24)——定制规则扩展为垂直爬虫

    在垂直搜索的索引建立之前,我们需要到垂直网站上抓取资源并做一定的处理.垂直搜索与通用搜索不同之处在于,通用搜索不需要理会网站哪些资源是需要的,哪些是不需要的,一并抓取并将其文本部分做索引.而垂直搜索里 ...

  9. 初识scrapy,美空网图片爬取实战

          这俩天研究了下scrapy爬虫框架,遂准备写个爬虫练练手.平时做的较多的事情是浏览图片,对,没错,就是那种艺术照,我骄傲的认为,多看美照一定能提高审美,并且成为一个优雅的程序员.O(∩_∩ ...

随机推荐

  1. Linux 安装 Nvidia 驱动出现的黑屏各种问题和解决方式

    之前因为想OBS支持h264-nvenc这个功能然后就编译ffmpeg,然后使用Github上面的一个编译项目),项目编译完成之后重启电脑,然后就进入不了系统的登录页面了,选择进入Linux系统之后就 ...

  2. 组长组Beta阶段贡献分配规则

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/9910“ “组长”组贡献分分配规则: 组里五位成员分别有入团队贡献分10分 ...

  3. 【小技巧】在PS中测量图层间的边距

    今天学到了一个小技巧,前端切页面时会很方便,就是测量间距margin的. 在ps中,选中某个图层,然后按住ctrl键,再移动鼠标,就可以出现这个图层距其他元素的边距,这个太方便了.在此记录一下,免的以 ...

  4. 洛谷$1220$ 关路灯 记搜/$DP$

    \(Sol\) 约定\(pos\)为老张所处的位置的路灯号,\(i<pos,j>pos\). 显然,如果\(i\)和\(j\)都关了,那么它们之间的所有灯一定也都关了. 设\(f[i][j ...

  5. 大数据学习之路-phoenix

    1.phoenix安装 ------------------ 1.安装phoenix a)下载apache-phoenix-4.10.0-HBase-1.2-bin.tar.gz   下载网址:htt ...

  6. 「Vijos 1282」「OIBH杯NOIP2006第二次模拟赛」佳佳的魔法照片

    佳佳的魔法照片 背景 佳佳的魔法照片(Magic Photo):如果你看过<哈利·波特>,你就会知道魔法世界里的照片是很神奇的.也许是因为小魔法师佳佳长的太帅,很多人都找他要那种神奇的魔法 ...

  7. [JavaScript设计模式] 什么是单例模式

    概念 保证一个类仅有一个实例,并提供一个全局访问点 为什么要用单例模式 想象一下某些web应用,当点击登录按钮时,会弹出一个登录框,无论你点击多少次这个登录按钮,登录框都只会出现一个,不会出现多个登录 ...

  8. TensorFlow——tf.contrib.layers库中的相关API

    在TensorFlow中封装好了一个高级库,tf.contrib.layers库封装了很多的函数,使用这个高级库来开发将会提高效率,卷积函数使用tf.contrib.layers.conv2d,池化函 ...

  9. Java StringBuilder类

    StringBuilder的原理 String类 字符串是常量,它们的值在创建之后不能更改 字符串的底层是一个被final修饰的数组,不能改变 private final byte[] value; ...

  10. 【Leetcode 做题学算法周刊】第七期

    首发于微信公众号<前端成长记>,写于 2020.01.15 背景 本文记录刷题过程中的整个思考过程,以供参考.主要内容涵盖: 题目分析设想 编写代码验证 查阅他人解法 思考总结 目录 12 ...