【Python&RS】基于矢量范围批量下载遥感瓦片高清数据(天地图、高德、谷歌等)

发布时间:2023年12月29日

        这个是之前写的代码了,正好今天有空所以就和大家分享一下。我们在处理项目时,有时候需要高清底图作为辅助数据源去对比数据,所以可能会需要卫星数据。所以今天就和大家分享一下如何使用Python基于矢量范围批量下载高清遥感瓦片数据。

1 读取矢量边界

        这里我们使用osgeo中的osr、ogr库去读取矢量的地理范围。之前也分享过,感兴趣的可以去Python&GIS专栏里面看一看。

def Open_Vector(path_shp):
    """
    :param path_shp: 输入84坐标矢量
    :return: 返回四至范围
    """
    ds = ogr.Open(path_shp, True)
    # True表示以读写方式打开
    layer = ds.GetLayer(0)
    # 获取图层
    feature = layer.GetFeature(0)
    geom = feature.GetGeometryRef()
    # 获取该要素的地理空间范围
    left, right, down, up = geom.GetEnvelope()
    # 获取图层的地理范围
    return left, right, down, up

2 通过经纬度计算航带数

        这里没什么好说的,就是基础的公式,计算即可。这个函数在整个函数作为辅助函数,主程序会自己调用它。

def calculation_tile(lat, lon, zoom):
    """
    :param lat: 84坐标纬度
    :param lon: 84坐标经度
    :param zoom: 缩放级别
    :return: 瓦片的行列号
    """
    # 将经纬度从WGS84坐标系转换为GCJ02坐标系
    # lon_deg,lat_deg = WGS84_To_GCJ02(lon_deg,lat_deg)
    # 根据缩放级别计算格网数量
    n = 2.0 ** zoom
    # 将纬度从度转换为弧度
    lat_radio = math.radians(lat)
    # 计算瓦片中的x坐标
    tile_x = int((lon + 180.0) / 360.0 * n)
    # 计算瓦片中的y坐标
    tile_y = int((1.0 - math.log(math.tan(lat_radio) + (1 / math.cos(lat_radio))) / math.pi) / 2.0 * n)
    # 返回计算得到的瓦片坐标(行和列)
    return tile_x, tile_y 

3 获取瓦片下载链接

        这里使用了基础的反爬虫方法,随机调用请求头。

def Get_image(url, x, y)
文章来源:https://blog.csdn.net/m0_56729804/article/details/135288353
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。