地图概览

要下载的地图 大清一统天下全图,如下:

地图图片URL分析

通过抓取图片URL可知:该地图一共切分成了52行,30列个小图

下载每一个切图

代码:

#encoding: utf-8import os
import urllib.request
import urllib.parse
import time
'''
下载地图的各部分小图
'''
start = time.time()
print('开始时间:' + str(start))header_dict = {
'Host': 'lbezone.ust.hk',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0',
'Accept': '*/*',
'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
'Accept-Encoding': 'gzip, deflate',
'Referer': 'http://lbezone.ust.hk/rse/wp-content/plugins/wp-imagezoom/zoom.php?id=ZvltF',
'Connection': 'keep-alive',
}#下载后的图片保存到的路径
filePath = 'D:\\大清地图\\'
#http://lbezone.ust.hk/rse/wp-content/plugins/wp-imagezoom/work/http_cln__sls__sls_lbezone.ust.hk_sls_obj_sls_2_sls_o_sls_b626740_sls_b626740.jpg/div0-0-29.jpg
#地图地址前缀
url='http://lbezone.ust.hk/rse/wp-content/plugins/wp-imagezoom/work/http_cln__sls__sls_lbezone.ust.hk_sls_obj_sls_2_sls_o_sls_b626740_sls_b626740.jpg/'
#总行数-1
pages = 51
#总列数-1
fileNum = 29
#当前行数,从0开始
i = 0while i <= pages:j = 0print('第' + str(i) + '页开始下载================================')while j<= fileNum:try:fileName = 'div0-' + str(i) + '-' + str(j) + '.jpg'print('fileName=' + fileName)request = urllib.request.Request(url=(url + fileName), headers=header_dict)response = urllib.request.urlopen(request)res = response.read()#print(res)#print(type(res))except BaseException:print('第' + str(i) + '-' + str(j) + '页下载失败\n=======================================')else:# 带路径的文件filename =  filePath + str(i) + '\\' + fileName# 将文件路径分割出来file_dir = os.path.split(filename)[0]# 判断文件路径是否存在,如果不存在,则创建,此处是创建多级目录if not os.path.isdir(file_dir):os.makedirs(file_dir)with open(filename, 'wb') as f:f.write(res)f.close()print('第'+ str(i) + '-' + str(j) + '页下载结束\n=======================================')j += 1time.sleep(2)i += 1end = time.time()
print('结束时间:' + str(end))print('执行用时:' + str(end - start) + 's')

下载完成:

切图拼接成地图

把所有的切图拼接成一个完整的地图主要用到了PIL库,图片较多拼接过程有点长,最后地图近500M,拼接核心代码:

#每行合并完后接着合并下一行
def mergeRowThenCol(files,width,height,toImage,rowNum):print('第'+ str(rowNum) + '行files=' + repr(files))for i in range(0, len(files)):file = files[i]pic_fole_head = Image.open(file)# width, height = pic_fole_head.size# print('width=' + str(width))# print('height=' + str(height))loc = (i * width, rowNum * height)print(loc)print('第'+ str(rowNum) +'行,第' + str(i) + "列存放位置" + str(loc))toImage.paste(pic_fole_head, loc)return toImage

最终结果

全图:

局部:

到此完成,改天有时间再把代码放到GitHub上。

