我正在尝试通过 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 想要更改值(是否因为某些设置)?我怎样才能克服这个错误?
我找不到有关此异常的一些信息,因此我很乐意为您提供帮助
我有观察者模型,它通过 OneToOneRelation 扩展用户模型。我对具有观察者外键的模型清单进行了过滤。这是 models.py 代码:
\n\nclass Observer(models.Model):\n user = models.OneToOneField(User, on_delete=models.CASCADE)\n rating = models.IntegerField(default=0)\n bird_ratings = models.ManyToManyField(\'BirdName\', through=\'BirdRatings\')\n\nclass Checklist(gismodels.Model):\n date = models.DateField()\n time_start = models.TimeField(null=True)\n time_end = models.TimeField(null=True)\n site_name = models.CharField(max_length=200)\n municipality = models.CharField(max_length=200)\n observer = models.ForeignKey(Observer, null=True, default=\'\')\n other_observers = models.CharField(max_length=150, default=\'\')\n note = models.CharField(max_length=2000)\n location_note = models.CharField(max_length=2000, default=\'\')\n position = gismodels.PointField(null=True, srid=4326)\n created = models.DateTimeField(db_index=True, null=True)\n rating = models.IntegerField(default=0)\nRun Code Online (Sandbox Code Playgroud)\n\n然后我在filters.py中创建了ChecklistFilter类:
\n\nclass ChecklistFilter(django_filters.FilterSet):\n date = DateFromToRangeFilter(label=\'Datum pozorov\xc3\xa1n\xc3\xad\', widget=RangeWidget(attrs={\'display\': \'inline\'}))\n #groups = django_filters.ModelMultipleChoiceFilter(queryset=User.objects.filter(), widget=forms.CheckboxSelectMultiple)\n created = DateFilter(label=\'Datum …Run Code Online (Sandbox Code Playgroud) django django-models django-forms django-filter modelchoicefield
我有一个变量(来自数据库的对象).在某些情况下,这种变量可以是类型列表在某些情况下和字典.
如果变量是列表,则循环标准:
for value in object_values:
self.do_something(value)
Run Code Online (Sandbox Code Playgroud)
变量的标准,如果变量是字典:
for key, value in object_values.items():
self.do_something(value)
Run Code Online (Sandbox Code Playgroud)
我可以使用instanceof()两种检查类型,但是我仍然需要两个函数或if两个for循环.我现在if有条件调用两个函数中的一个,一个用于迭代作为列表(例如iterate_list()),第二个用于迭代作为字典(例如iterate_dict()).
有没有更好的选择如何优雅和更pythonic方式解决问题,我不知道变量将是列表或字典?
我是 keras 新手,我想用 F1-score 作为指标来训练模型。
\n\n我遇到了两件事,一是我可以添加回调,二是使用内置的指标函数\n这里,它说指标函数将不会用于训练模型。那么,这是否意味着我可以metrics在编译模型时进行任何争论?\n具体来说,
model.compile(optimizer=\'rmsprop\',\n loss=\'binary_crossentropy\',\n metrics=[\'accuracy\'])\nRun Code Online (Sandbox Code Playgroud)\n\n在上述情况下,即使准确性作为指标传递,它也不会用于训练模型。
\n\n第二件事是使用此处定义的回调,
\n\nimport numpy as np\nfrom keras.callbacks import Callback\nfrom sklearn.metrics import confusion_matrix, f1_score, precision_score, recall_score\nclass Metrics(Callback):\ndef on_train_begin(self, logs={}):\n self.val_f1s = []\n self.val_recalls = []\n self.val_precisions = []\n\ndef on_epoch_end(self, epoch, logs={}):\n val_predict = (np.asarray(self.model.predict(self.model.validation_data[0]))).round()\n val_targ = self.model.validation_data[1]\n _val_f1 = f1_score(val_targ, val_predict)\n _val_recall = recall_score(val_targ, val_predict)\n _val_precision = precision_score(val_targ, val_predict)\n self.val_f1s.append(_val_f1)\n self.val_recalls.append(_val_recall)\n self.val_precisions.append(_val_precision)\n print \xe2\x80\x9c \xe2\x80\x94 val_f1: %f \xe2\x80\x94 val_precision: %f \xe2\x80\x94 val_recall %f\xe2\x80\x9d …Run Code Online (Sandbox Code Playgroud) django ×2
python ×2
dictionary ×1
django-forms ×1
gdal ×1
geodjango ×1
keras ×1
list ×1
raster ×1
tensorflow ×1