通过 GetHistogram()函数 获取像素频率直方图,可以计算植被分类中每种植被类型的面积。可以指定要使用的组距(默认为256),第一个:-0.5 - 0.5、第二个:0.5 - 1.5,以此类推。
函数签名:
GetHistogram([min], [max], [buckets], [include_out_of_range], [approx_ok],[callback], [callback_data])
min:直方图最小像素值,默认为0.5
max:直方图最大像素值,默认为255.5
buckets:组距数量,默认为256
include_out_of_range:是否将最小像素值聚集到最小组距中,将大于最大值的像素值聚集到最大组距中,默认False
approx_ok:是否使用近似数值,函数将运行更快,默认为True。如果计算精确数值,设置为False。
callback:计算直方图时定期调用的函数,对于处理大型数据集有用,默认为0,表示不用callback
callback_data:传递给回调函数数据
import os
from osgeo import gdal
data_dir = r'D:\Utah'
os.chdir(os.path.join(data_dir, 'Switzerland'))
ds = gdal.Open('dem_class_2.tif')
band = ds.GetRasterBand(1)
approximate_hist = band.GetHistogram()
exact_hist = band.GetHistogram(approx_ok=False)
print('近似值:', approximate_hist[:7], sum(approximate_hist))
print('精确值:', exact_hist[:7], sum(exact_hist))
print(band.GetDefaultHistogram())
hist = band.GetHistogram(0.5, 6.5, 3, approx_ok=False)
band.SetDefaultHistogram(1, 6, hist)
print(band.GetDefaultHistogram())
min_val, max_val, n, hist = band.GetDefaultHistogram()
print(min_val, max_val, n)
print(hist)
近似值: [0, 6564, 3441, 3531, 2321, 802, 0] 16659
精确值: [0, 27213, 12986, 13642, 10632, 5414, 0] 69887
(-0.5, 255.5, 256, [0, 6564, 3441, 3531, 2321, 802, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
(1.0, 6.0, 3, [40199, 24274, 5414])
1.0 6.0 3
[40199, 24274, 5414]
目录1.地面控制点(GCP)2.多幅图像镶嵌3.颜色表1.地面控制点(GCP) 如果想将一个旧的航片或者扫描地图,变成地理数据集,可以运用控制点来进行变换。图像转换类型的不同,所需要的地面控制点的数量也不同,常用方法:一阶多项式(至少3个点)、多项式变换(尽可能多的控制点)、样条插值法(对数据的不同部分使用不同的方程,可以精确拟合所提供的控制点,但可能导致图像其他部分扭曲)。 样条插值法: 使用GDAL自带的 gdal warp 程序进行各种插值方法。获取点坐标的过程比较艰难,但是必须人工
项目概述:
本项目致力于深入实践Python-GDAL库在地理数据处理方面的应用,并对此进行了全面的源码总结。项目主要采用Python语言编写,包含总计126个文件,具体文件类型分布如下:
- Python脚本文件(.py):32个
- 图像文件(.png):31个
- 栅格图像文件(.tif):24个
- 图片文件(.jpg):3个
- 空间数据文件(.asc):3个
- 数据库文件(.dbf):3个
- 空间索引文件(.sbn):3个
- 空间索引文件(.sbx):3个
- 矢量数据文件(.shp):3个
- 矢量索引文件(.shx):3个
本项目的实践总结基于Python-GDAL库,不仅包含了丰富的代码实现,还涉及多种常见地理数据格式的处理,是对地理信息系统开发与应用的一次深度探索和总结。
利用PIE平台下载的数据,经常会遇到数据缺失的情况,因此必须对缺失数据进行必要的处理。空间数据插值是最常用的方法。本文使用邻域均值法对空值数据进行填充。
本文的代码转载于:http://gaohr.win/site/blogs/2018/2018-09-03-img-comps.html#
from osgeo import gdal,osr
class Raster:
def __init__(self, nRows, nCols, data, noDataValue=None, geotrans
import numpy as np
gdal.AllRegister()
osgeo.gdal.SetConfigOption('GDAL_FILENAME_IS_UTF8', 'NO')
osgeo.gdal.SetConfigOption('SHAPE_ENCODING', 'gb2312')
filePath = r'.
# 执行裁剪操作
arcpy.Clip_management(raster, "#", output_raster, clip_extent, "#", "ClippingGeometry")
2. 批量拼接栅格数据:
```python
# 导入需要的库
import arcpy
# 设置工作空间
arcpy.env.workspace = "path/to/workspace"
# 获取待拼接的栅格数据列表
raster_list = arcpy.ListRasters()
# 设置输出路径和文件名
output_raster = "path/to/output/output_raster.tif"
# 执行拼接操作
arcpy.MosaicToNewRaster_management(raster_list, "path/to/output", output_raster, "#", "#", "#", 1, "LAST", "FIRST")
请注意,以上代码仅为示例,您需要根据实际情况修改路径和参数。