и есть вектор значений.
Нужно все значения массива, которые равны какому либо значению из вектора поменять.
Если бы вектор был из 1 элемента -- фигня задача
А на векторе я чой-то залип;(
Рещение "в лоб" есть, но всяко можно как-то элегантнее...
Код: Выделить всё
import pandas as pd
import numpy as np
from osgeo import gdal
raster_in='C_World_Ecological_2015.tif'
WEM=pd.read_csv('WEM_2015.csv',sep=';',low_memory=False)
driver = gdal.GetDriverByName('GTiff')
file = gdal.Open(raster_in)
band = file.GetRasterBand(1)
lista = band.ReadAsArray()
listb = band.ReadAsArray()
glc_vals=np.unique(WEM['glc_val'])
for G in glc_vals:
raw_vals=WEM['value'][WEM['glc_val']==G].values
for U in raw_vals:
print(U)
listb[lista==U]=G
raster_out='C_World_Ecological_2015_GLC.tif'
# create new file
file2 = driver.Create(raster_out, file.RasterXSize , file.RasterYSize , 1)
file2.GetRasterBand(1).WriteArray(listb)
# spatial ref system
proj = file.GetProjection()
georef = file.GetGeoTransform()
file2.SetProjection(proj)
file2.SetGeoTransform(georef)
file2.FlushCache()