【问题标题】:How can I cut a dem by longitude and latitude in python gdal?如何在 python gdal 中按经度和纬度切割 dem?
【发布时间】:2021-02-06 05:57:24
【问题描述】:

我想知道是否可以在 python 中将 srtm dem 数据(.tif)切割成更小的部分。

我们知道经度和纬度可以通过

# importing package
from osgeo import gdal

# load tiff data
dataset=gdal.Open("srtm_input.tif")

# transformation data
im_geotrans = dataset.GetGeoTransform()

# calcualte boundaries
minx = im_geotrans[0]
miny = im_geotrans[3] + im_width*im_geotrans[4] + im_height*im_geotrans[5]
maxx = im_geotrans[0] + im_width*im_geotrans[1] + im_height*im_geotrans[2]
maxy = im_geotrans[3]

minxminymaxxmaxy 将给出经度和纬度的边界。

我的问题是:如果我们提供minxminymaxxmaxy形式的四个边界(即经度和纬度),我可以使用osgeo来切割dem数据吗?

我可能没有清楚地解释这个问题,所以我在这里添加一张图片。

如果我已经拥有美国以下地区的 DEM 数据,并且我想获得具有精确经度和纬度边界的红色阴影部分(红线)。我可以用osgeo.gdal 做到这一点吗?

【问题讨论】:

    标签: python geolocation gdal osgeo srtm


    【解决方案1】:

    是的,您可以很容易地做到这一点。 唯一的要求是在整个过程中保持坐标系一致。 (例如,您的边界坐标应与您的 srtm 数据集位于同一坐标系中) 你可以使用gdal翻译

    我也举了一个使用 GeoPandas 来获取边界坐标的例子

    from osgeo import gdal
    import geopandas as gpd
    
    # e.g. srtm.tif coordinates epsg:4326
    dataset = gdal.Open("srtm_input.tif")
    
    # path to where you want the clipped raster
    outputSrtm = "path/to/your/clipped/srtm.tif"
    
    # e.g. shapefile.shp coordinates epsg:4326
    minx, miny, maxx, maxy = gpd.read_file("path/to/shapefile.shp").unary_union.bounds
    
    ds = gdal.Translate(outputSrtm , dataset, 
                        projWin = [minx, maxy,
                                   maxx, miny]) # OR [ulx, uly, lrx, lry]
    ds = None
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-21
      • 1970-01-01
      • 2021-05-07
      • 1970-01-01
      • 2011-07-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多