CODE REPOSITORY
READING LANSCAPES IN TIME
QGIS PYTHON CONSOLE - TIF MASK
from qgis.core import QgsProject, QgsRasterLayer
import processing
import os
raster_layer = QgsProject.instance().mapLayersByName("9.28.25.DEM")[0]
output_path = "C:/Users/bayan/Documents/L+U/EVLU 3004 - Ecology and Design 2/ReadingLandscapesInTime/GIS/9.28.25_MASK.tif"
result = processing.run("gdal:rastercalculator", {
'INPUT_A': raster_layer.source(),
'BAND_A': 1,
'FORMULA': "A > 246",
'OUTPUT': output_path,
'RTYPE': 5, # Float32
'NO_DATA': None,
'OPTIONS': '',
'EXTRA': ''
})
if os.path.exists(output_path):
binary_layer = QgsRasterLayer(output_path, "9.28.25_MASK", "gdal")
if binary_layer.isValid():
QgsProject.instance().addMapLayer(binary_layer)
print(" Binary mask created and loaded successfully.")
else:
print("Raster layer loaded but is invalid.")
else:
print("Output file not found. Check permissions or formula.")
2. SCALABLE URBAN TREE CANOPY FOR CANADIAN CITIES (UNDER PEER REVIEW)
GOOGLE EARTH ENGINE - LAND SURFACE TEMPERATURE
(Under Review)
GOOGLE EARTH ENGINE - SPECTRAL INDICES
(Under Review)
RANDOM FOREST - REGRESSION
(Under Review)
Any WHITE text MUST be updated to your local file name(s)
QGIS PYTHON CONSOLE - TIF TRANSLATION
from osgeo import gdal\
in_path = r"C:/Users/bayan/Documents/L+U/EVLU 3004 - Ecology and Design 2/ReadingLandscapesInTime/GIS/10.1.25_MASK.tif"
dx = 10.0 # shift 10 m east (positive = right)
dy = -5.0 # shift 5 m south (negative = down)
ds = gdal.Open(in_path, gdal.GA_Update)
if ds is None:
raise RuntimeError("Could not open raster. Check path/permissions.")
gt = ds.GetGeoTransform() # (originX, pixelW, rotX, originY, rotY, pixelH)
new_gt = (gt[0] + dx, gt[1], gt[2], gt[3] + dy, gt[4], gt[5])
ds.SetGeoTransform(new_gt)
ds = None
print(f"Raster shifted by {dx} m (east) and {dy} m (north).")
GOOGLE EARTH ENGINE - GLOBAL CANOPY HEIGHT MODEL
(Under Review)
GOOGLE EARTH ENGINE - GLOBAL HUMAN SETTLEMENT
(Under Review)
QGIS PYTHON CONSOLE- MASTER LAYER SYNTHESIS
(Under Review)