Python下载拼接地图
地图概览
要下载的地图 大清一统天下全图,如下:
地图图片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下载拼接地图相关推荐
- python下载谷歌地图瓦片_python获取bing地图发布自己的TMS服务(一)下载瓦片
部分结果 bing地图瓦片使用QuadKey作为命名方式. QuadKey简介 如何计算quadkey 在给定level下,把行号tileY和列号tileX转换为2进制,然后行列交叉存储,再转换为4进 ...
- python下载arcgis地图_使用下载器下载适用于arcgis的离线地图切片
1.下载太乐地图下载器或水经注离线地图下载器(官网下载为适用版,加水印且控制下载大小) 2.地图下载器界面如下 太乐地图下载器 水经注离线地图下载器 3.两款软件操作类似,我们就以水经注离线地图下载器 ...
- python下载谷歌地图瓦片_使用 Python 合并地图瓦片
前文提到了合并瓦片图,而瓦片图应用比较多的则是瓦片地图.对地图本就感兴趣的我,也想试试合并互联网地图的某个范围内的地图图层. 随着技术的发展,国内的地图服务商相继将地图瓦片更新为矢量瓦片[1],这下想 ...
- python下载谷歌地图瓦片_python抓取天地图瓦片
[实例简介] 抓取天地图瓦片 [实例截图] [核心代码] # _*_coding:utf-8_*_ from urllib import request import re import urllib ...
- python下载谷歌地图瓦片_openLayers TMS加载谷歌地图瓦片
openLayers TMS中加载谷歌瓦片 经纬坐标(LonLat) 和投影坐标系的转换 /** openLayer根据TMS加载谷歌地图瓦片 (1)先去下载加载谷歌地图瓦片,这样的软件有(水经注 ...
- python下载arcgis地图_互联网地图矢量数据Python获取方法
原标题:互联网地图矢量数据Python获取方法 慧天地"即可订阅 1.获取高德地图路况信息 1)不使用密钥的方法(5分钟获取一次,只有全国主要城市) 主要利用的网址是 http://repo ...
- 如何用python下载瓦片(天地图,谷歌或者其它网站)并拼接
分两步 做这些工作前,先下个python python 3.7版本下载地址 https://pc.qq.com/detail/5/detail_24685.html 腾讯下载 还是很不错的 再来个 ...
- GIS开发二:批量下载和拼接地图瓦片
文章目录 1.简介 1.1 Web墨卡托投影 1.2 经纬度坐标系 1.3 瓦片定义 1.4 瓦片编号 1.5 瓦片和像素 1.6 瓦片计算公式 1.7 网络地图服务(WMS) 1.8 切片地图服务( ...
- 用python做头像_教你用python下载和拼接微信好友头像图片
相信微信大家是用得再多也不过了.那么,对于python+微信,又能玩出什么新的花样呢?下面就给大家带来一个好玩的东西.用python下载所有的微信好友的头像,然后拼接成一张大图.这样,大家就可以转载到 ...
- [python] 下载天地图切片地图
下载xyz地图 资源 下列为常用xyz路由地址 为了避免图片中出现文字标注(道路名称,建筑物名称等)本文选择天地图tian-vec 作为获取资源对象 var mapUrl = {/***** 高德地图 ...
最新文章
- python将sklearn的RocCurveDisplay结果与PrecisionRecallDisplay结果合成为一个图
- Java实战之04JavaWeb-02Request和Response
- 摆脱了Excel重复做表,换个工具轻松实现报表自动化,涨薪三倍
- android自定义对话框_Android自定义提醒对话框
- iOS底层探索之Runtime(四): 动态方法解析
- ELKStack之极速入门(上)
- Java日志设计实践(1) - 常见问题
- RayTracing练习
- pdo怎么建mysql表_PDO操作数据库的基本步骤
- 【Hadoop】:Windows下使用IDEA搭建Hadoop开发环境
- 产品体系建模工具软件
- 算法导论2.3练习答案
- 香蕉派安装64位linux,BANANA PI 入门:香蕉派如何安装系统
- Spark大数据分析与实战:Spark SQL编程初级实践
- 艺术家艾·克里斯汀·麦克拉维·佩恩gp采访23
- Low-Light Image Enhancement via Edge-Enhanced Multi-Exposure Fusion Network阅读札记
- git pull时候报错443
- 【Qt】QWidget类详解(属性篇)
- 第十二周项目5-迷宫问题之图深度优先遍历解法
- 一例Vmware虚拟化Vcenter连接不上解决过程。