gpt4 book ai didi

django - GeoDjango tif 导入为 "Raster needs to be opened in write mode to change values error"

转载 作者:行者123 更新时间:2023-12-02 09:52:59 27 4
gpt4 key购买 nike

我正在尝试通过 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 想要更改值(是否因为某些设置)?我怎样才能克服这个错误?

我找不到有关此异常的一些信息,因此我很高兴获得任何帮助

最佳答案

所以我找到了解决方案。我对文档感到困惑,但需要创建 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 - GeoDjango tif 导入为 "Raster needs to be opened in write mode to change values error",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42285780/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com