Вычислить ошибки трансформирования (Редактирование)

Сводка

Вычисляет ошибки невязки и среднеквадратичную ошибку (RMSE) на основании координат входных связей известных опорных точек, для использования в пространственном трансформировании данных.

Использование

  • Инструмент используется перед инструментом Трансформировать объекты, для проверки корректности опорных точек, что особенно важно при преобразовании большого числа объектов.

  • Входные объекты связей – это линии, представляющие связи трансформирования между соответствующими опорными точками.

  • Трансформирование работает в декартовой или плоскостной системе координат. Необходима система координат проекции (СКП). Использование географической системы координат (ГСК) со значениями широты и долготы может привести к нежелательным искажениям или вычислительным ошибкам.

  • Ошибки вычисляются для трех типов преобразований: аффинное, проективное и преобразование подобия. Для каждого метода определено минимально необходимое для корректного трансформирования количество связей. См. Преобразование объектов для дополнительной информации, в том числе и о формулах преобразований.

    • AFFINE – для аффинного преобразования необходимо минимум три связи смещения.
    • PROJECTIVE – для проективного преобразования необходимо минимум четыре связи смещения.
    • SIMILARITY – для преобразования подобия необходимо минимум две связи смещения.
  • Результаты преобразования зависят от качества входных связей. Связь должна начинаться в известном исходном местоположении и заканчиваться в соответствующем целевом местоположении, называющимися также опорными точками. Чем лучше поставлены опорные точки, тем более точным будет результат трансформирования. Координаты начального и конечного местоположений связей используются для получения параметров трансформирования, лучше всего подходящих для исходных и целевых опорных точек, как описано в разделе Преобразование объекта. Даже если вы используете параметры преобразования для трансформации реальных исходных опорных точек, результирующие местоположения не будут совпадать с действительным положением целевых опорных точек. Это называется невязкой, которая рассчитывается для каждой связи трансформирования. Невязки входных связей можно записать в указанную выходную таблицу, содержащую следующие поля:

    • Orig_FID— ID объекта входной связи
    • X_Source— X-координата начального местоположения связи
    • Y_Source— Y-координата начального местоположения связи
    • X_Destination— X-координата конечного местоположения связи
    • Y_Destination— Y-координата конечного местоположения связи.
    • Residual_Error— Невязка трансформированного местоположения

    Среднеквадратическая ошибка (RMSE), также называемая среднеквадратическим отклонением (RMSD), вычисляется на основе невязок и в общем указывает насколько хорошо вычислено полученное преобразование. Значение RMSE записывается в выходных сообщениях обработки. Оно также является производным выходным параметром, который можно использоваться в скриптах или моделях рабочего процесса.

    В разделе «Связи трансформирования и среднеквадратичные ошибки» статьи Трансформировать объекты рассказывается более подробно о невязках и среднеквадратичных ошибках. Вы определяете допустимое значение RMSE на основе ваших знаний о позиционной точности входных объектов, а также опорных точек. Если значение RMSE слишком высоко, следует пересмотреть значения невязок и отменить или переместить связи с большими невязками.

Синтаксис

CalculateTransformationErrors(in_link_features, {out_link_table}, {method})
ParameterОбъяснениеТип данных
in_link_features

Входные объекты-связи, которые соединяют известные опорные точки для пространственного трансформирования.

Feature Layer
out_link_table
(Дополнительный)

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

  • Orig_FID— ID объекта входной связи
  • X_Source— X-координата начального местоположения связи
  • Y_Source— Y-координата начального местоположения связи
  • X_Destination— X-координата конечного местоположения связи
  • Y_Destination— Y-координата конечного местоположения связи.
  • Residual_Error— Невязка трансформированного местоположения
Table
method
(Дополнительный)

Методы трансформации, используемые для конвертации координат входных объектов.

  • AFFINEДля аффинного преобразования необходимо минимум три связи смещения. Используется по умолчанию.
  • PROJECTIVEДля проективного преобразования необходимо минимум четыре связи смещения.
  • SIMILARITYДля преобразования подобия необходимо минимум две связи смещения.
String

Производные выходные данные

NameОбъяснениеТип данных
out_rmse

Отчет о значении среднеквадратической ошибки (RMSE).

Double

Пример кода

CalculateTransformationErrors, пример 1 (окно Python)

Пример скрипта окна Python для использования функции CalculateTransformationErrors в режиме прямого запуска.

import arcpy
arcpy.env.workspace = "C:/data/Countries.gdb"
arcpy.CalculateTransformationErrors_edit("control_Links", "output_Table", "AFFINE")
CalculateTransformationErrors, пример 2 (автономный скрипт)

Пример скрипта Python для выполнения функции CalculateTransformationErrors в автономном режиме.

import arcpy
import os

# all input data are in country.gdb and output will also go to this gdb
arcpy.env.workspace = os.path.join(os.getcwd(), "country.gdb")

try:
    in_links_feats = "link_features"
    out_link_table = "output_table"
    
    # transformation method
    method = "SIMILARITY"
    
    result = arcpy.CalculateTransformationErrors_edit(in_links_feats, out_link_table, method)

    # get the transformation error
    error = float(result.getOutput(1))

    # if error is less than 12.234 then run Transform Features
    if error < 20.0:
        # make a copy of the input features 
        arcpy.CopyFeatures_management(in_links_feats, "in_links_copy")
        arcpy.TransformFeatures_edit("in_links_copy", in_links_feats, method, "out_link_table")
    else:
        print("Transformation error {} is too high".format(error))
        
except arcpy.ExecuteError as aex:
    print(arcpy.GetMessages(2))
    
except Exception as ex:
    print(ex.args[0])

Информация о лицензиях

  • Basic: Нет
  • Standard: Нет
  • Advanced: Да

Связанные разделы