代码搬运工的逆袭

代码搬运工的逆袭

1-介绍

1.1 主要内容

(1)在本教程中,将介绍如何在 Python 中使用 gdalwarp 将栅格数据重新投影到不同的坐标参考系,影像重采样(改变影像分辨率)、以及根据矢量 shapefile文件将影像对应部分进行裁剪;
(2)技术路线:在python脚本中使用gdal.Warp,不同的功能对应不同的可选项参数

  • 1)坐标参考系改变对应:gdal.Warp(dstSRS = “EPSG:4326”)目标参考系,采用EPSG方式。
  • 2)影像分辨率gdal.Warp(“demRes.tif”, ds, xRes = 150, yRes = 150,resampleAlg),xRes水平采样分辨率,yRes垂直方向采样分辨率,resampleAlg对应采样的方法);
  • 3)gdal.Warp(“demClip.tif”, ds, cutlineDSName = “star.shp”,cropToCutline = True, dstNodata = np.nan),对应参数cutlineDSNane支持矢量shp文件;

(3)视频地址:B站对应教程-4-在Python中使用GDAL进行投影转换、影像重采样以及裁剪栅格数据

1.2 EPSG

(1)EPSG代码是一种用于标准化地理空间参考系统(包括坐标系、投影、地理坐标系等)的唯一编码。这些编码帮助用户在不同的地理信息系统(GIS)软件和数据集中准确地识别和使用特定的地理空间参考系统。每个EPSG代码都对应着一组特定的参数,如椭球体、单位、地理坐标系或投影方式,这使得它们在全球范围内具有普遍的应用价值

(2)以下是一些常见的EPSG代码及其对应的坐标系:

  • 1)EPSG:4326 - 这是WGS84地理坐标系的代码,目前是最流行的地理坐标系统之一。它广泛应用于GPS设备和在线地图服务中,因为GPS定位就是基于这个坐标系统的34。
  • 2)EPSG:3857 - 网络墨卡托投影,适用于在线地图服务,如谷歌地图、百度地图和高德地图等。这种投影方式因其在互联网上的高效性而被广泛采用;
  • EPSG:4490 - 国家2000经纬度坐标系(CGCS2000)。

(3)epsg.io网站,以便用户可以轻松地查找特定EPSG代码对应的投影参数和其他相关信息:epsg代码查询网站

2-代码实现

2.1 数据介绍

2.2 代码实现

from osgeo import gdal
import numpy as np
import matplotlib.pyplot as plt

ds = gdal.Open(r"GDAL_testing_data\JAX_IMG1_PAN.TIF")

# ============================1.坐标系变换=================================
dsReprj = gdal.Warp("demReprj.tif", ds, dstSRS = "EPSG:4490")

# ============================2.影像重采样=================================
dsRes = gdal.Warp("demRes.tif", ds, xRes = 1, yRes = 1, 
                  resampleAlg = "bilinear")

# ============================3.影像裁剪=================================
# 确保栅格数据和 shapefile 具有相同的投影
dsClip = gdal.Warp("demClip.tif", ds, cutlineDSName = "star.shp",
                    cropToCutline = True, dstNodata = np.nan)

# ============================4.影像裁剪可视化=================================
array = dsClip.GetRasterBand(1).ReadAsArray()
plt.figure()
plt.imshow(array)
plt.colorbar()
plt.show()

# close your datasets!
ds = dsClip = dsRes = dsReprj = None

2.3 结果及效果显示

(1)坐标参考系改变:由原来的WGS84坐标转换为CGSC2000坐标系
转换坐标系后,影像在QGIS显示中无变化,这应该是正常的,根据对于精度在10m以上的数据来说、WGS84坐标系=CGCS2000坐标系的结论,结论来源
【GDAL-Python】4-在Python中使用GDAL进行投影转换、影像重采样以及裁剪栅格数据-LMLPHP
【GDAL-Python】4-在Python中使用GDAL进行投影转换、影像重采样以及裁剪栅格数据-LMLPHP
(2)

3.参考资料

TODO

04-19 06:40