Я пишу скрипт на Python для ArcGIS 10.3. Я знаю об Scale tool
интерфейсе ArcGIS, но не могу найти такую команду arcpy. Это существует?
Как вы видите на картинке, Scale tool
работы отличаются от Buffer tool
- это меняет форму оригинального многоугольника. Итак, вопрос:
Могу ли я использовать Scale tool
(доступно из интерфейса ArcGIS) используя arcpy?
arcgis-desktop
arcpy
polygon
Мистер Че
источник
источник
Ответы:
Я не знаю ничего в arcpy API, который бы сделал масштабирование для вас, но написание функции для этого было бы относительно просто.
Приведенный ниже код выполняет масштабирование для 2D-объектов и не учитывает значения M или Z:
Вы можете назвать это с геометрией объекта, масштабный коэффициент (1 = одинакового размера, 0,5 = половина размера, 5 = 5 раз больше, и т.д.), и дополнительный опорной точки:
Используйте это вместе с курсорами для масштабирования всего класса объектов, предполагая, что целевой класс объектов уже существует:
edit: вот пример, использующий аппроксимацию вашей тестовой геометрии, в 0,5 и 5 раз:
Также проверено с многокольцевыми многоугольниками (отверстиями)!
Объяснение по запросу:
scale_geom
берет один многоугольник и проходит через каждую вершину, измеряя расстояние от нее до контрольной точки (по умолчанию, центроид многоугольника).Это расстояние затем масштабируется в соответствии с масштабом, заданным для создания новой «масштабированной» вершины.
Масштабирование выполняется путем рисования линии по масштабированной длине от контрольной точки через исходную вершину, при этом конец линии становится масштабированной вершиной.
Здесь есть угол и угол поворота, потому что проще вычислить положение конца линии вдоль одной оси, а затем повернуть его «на место».
источник
bdist = refgeom.distanceTo(apnt)
. Можете ли вы проверить и исправить это?