Advertisement
Guest User

Untitled

a guest
Jul 17th, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.80 KB | None | 0 0
  1. id (integer), rid (integer), fdate (date), rast(raster), layer(integer)
  2.  
  3. # -*- coding: utf-8 -*-
  4.  
  5. from datetime import timedelta, date
  6. from qgis.analysis import QgsRasterCalculator, QgsRasterCalculatorEntry
  7.  
  8. config = {
  9. "dbname" : "model",
  10. "user" : "postgres",
  11. "host" : "localhost",
  12. "password": "******"
  13. }
  14.  
  15. start_date = date(2009, 1, 1)
  16. end_date = date(2017, 1, 1)
  17. delta = timedelta(1)
  18.  
  19. initial_date = start_date
  20. layer_entry = []
  21. num = 1
  22. while start_date < end_date:
  23. connString_ = "PG: dbname=%(dbname)s host=%(host)s user=%(user)s password=%(password)s port=5432 mode=2 column=rast table=soil_moist where=%(where)s" %
  24. {"dbname": config["dbname"],
  25. "host": config["host"],
  26. "user": config["user"],
  27. "password": config["password"],
  28. "where": 'fdate='%s' AND layer=1' % start_date
  29. }
  30. layer = QgsRasterLayer(connString_, "%s_%s" % (str(start_date), str(num)))
  31. raster_entry = QgsRasterCalculatorEntry()
  32. raster_entry.ref = 'layer@%s' % num
  33. raster_entry.raster = layer
  34. raster_entry.bandNumber = 1
  35. layer_entry.append(raster_entry)
  36. num+=1
  37. if ((start_date + delta).month > start_date.month) or ((start_date + delta).year > initial_date.year):
  38. output_path = "D:/output/%s.tif" % start_date
  39. expression = "("
  40. for idx, layer_ in enumerate(layer_entry):
  41. expression += "layer@%s*" % str(idx+1)
  42. expression += "1)"
  43. expression += "/%s" % str(len(layer_entry))
  44. calc = QgsRasterCalculator(expression, output_path, "GTiff", layer.extent(), layer.width(), layer.height(), layer_entry)
  45. calc.processCalculation()
  46. # Reset Values
  47. num = 1
  48. layer_entry = []
  49. start_date+=delta
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement