使用 "Raster needs to be opened in write mode to change values error" 导入 GeoDjango tif
GeoDjango tif import with "Raster needs to be opened in write mode to change values error"
我正在尝试通过 Django 将栅格文件导入 PostGIS Shell。我在我的模型中创建了一个 class,看起来像这样:
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 想要更改值(是因为某些设置)?我怎样才能克服这个错误?
我找不到有关此异常的一些信息,因此我很乐意提供任何帮助
所以我找到了解决方案。我对文档感到困惑,但需要创建 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()
我正在尝试通过 Django 将栅格文件导入 PostGIS Shell。我在我的模型中创建了一个 class,看起来像这样:
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 想要更改值(是因为某些设置)?我怎样才能克服这个错误?
我找不到有关此异常的一些信息,因此我很乐意提供任何帮助
所以我找到了解决方案。我对文档感到困惑,但需要创建 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()