У меня есть несколько слоев САПР без географической привязки (см. Этот вопрос ), которые имеют функции текстовых аннотаций. Я создал модель для преобразования текста в точки, но после преобразования аннотации в класс пространственных объектов Point я вижу, что точки привязки текста САПР не совпадают с центром текста САПР (в котором эти точки принадлежат).
Поэтому я хотел бы программно (используя ArcPy или ModelBuilder) [переместить] объект относительно его текущего местоположения (дельта x, y), используя измеренное значение X, Y, которое я предоставлю.
Это позволило бы мне переместить точки ГИС обратно туда, где они принадлежат, вместо смещенной точки привязки САПР.
Как я могу выполнить эту задачу?
@PolyGeo дал отличный ответ, используя SHAPE @ XY IN 10.1, но в настоящее время я использую 10.0. Любые 10.0 идей?
источник
Я благодарен @ artwork21 за то, что он привел меня к окончательному решению. На самом деле я нашел почти полный скрипт в статье интерактивной справки ArcGIS 10.0 под названием « Вычислить примеры полей », перечисленной в подкатегориях « Образцы кода - геометрия » и « Для класса точечных объектов сдвиньте координату x каждой точки на 100 »
Последний скрипт, который я использовал в инструменте «Вычислить поле» из ModelBuilder, был:
Выражение:
где ShiftX и ShiftY - переменные (как параметры), определенные на холсте ModelBuilder.
Тип выражения:
Блок кода:
Поскольку все модели работают с выбранным набором, вы также сможете создать его как универсальный инструмент, который будет работать в сочетании с другими моделями / инструментами в других сеансах построения моделей. Очень простая модель, которую я создал (как «плагин» для других моделей для смещения значений координат), выглядит следующим образом. Таким образом, я могу управлять сдвигом на основе набора подбора (как определено в других моделях):
Это сработало как шарм, спасибо всем за ваш вклад!
источник
Вы также можете использовать этот скрипт калькулятора поля для перемещения местоположений объектов:
XYsetVALUE (! SHAPE !,! X_COORD !,! Y_COORD!)
Вы можете включить дополнительный метод Calculate Field в вашу модель, используя функцию выше.
источник
Я адаптировал решение для перемещения / смещения точек в определенное направление (угол) и на заданное расстояние.
Похоже:
и называться как shiftXYCoordinates (! SHAPE !,! Angle!, 5000), если у вас есть поле «угол» для ваших точечных объектов (или с константой курса). Угол должен быть указан в десятичных градусах. 0 будет сдвигать «вверх», 90 - «вправо» и т. Д. Я получил их после создания элементов индекса карты полосы и преобразования их в точки.
Также убедитесь, что выбрали имя поля «Форма» перед запуском :)
(Решение протестировано в ArcMap 10.0 SP5)
источник
Как видите, в 10.1 намного проще, когда вы получаете доступ к токенам курсора.
источник
Это работает для 10.0:
источник