GDAL学习记录

一、osgeo常识

  1. gdal: 处理栅格

    • 重采样方法:gdal.GRA_*
    • 数据类型:gdal.GDT_*
    • 关键类:gdal.Dataset, gdal.Driver, gdal.Band
  2. osr:【proj = osr.SpatialReference().SetWellKnownGeogCS(‘WGS84’)】

    • wkt: ‘GEOGCS[“WGS 84”,…]’
    • proj4: ‘+proj=longlat +datum=WGS84 +no_defs’
    • epsg: ‘4326’,【proj.GetAuthorityCode(None)】
      • 投影坐标系:32601-32660,Central Meridian = (code-32601)*6-117
  3. ogr: 处理矢量

    • 几何类型: ogr.wkb*

    • 字段值类型:ogr.OFT*

      1234567
      ogr.DataSourceGetDriverGetLayer
      GetLayerCountogr.Driverogr.LayerGetFeatureGetLayerDefnGetGeomTypeGetSpatialRef
      GetExtent
      GetFeatureCount
      ogr.Featureogr.FeatureDefnogr.wkb*osr.SpatialReference
      ogr.FeatureGetFieldDefnGetFieldTypeGetGeometryRefogr.FeatureDefnGetFieldDefn
      GetFieldCount
      GetField
      ogr.FieldDefnogr.OFTogr.GeometryGetSpatialReferenceGetFieldCountogr.FieldDefn
      GetGeometryName
      GetGeometryCount
      GetPointCount
      GetEnvelope
      osr.SpatialReferenceGetName
      GetWidth
      GetType
      GetPrecision

二、Warp和WarpOptions

gdal.WarpOptions(): Create a WarpOptions() object that can be passed to gdal.Warp()

  • format — 输出格式 (“GTiff”, etc…)

  • outputType — output type (gdalconst.GDT_Byte, etc…)

  • srcNodata, dstNodata — source(output) nodata value(s)

  • multithread — whether to multithread computation and I/O operations

  • creationOptions — list of creation options, eg: [‘COMPRESS=LZW’,“TILED=True”]

    • TILED=YES/NO:指定输出数据集是否为分块格式。
    • COMPRESS=[ “JPEG”, “LZW”, “PACKBITS”, “DEFLATE”, “ZSTD”]:指定输出数据集的压缩格式;
    • BLOCKXSIZE=SIZE 和 BLOCKYSIZE=SIZE:指定输出数据集的块大小。
    • NUM_THREADS=[<integer>|NUM_CPUS]:
  • warpOptions — list of warping options, eg: [‘NUM_THREADS=ALL_CPUS’]

    • WRITE_FLUSH=YES/NO: 强制在处理每个块之后刷新到数据磁盘
    • NUM_THREADS=integeror ALL_CPUS: 用于并行化warp计算的线程数
  • coordinateOperation – coordinate operation as a PROJ string or WKT string

  • copyMetadata — whether to copy source metadata

  • overviewLevel — To specify which overview level of source files must be used

  • 影像裁剪

    • cutlineDSName — 分割线数据名
    • cutlineLayer — 分割线图层名
    • cutlineWhere — 分割线where字句
    • cutlineSQL — 分割线SQL声明
    • cutlineBlend — 以像素为单位的分割线混合距离
    • cropToCutline — 是否使用分割线范围作为输出界限
  • 影像镶嵌

  • 影像重采样: 【xRes, yRes, srcSRS, dstSRS, resampleAlg】

  • 影像重投影:【srcSRS, dstSRS, resampleAlg】

  • 几何校正/正射校正

    • rpc — whether to use RPC transformer
    • polynomialOrder — order of polynomial GCP interpolation
    • transformerOptions — list of transformer options, eg:[‘RPC_DEM=’ + dem]
1、影像裁剪
src = gdal.Open(in_tif)
warpOptions = gdal.WarpOptions(format='GTiff', cutlineDSName=in_shp_r, cropToCutline=True)
gdal.Warp(out_tif_clip_r, src, options=warpOptions)
gdal.Warp(out_tif_clip_nr, src, format='GTiff', cutlineDSName=in_shp_nr, cropToCutline=True)
2、影像重投影、重采样
src_clip = gdal.Open(out_tif_clip_r)
gdal.Warp(out_tif_reproject, src_clip, dstSRS='EPSG:32650', resampleAlg=gdal.GRA_Bilinear)
out_tif_reproject = gdal.Open(out_tif_reproject)
gdal.Warp(out_tif_resample, out_tif_reproject, format='GTiff', xRes=10, yRes=10, resampleAlg=gdal.GRA_Bilinear)
3、影像镶嵌
s2a1, s2a2 = r"F:\RSdataLocal\S2A_20231024\T50SMJ.tif", r"F:\RSdataLocal\S2A_20231024\T50TMK.tif"
out_tif_mosaic = r"F:\RSdataLocal\S2A_20231024\T50_mosaic.tif"
in_proj = gdal.Open(s2a1).GetProjection()
gdal.Warp(out_tif_mosaic, [s2a1, s2a2], format='GTiff', srcSRS=in_proj, copyMetadata=True)
fig, [ax1, ax2] = plt.subplots(1, 2, figsize=(12, 5))
show_rgb(out_tif_clip_r, ax1, vmax=3000), show_rgb(out_tif_clip_nr, ax2, vmax=3000)

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
辐射定标是将遥感图像的DN值转换为具有物理意义的值,如辐射亮度或反射率。在Python中,可以使用GDAL库来实现辐射定标。 首先,需要准备遥感图像数据和辐射增益、辐射偏置的参数。这些参数可以从卫星官网等地方获取。 接下来,可以使用GDAL库中的函数来进行辐射定标。具体步骤如下: 1. 导入GDAL库:`import gdal` 2. 打开遥感图像文件:`dataset = gdal.Open('path_to_image')` 3. 获取图像的波段数量:`num_bands = dataset.RasterCount` 4. 循环遍历每个波段: - 获取波段对象:`band = dataset.GetRasterBand(band_index)` - 获取波段的辐射增益和辐射偏置:`gain = band.GetMetadataItem('SCALE_FACTOR')`,`offset = band.GetMetadataItem('OFFSET')` - 读取波段的DN值:`data = band.ReadAsArray()` - 进行辐射定标计算:`radiance = gain * data + offset` - 将辐射定标结果保存到新的文件中或者进行后续处理。 需要注意的是,具体的代码实现可能会因为遥感图像的格式和数据类型而有所不同。因此,建议在实际操作中参考GDAL库的文档和示例代码进行具体的实现。 \[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [【gdal学习笔记】利用python 的gdal,以及相关库进行遥感图像处理(影像裁剪,辐射定标,大气校正,异常值...](https://blog.csdn.net/qq_47730141/article/details/125560605)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [遥感+python 1.2 辐射定标](https://blog.csdn.net/Harry233/article/details/131248391)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值