Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- id (integer), rid (integer), fdate (date), rast(raster), layer(integer)
- # -*- coding: utf-8 -*-
- from datetime import timedelta, date
- from qgis.analysis import QgsRasterCalculator, QgsRasterCalculatorEntry
- config = {
- "dbname" : "model",
- "user" : "postgres",
- "host" : "localhost",
- "password": "******"
- }
- start_date = date(2009, 1, 1)
- end_date = date(2017, 1, 1)
- delta = timedelta(1)
- initial_date = start_date
- layer_entry = []
- num = 1
- while start_date < end_date:
- 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" %
- {"dbname": config["dbname"],
- "host": config["host"],
- "user": config["user"],
- "password": config["password"],
- "where": 'fdate='%s' AND layer=1' % start_date
- }
- layer = QgsRasterLayer(connString_, "%s_%s" % (str(start_date), str(num)))
- raster_entry = QgsRasterCalculatorEntry()
- raster_entry.ref = 'layer@%s' % num
- raster_entry.raster = layer
- raster_entry.bandNumber = 1
- layer_entry.append(raster_entry)
- num+=1
- if ((start_date + delta).month > start_date.month) or ((start_date + delta).year > initial_date.year):
- output_path = "D:/output/%s.tif" % start_date
- expression = "("
- for idx, layer_ in enumerate(layer_entry):
- expression += "layer@%s*" % str(idx+1)
- expression += "1)"
- expression += "/%s" % str(len(layer_entry))
- calc = QgsRasterCalculator(expression, output_path, "GTiff", layer.extent(), layer.width(), layer.height(), layer_entry)
- calc.processCalculation()
- # Reset Values
- num = 1
- layer_entry = []
- start_date+=delta
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement