Сводка
Конвертирует координаты входных объектов из одного местоположения в другое через масштабирование, смещение и поворот на основе связей преобразования между соответствующими известными опорными точками.
Использование
-
Входными объектами могут быть точки, линии, полигоны или аннотации.
-
Входные объекты связей – это линии, представляющие связи трансформирования между известными соответствующими опорными точками. Начальная точка связи – это местоположение исходной опорной точки, а конечная точка связи – соответствующее местоположение целевой опорной точки.
-
Трансформирование работает в декартовой или плоскостной системе координат. Необходима система координат проекции (СКП). Использование географической системы координат (ГСК) со значениями широты и долготы может привести к нежелательным искажениям или вычислительным ошибкам.
-
Все входные объекты трансформируются одним из следующих методов: аффинным преобразованием, преобразованием подобия или проективным преобразованием. Для каждого из методов необходимо определенное минимальное число связей. См. Преобразование объекта для получения дополнительной информации, в том числе о формулах преобразования.
- 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})
Parameter | Объяснение | Тип данных |
in_features | Входные объекты, координаты которых будут преобразованы. Они могут быть точками, линиями, полигонами или аннотациями. | Feature Layer |
in_link_features | Входные объекты-связи, которые соединяют известные опорные точки трансформирования. | Feature Layer |
method (Дополнительный) | Определяет методы трансформации, используемые для конвертации координат входных объектов.
| String |
out_link_table (Дополнительный) | Выходная таблица, содержащая входные связи и их невязки. | Table |
Производные выходные данные
Name | Объяснение | Тип данных |
out_rmse | Отчет о значении среднеквадратичной ошибки (RMSE). | Double |
out_feature_class | Обновленные входные объекты | Векторный слой |
Пример кода
Пример скрипта окна Python для использования функции TransformFeatures в режиме прямого запуска.
import arcpy
arcpy.env.workspace = "C:/data"
arcpy.TransformFeatures_edit("source_Roads.shp","control_Links.shp",
"AFFINE")
Пример скрипта 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])
Environments
Информация о лицензиях
- Basic: Нет
- Standard: Нет
- Advanced: Да