Calculation_gdal.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. # -*- coding: utf-8 -*-
  2. __author__ = 'wanger'
  3. __date__ = '2024-08-20'
  4. __copyright__ = '(C) 2024 by siwei'
  5. __revision__ = '1.0'
  6. import os
  7. try:
  8. from osgeo import gdal
  9. except ImportError:
  10. import gdal
  11. def raster_value(path: str) -> dict:
  12. file = os.path.basename(path)
  13. file_format = os.path.splitext(file)[1]
  14. file_name = file.split(".")[0]
  15. valid_extension = [".tif", ".tiff", ".gtiff"]
  16. if file_format.lower() in valid_extension:
  17. try:
  18. gtif = gdal.Open(path)
  19. srcband = gtif.GetRasterBand(1)
  20. srcband.ComputeStatistics(0)
  21. n = srcband.GetMaximum() - srcband.GetMinimum() + 1
  22. n = int(n)
  23. min_value = srcband.GetMinimum()
  24. max_value = srcband.GetMaximum()
  25. result = {
  26. "N": n,
  27. "min": min_value,
  28. "max": max_value,
  29. "file_name": file_name,
  30. }
  31. return result
  32. except Exception as error:
  33. print("An error occured when computing band statistics: ", error)
  34. raise error
  35. else:
  36. print("sorry, file format is incorrect")