如何将 GDAL 数据集保存到 Django 文件字段?

问题描述 投票:0回答:0

我正在尝试将文件写入具有 FileField 的 Django 模型。此文件已从 GDAL 处理。假设我有这个模型。我观察

file
字段并处理图像,然后将生成的图像保存到
file_cloud_geotiff
.

#models.py
class Layer(models.Model):
    name = models.CharField(max_length=50, blank=True)
    file = models.FileField(
        upload_to='layers',
        null=True,
        max_length=500)
    file_cloud_geotiff = models.FileField(
        upload_to='cloudgeotiff',
        null=True,
        blank=True,
        max_length=500)


    def __str__(self):
        return self.name

在我的任务中,我有一个转换保存文件的功能。

#tasks.py
from osgeo import gdal

def convert_to_cloud_geotiff(obj_id):
    instance = Layer.objects.get(pk=obj_id)
    geotif = instance.file.path
    src_ds = gdal.Open(geotif)
    translate_options = gdal.TranslateOptions(format='COG', creationOptions=['COMPRESS=LZW'])
    name = os.path.basename(instance.file.name)
    des_ds = '/vsimem/{}'.format(name)
    ds = gdal.Translate(des_ds, src_ds, options=translate_options)

    # Write variable ds to Layer's file_cloud_geotiff 

我所知道的是,在这种情况下,结果或数据集存储到变量

ds
。我想将该数据集写入模型其他文件字段。结果也从内存文件中保存
des_ds = '/vsimem/{}'.format(name)
。但是,这个mem文件是不可访问的,无法打开,因此可以写入文件字段。

如何利用数据集对象

ds
写入 Django 文件字段?

python django gdal
© www.soinside.com 2019 - 2024. All rights reserved.