我正在尝试通过Django Shell将光栅文件导入PostGIS。我在我的模型中创建了一个类,看起来像这样:
class MaxentModel(gismodels.Model):
birdname = models.ForeignKey('BirdName', null=True)
model_probability = gismodels.RasterField(srid=4326, null=True)
然后我想尝试使用文档中的这些命令导入第一个栅格数据(在Django shell中尝试过):
>>>from validation_birds.models import BirdName, MaxentModel
>>>taxon_name_object = BirdName.objects.filter(name_cz='name of the bird')[0]
>>>rast = MaxentModel(birdname=taxon_name_object, model_probability='/path/to/file/picture.tif')
>>>rast.save()
但是使用rast.save()异常会引发错误:
raise GDALException('Raster needs to be opened in write mode to change values.')
django.contrib.gis.gdal.error.GDALException: Raster needs to be opened in write mode to change values.
在写入模式下需要打开栅格是什么意思以及为什么GDAL想要更改值(是因为某些设置)?我怎样才能克服这个错误?
我找不到有关此例外的一些信息,所以我很乐意提供任何帮助
答案 0 :(得分:2)
所以我找到了解决方案。我对文档感到困惑,但需要创建GDALRaster对象,此对象可用于geodjango中的RasterField。这是一个代码:
>>> from validation_birds.models import BirdName, MaxentModel
>>> taxon_name_object = BirdName.objects.filter(name_cz='name of the bird')[0]
>>> from django.contrib.gis.gdal import GDALRaster
>>> gdal_raster = GDALRaster('pathtofile.tif', write=True)
>>> rast = MaxentModel(birdname=taxon_name_object, model_probability=gdal_raster)
>>> rast.save()