Bul*_*lva 5 django raster gdal geodjango postgis-raster
我正在尝试通过 Django Shell 将光栅文件导入 PostGIS。我在我的模型中创建了一个类,如下所示:
class MaxentModel(gismodels.Model):
birdname = models.ForeignKey('BirdName', null=True)
model_probability = gismodels.RasterField(srid=4326, null=True)
Run Code Online (Sandbox Code Playgroud)
然后我想尝试从文档中使用这些命令导入第一个栅格数据(在 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()
Run Code Online (Sandbox Code Playgroud)
但是使用 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.
Run Code Online (Sandbox Code Playgroud)
需要在写入模式下打开栅格是什么意思,为什么 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()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
511 次 |
| 最近记录: |