【Python&RS】基于矢量范围批量下载遥感瓦片高清数据(天地图、高德、谷歌等)
2023-12-29 23:04:32
这个是之前写的代码了,正好今天有空所以就和大家分享一下。我们在处理项目时,有时候需要高清底图作为辅助数据源去对比数据,所以可能会需要卫星数据。所以今天就和大家分享一下如何使用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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!