Сохранение уравнений, используемых в QGIS Field Calculator?

10

Я пытаюсь вычислить определенные значения вновь рассчитанной точки. Поэтому я использую калькулятор поля, чтобы написать уравнение для определения значений.

Есть ли способ сохранить это уравнение, чтобы, если и когда я начну новую работу, мне не пришлось его перепечатывать?

Что-то похожее на то, как вы сохраняете стили и символы для множества точек.

Р Кумар
источник
Это хороший запрос, который легко добавить.
Натан W

Ответы:

5

QGIS сохраняет последнее уравнение, использованное в калькуляторе полей, на вкладке «Недавние», где вы можете повторно использовать его, дважды щелкнув по нему

img поля calc

LaughU
источник
Это верно, если ОП не использовал другие уравнения позже. Но это исчезнет со временем, когда ОП использует новые уравнения. RecentКонтейнер только временно.
ахмадханб
5

Вы можете написать свое уравнение в новой функции, и тогда вам нужно будет только вызвать функцию, чтобы повторно применить вычисления.

Откройте калькулятор поля, нажмите на Function Editorвкладку, new fileзатем отредактируйте функцию. Выберите load. Обратите внимание, что okна данный момент не будет доступно.

Вернитесь на Expressionвкладку, выберите группу customфункций и дважды щелкните свою функцию. Выберите поле для обновления и нажмите ok.


Если вы хотите использовать только значения полей и константы, вы можете отредактировать сигнатуру функции по умолчанию, которая начинается с value1. В моем примере я удалил его, но вы можете использовать эти поля для передачи новых аргументов.

Затем вы можете получить доступ к значениям полей объектов, используя feature["fieldName"].... будьте осторожны, вызывая эту функцию только на слоях, содержащих указанные поля!

@qgsfunction(args='auto', group='Custom')
def funcTestCalc( feature, parent):
    return feature["fieldA"]+feature["fieldB"];

введите описание изображения здесь введите описание изображения здесь

JGH
источник
3

В дополнение к решению @LaughU вы можете включить любую графическую операцию в графическую модель, а затем сохранить и запустить модель. Это, но требует, чтобы ваши имена столбцов всегда были одинаковыми.

Erik
источник
2

Если вы добавляете новую точку в существующий слой и хотите выполнить тот же расчет для этой точки, что и для всех остальных точек, вот две полезные функции:

Виртуальное поле

Виртуальное поле автоматически вычисляет выражение для каждого нового атрибута. Это также регулярно обновляется. Так, например, для виртуального поля с именем «широта» вы можете использовать выражение $y.

Плюсы и минусы виртуальных полей:

  • Всякий раз, когда вы добавляете новую точку, в нее автоматически добавляется вывод выражения.
  • Автоматически обновляется при изменении выражения. Поэтому, если вы переместите точку в примере, значение «широта» изменится автоматически.
  • Вы не можете редактировать значение виртуального поля.
  • Виртуальные поля сохраняются как часть файла проекта QGIS, а не как часть шейп-файла (или любого другого формата, в котором находится ваш слой). Поэтому, если вы откроете слой в другом проекте, у него не будет своих виртуальных полей.

Регулярное поле со значением поля по умолчанию

Вы можете настроить поле, чтобы иметь значение по умолчанию на основе выражения. Когда вы создаете новую точку, ее атрибут будет автоматически заполнен значением по умолчанию. Вы можете изменить значение атрибута. Он не обновляется автоматически. *

Плюсы и минусы значений полей по умолчанию:

  • Всякий раз, когда вы добавляете новую точку, в нее автоматически добавляется вывод выражения.
  • Не обновляется автоматически. В примере это означает, что если вы переместили существующую точку, ее значение «широта» не будет обновлено.
  • Вы можете изменить значение этого поля.
  • Сохраняется как часть шейп-файла. Поэтому, если вы откроете слой в другом проекте, у него будет это поле в его таблице атрибутов.

* В QGIS 3.2 значения полей по умолчанию можно (необязательно) установить на «применить значение по умолчанию при обновлении». С помощью этой опции, если вы переместите точку, где значением по умолчанию является $yтекущее значение, будет заменено новой координатой y.

CSK
источник
Я думаю, что значение поля по умолчанию может быть установлено на автоматическое обновление в QGIS 3.2.
she_weeds
@she_weeds Спасибо, что указали на это. Я обновлю свой ответ, чтобы включить эту информацию.
csk