搜索
简帛阁>技术文章>根据范围爬TMS规则瓦片

根据范围爬TMS规则瓦片

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

#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()

 

因为需要简单写了一个下载地图的爬虫,代码如下:codingutf8importurllibrequestimportosimportsocketimportzlibimportmathpython版本
加载地图切片有两种方式,一种是TMS服务,一种是WMTS服务,两种方式加载WMTS服务各有不同,如何用TMS加载geoserver生成的切片呢?一、TMS和WMTS区别1、协议TMS仅支持RESTFU
根据百度经纬度坐标计算该点所在瓦片的行列号的算法好像并没有公开,网上相关资料很少。通过研究百度地图JavaScriptAPI源代码(经过混淆后的),大致了解计算过程,现将具体过程解释如下:1Java
0x00level:0x040x01code:packageorgapachelucenedemobigquery;importjavaioIOException;importjavautilComp
实现方式:其思想和范围取模分片一样,由于日期取模会出现数据热点问题,所以先根据日期分组,再根据时间hash使得短期数据分布跟均匀。优点:避免扩容时的数据迁移,可以在一定程度上避免范围分片的热点问题缺点
原文地址https://blogcsdnnet/qq_39545674/article/details/82597106一、SCI简介SCI(SerialCommunicationInterface)
花了一天整理和总结,有表达上或者技术理解上错误,希望指正。联系邮箱lygofly@163comPLL作用就是对外部时钟进行倍频,降低产生高频时钟信号的成本。但是倍频配置的时候,需要在特定的条件下更改,
花了半天时间的整理和总结,有表达上或者技术理解上错误,希望指正。联系邮箱lygofly@163comTMS320F28335通过外部时钟信号、OSC和PLL产生倍频时钟信号CLKIN后,CLKIN经过
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上
>Title:生成測試數據>Author:wufeng4552>Date:2009092115:08:41declare@Ttable([Col1]int,[Col2]int,[Co