Python下载拼接地图相关推荐

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

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

  2. python下载arcgis地图_使用下载器下载适用于arcgis的离线地图切片

    1.下载太乐地图下载器或水经注离线地图下载器(官网下载为适用版,加水印且控制下载大小) 2.地图下载器界面如下 太乐地图下载器 水经注离线地图下载器 3.两款软件操作类似,我们就以水经注离线地图下载器 ...

  3. python下载谷歌地图瓦片_使用 Python 合并地图瓦片

    前文提到了合并瓦片图,而瓦片图应用比较多的则是瓦片地图.对地图本就感兴趣的我,也想试试合并互联网地图的某个范围内的地图图层. 随着技术的发展,国内的地图服务商相继将地图瓦片更新为矢量瓦片[1],这下想 ...

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

    [实例简介] 抓取天地图瓦片 [实例截图] [核心代码] # _*_coding:utf-8_*_ from urllib import request import re import urllib ...

  5. python下载谷歌地图瓦片_openLayers TMS加载谷歌地图瓦片

    openLayers  TMS中加载谷歌瓦片  经纬坐标(LonLat) 和投影坐标系的转换 /** openLayer根据TMS加载谷歌地图瓦片 (1)先去下载加载谷歌地图瓦片,这样的软件有(水经注 ...

  6. python下载arcgis地图_互联网地图矢量数据Python获取方法

    原标题:互联网地图矢量数据Python获取方法 慧天地"即可订阅 1.获取高德地图路况信息 1)不使用密钥的方法(5分钟获取一次,只有全国主要城市) 主要利用的网址是 http://repo ...

  7. 如何用python下载瓦片(天地图,谷歌或者其它网站)并拼接

    分两步 做这些工作前,先下个python python 3.7版本下载地址  https://pc.qq.com/detail/5/detail_24685.html 腾讯下载 还是很不错的 再来个 ...

  8. GIS开发二:批量下载和拼接地图瓦片

    文章目录 1.简介 1.1 Web墨卡托投影 1.2 经纬度坐标系 1.3 瓦片定义 1.4 瓦片编号 1.5 瓦片和像素 1.6 瓦片计算公式 1.7 网络地图服务(WMS) 1.8 切片地图服务( ...

  9. 用python做头像_教你用python下载和拼接微信好友头像图片

    相信微信大家是用得再多也不过了.那么,对于python+微信,又能玩出什么新的花样呢?下面就给大家带来一个好玩的东西.用python下载所有的微信好友的头像,然后拼接成一张大图.这样,大家就可以转载到 ...

  10. [python] 下载天地图切片地图

    下载xyz地图 资源 下列为常用xyz路由地址 为了避免图片中出现文字标注(道路名称,建筑物名称等)本文选择天地图tian-vec 作为获取资源对象 var mapUrl = {/***** 高德地图 ...

最新文章

  1. python将sklearn的RocCurveDisplay结果与PrecisionRecallDisplay结果合成为一个图
  2. Java实战之04JavaWeb-02Request和Response
  3. 摆脱了Excel重复做表,换个工具轻松实现报表自动化,涨薪三倍
  4. android自定义对话框_Android自定义提醒对话框
  5. iOS底层探索之Runtime(四): 动态方法解析
  6. ELKStack之极速入门(上)
  7. Java日志设计实践(1) - 常见问题
  8. RayTracing练习
  9. pdo怎么建mysql表_PDO操作数据库的基本步骤
  10. 【Hadoop】:Windows下使用IDEA搭建Hadoop开发环境
  11. 产品体系建模工具软件
  12. 算法导论2.3练习答案
  13. 香蕉派安装64位linux,BANANA PI 入门:香蕉派如何安装系统
  14. Spark大数据分析与实战:Spark SQL编程初级实践
  15. 艺术家艾·克里斯汀·麦克拉维·佩恩gp采访23
  16. Low-Light Image Enhancement via Edge-Enhanced Multi-Exposure Fusion Network阅读札记
  17. git pull时候报错443
  18. 【Qt】QWidget类详解(属性篇)
  19. 第十二周项目5-迷宫问题之图深度优先遍历解法
  20. 一例Vmware虚拟化Vcenter连接不上解决过程。

热门文章

  1. Mac 下载破译版本 secureFX 和 secureCRT
  2. Linux 安装字体
  3. Win 10 添加多国语言
  4. 最互联网的定制家居增长新势力,如何三招实现疫情期的逆势增长?
  5. GRE词汇统计大全(二)
  6. ASPJpeg和ASPUpload组件的一些属性和方法
  7. potainer 日志_分享10个优秀的日志分析工具
  8. 基于flask的可视化动漫分析网站
  9. 接上文安装完opencv后安装viz模块
  10. SAP在阿里云白皮书-第二章 阿里云概念解析