Estou escrevendo um script python para o ArcGIS 10.3. Conheço a Scale tool
interface do ArcGIS, mas não consigo encontrar esse comando arcpy. Isso existe?
Como você pode ver na figura, o Scale tool
trabalho é diferente de Buffer tool
- ele muda a forma do polígono original. Então a questão é:
Posso usar Scale tool
(disponível na interface do ArcGIS) usando o arcpy?
arcgis-desktop
arcpy
polygon
Mr. Che
fonte
fonte
Respostas:
Não estou ciente de nada na API do arcpy que fará o dimensionamento para você, mas escrever uma função para fazer isso seria relativamente simples.
O código abaixo faz o dimensionamento para recursos 2D e não leva em consideração os valores M ou Z:
Você pode chamá-lo com um objeto de geometria, um fator de escala (1 = mesmo tamanho, 0,5 = metade do tamanho, 5 = 5 vezes maior etc.) e um ponto de referência opcional:
Use isso em conjunto com os cursores para dimensionar uma classe de recurso inteira, assumindo que a classe de recurso de destino já exista:
edit: veja um exemplo usando uma aproximação da sua geometria de teste, por 0,5 e 5 vezes:
Também testado com polígonos com vários anéis (orifícios)!
Uma explicação, conforme solicitado:
scale_geom
pega um único polígono e percorre cada vértice, medindo a distância até um ponto de referência (por padrão, o centróide do polígono).Essa distância é então dimensionada pela escala fornecida para criar o novo vértice 'dimensionado'.
O dimensionamento é feito basicamente desenhando uma linha no comprimento dimensionado do ponto de referência até o vértice original, com o final da linha se tornando o vértice dimensionado.
O material de ângulo e rotação existe porque é mais direto calcular a posição do final da linha ao longo de um único eixo e depois girá-lo 'no lugar'.
fonte
bdist = refgeom.distanceTo(apnt)
. Você pode testar e corrigir isso?