Tengo una capa rasterizada y una capa de punto vectorial. Calculé la distancia entre el centro de cada píxel y cada punto basándome en @YoLecomte y @mgri, este enlace y xunilk, este enlace . Para cada pixel hay multidistancia, quiero sumar esta multidistancia para cada pixel en la capa rasterizada y escribirlos en un nuevo archivo rasterizado. En la última parte de este código para sumar las distancias para cada píxel, ¿cuál es el error?
def pixel2coord(x, y):
xp = (pixelWidth * x) + originX + (pixelWidth/2)
yp = (pixelHeight * y) + originY + (pixelHeight /2)
return QgsPoint(xp, yp)
pntLayer = QgsVectorLayer("/Data/points.shp","pointLayer",'ogr')
feats = [ feat for feat in pntLayer.getFeatures() ]
# Open tif file
ds = QgsRasterLayer("/Data/study.tif","Study")
pixelWidth = ds.rasterUnitsPerPixelX()
pixelHeight = ds.rasterUnitsPerPixelY()
# extent of the layer
ext = ds.extent()
originX ,originY = (ext.xMinimum(),ext.yMinimum())
src_cols = ds.width()
src_rows = ds.height()
drive = gdal.GetDriverByName( 'GTiff' )
src_ds = gdal.Open("/Data/study.tif")
outBand = src_ds.GetRasterBand(1)
outData = numpy.zeros((src_cols, src_rows), numpy.float32)
pntRstList = []
for i in range(0, src_cols):
for j in range(0, src_rows):
rspnt = pixel2coord(i,j)
pntRstList.append(rspnt)
sumP = []
for rpoint in pntRstList:
for ft in feats:
vgeometry = ft.geometry()
rgeometry = QgsGeometry.fromPoint(rpoint)
dist=vgeometry.distance(rgeometry) # get distance between cell center to point
if dist < 200:
sumP.append(dist)
print sumP