Skip To Content

Трансформировать объекты

Краткая информация

Конвертирует координаты входных объектов из одного местоположения в другое через масштабирование, смещение и поворот на основе связей преобразования между соответствующими известными опорными точками.

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

    Внимание:

    Этот инструмент изменяет входные значения. Более подробно о стратегиях предотвращения нежелательных изменений данных см. в разделе Инструменты, не создающие выходных данных.

    Примечание:

    Все входные данные должны быть в одной системе координат.

  • Входными объектами могут быть, точки, линии или полигоны.

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

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

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

    • 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 слишком высоко, следует пересмотреть значения невязок и отменить или переместить связи с большими невязками.

Синтаксис

TransformFeatures(in_features, in_link_features, {method}, {out_link_table})
ПараметрОбъяснениеТип данных
in_features

Входные объекты, координаты которых будут преобразованы.

Feature Layer
in_link_features

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

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

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

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

Выходная таблица, содержащая входные связи и их невязки.

Table

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

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

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

Double
out_feature_class

Обновленные входные объекты

Векторный слой

Пример кода

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

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

import arcpy
arcpy.env.workspace = "C:/data"
arcpy.TransformFeatures_edit("source_Roads.shp","control_Links.shp",
                             "AFFINE")
TransformFeatures, пример 2 (автономный скрипт)

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

import arcpy
import os

# Set geoprocessing environments
arcpy.env.overwriteOutput = True

# function to convert link info in a text file to a line feature class
def CreateLinkFeatures(in_text_file, in_data):

    sr = arcpy.Describe(in_data).spatialReference
    features = []  # a list to hold polyline geometry objects

    f = open(in_text_file, "r")
    
    for line in f.readlines():

        # take start/end blank spaces off
        # separate the start and end point coordinates
        points = line.strip().split()   
        
        point1 = arcpy.Point(float(points[1]), float(points[2]))
        point2 = arcpy.Point(float(points[3]), float(points[4]))
        
        features.append(arcpy.Polyline(arcpy.Array([point1, point2]), sr))
        
    f.close()   # close the text file

    # copy the geometry objects into a feature class named Links
    result = arcpy.CopyFeatures_management(features, in_data + "_links")

    return result.getOutput(0)
    
if __name__ == "__main__":

    # Make a copy of the data because
    # TransformFeatures tool modifies the input data
    arcpy.CopyFeatures_management(r"C:\data\Tutorial.gdb\Parcels", r"C:\data\Tutorial.gdb\Parcels_copy")

    links_file = r"C:\data\TF_links.txt"
    tf_link_features = CreateLinkFeatures(links_file, r"C:\data\Tutorial.gdb\Parcels")
    
    try:
        arcpy.TransformFeatures_edit(r"C:\data\Tutorial.gdb\Parcels_copy", tf_link_features)
        print(arcpy.GetMessages())
        
    except arcpy.ExecuteError as aex:
        print(arcpy.GetMessages(2))

    except Exception as ex:
        print(ex.args[0])

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

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

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