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

  1. #coding=utf-8
  2. import urllib.request
  3. import os
  4. import socket
  5. import zlib
  6. import math
  7.  
  8. # python版本3.7
  9. # 设置超时
  10. socket.setdefaulttimeout(60)
  11.  
  12. def mkdir(path):
  13.  
  14. # 去除首位空格
  15. path=path.strip()
  16. # 去除尾部 \ 符号
  17. path=path.rstrip("\\")
  18.  
  19. # 判断路径是否存在
  20. # 存在 True
  21. # 不存在 False
  22. isExists=os.path.exists(path)
  23.  
  24. # 判断结果
  25. if not isExists:
  26. # 如果不存在则创建目录
  27. # 创建目录操作函数
  28. os.makedirs(path)
  29.  
  30. print('path create success!')
  31. return True
  32. else:
  33. # 如果目录存在则不创建,并提示目录已存在
  34. print('path already exist!')
  35. return False
  36.  
  37. # 定义要创建的目录
  38. mkpath="F:\\python\\TMS\\"
  39. # 调用函数
  40. #mkdir(mkpath)
  41.  
  42. def callbackfunc(blocknum, blocksize, totalsize):
  43. '''回调函数
  44. @blocknum: 已经下载的数据块
  45. @blocksize: 数据块的大小
  46. @totalsize: 远程文件的大小
  47. '''
  48. # percent = 100.0 * blocknum * blocksize / totalsize
  49. # if percent > 100:
  50. # percent = 100
  51. print("--")
  52.  
  53. def long2tile(lon, zoom) :
  54. return (math.floor((lon + 180) / 360 * math.pow(2, zoom)))
  55.  
  56. def lat2tile(lat, zoom):
  57. 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)))
  58.  
  59. #范围
  60. zmin = 9
  61. zmax = 14
  62. south_edge = 25.2526
  63. north_edge = 26.6384
  64. west_edge = 118.376
  65. east_edge = 120.512
  66.  
  67. #便利URL,获取数据
  68. def getDataByUrl():
  69. for z in range(zmin,zmax):
  70. top_tile = lat2tile(north_edge, z)
  71. left_tile = long2tile(west_edge, z)
  72. bottom_tile = lat2tile(south_edge, z)
  73. right_tile = long2tile(east_edge, z)
  74. minLong = min(left_tile, right_tile)
  75. maxLong = max(left_tile, right_tile)
  76. minLat = min(bottom_tile, top_tile)
  77. maxLat = max(bottom_tile, top_tile)
  78. for x in range(minLong,maxLong):
  79. path=str(z)+"\\"+str(x)
  80. temppath=mkpath+path
  81. mkdir(temppath)
  82. for y in range(minLat,maxLat):
  83. url=str(z) + '/' + str(x) + '/' + str(y)
  84. str3='https://cartodb-basemaps-a.global.ssl.fastly.net/dark_nolabels/'+ url + '.png'
  85. path2=temppath+'\\'+str(y)+'.png'
  86. try:
  87. urllib.request.urlretrieve(str3,path2)
  88. except Exception as e:
  89. print(e)
  90.  
  91. 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. 如何删除Word自动编号后文字和编号之间的空白距离

    一.出现的现象:使用word进行自动编号之后,编号和其后的文字出现如下图所示的空白 二.如何解决问题 选中列表内容右键->调整列表缩进->选择“编号之后(W)"为不特别标注-&g ...

  2. ABP取其精华

    目录 ABP中使用Swagger UI集成接口文档 ABP-AsyncLocal的使用 ABP-多个DbContext实现事物更新 持续更新中.

  3. JSR-133内存模型手册

    1.介绍 JVM支持多种线程的执行,Threads代表的是线程类,位于java.lang.Thread包下,唯一的方式就是为用户在这个类下的对象创建线程,每一个线程关联着一个对象,一个线程将在star ...

  4. 洛谷$P$1486 郁闷的出纳员 $[NOI2004]$ $splay$

    正解:$splay$ 解题报告: 传送门! 依然先考虑要呲呲些什么操作鸭$QwQ$ 其实就只要一个删除区间,一个查询第$k$大,还一个插入就欧克? 删除区间的话直接旋转下根什么的然后直接把子树删了就好 ...

  5. ELK部署检测nginx日志demo

    ELK E: ElasticSearch 搜索引擎 存储 https://www.elastic.co/cn/downloads/elasticsearch L: Logstash 日志收集 http ...

  6. 公子奇带你一步一步了解Java8中Lambda表达式

    在上一篇<公子奇带你一步一步了解Java8中行为参数化>中,我们演示到最后将匿名实现简写为 (Police police) -> "浙江".equals(poli ...

  7. 【汇编】2.第一个程序:hello world

    前言 在上篇博文 [汇编]1.汇编环境的搭建:DOSBox的安装 中,我们完成了 1.汇编环境模拟器DOSBox的安装. 2.汇编编译相关程序MASM6的下载. 在上篇文章的最后我们提到了挂载DOS程 ...

  8. [技术翻译]使用Nuxt生成静态网站

    本周再来翻译一些技术文章,本次预计翻译三篇文章如下: 04.[译]使用Nuxt生成静态网站(Generate Static Websites with Nuxt) 05.[译]Web网页内容是如何影响 ...

  9. TieredMergePolicy

    setFloorSegmentMB多少MB一个层级,在此区间的segment分为一个floor. setMaxMergeAtOnce一次merge多少个segment. setSegmentsPerT ...

  10. 倍增LCA模板2董博文版 伪代码

    Dfs(int rt){ f[][rt]; ;k<=;k++) f[k][rt]=f[k-][f[k-][rt]]; } int LCA(int x,int y){ if(Dp[x]<Dp ...