Eu tenho várias camadas de CAD não georreferenciadas (consulte esta pergunta ) que possuem recursos de anotação de texto. Criei um modelo para converter o texto em pontos, mas depois de converter a anotação em uma classe de característica de ponto, vejo que os pontos de ancoragem do texto do CAD não coincidem com o centro do texto do CAD (onde os pontos pertencem).
Portanto, gostaria de programar (usando ArcPy ou ModelBuilder) [mover] um recurso em relação à sua localização atual (delta x, y) usando um valor X, Y medido que fornecerei.
Isso me permitiria mover os pontos GIS de volta para onde eles pertencem, em vez do ponto de ancoragem de deslocamento do CAD.
Como posso realizar esta tarefa?
O @PolyGeo deu uma excelente resposta usando o SHAPE @ XY IN 10.1, mas atualmente estou executando o 10.0. Alguma idéia 10.0?
fonte
Eu credito à @ artwork21 por me levar à minha solução final. Na verdade, encontrei um script quase completo no artigo de ajuda on-line do ArcGIS 10.0, chamado " Calcular exemplos de campos ", listado na subcategoria " Amostras de código - geometria " e " Para uma classe de recurso de ponto, altere a coordenada x de cada ponto em 100 "
O script final que usei na ferramenta "Calcular campo" do ModelBuilder foi:
Expressão:
onde ShiftX e ShiftY são variáveis (como parâmetros) definidas na tela do ModelBuilder.
Tipo de expressão:
Bloco de código:
Como todos os modelos funcionam em um conjunto selecionado, você também deve poder criar isso como uma ferramenta genérica que funcionará em conjunto com outros modelos / ferramentas em outras sessões do modelbuilder. O modelo muito simples que criei (como um "plug-in" para outros modelos para alterar os valores das coordenadas) se parece com isso. Dessa forma, eu posso controlar a mudança de acordo com o conjunto de seleção (conforme definido em outros modelos):
Funcionou como um encanto, obrigado a todos por sua contribuição!
fonte
Você também pode usar este script da calculadora de campo para mover os locais dos recursos:
XYsetVALUE (! SHAPE !,! X_COORD !,! Y_COORD!)
Você pode incluir um método extra Calcular campo em seu modelo usando a função acima.
fonte
Eu adaptei a solução para mover / mudar pontos apontam para uma certa direção (ângulo) e uma determinada distância.
Parece:
e seja chamado como shiftXYCoordinates (! SHAPE !,! Angle!, 5000), se você tiver um “ângulo” de campo para os recursos de seus pontos (ou com uma constante, é claro). O ângulo deve ser dado em graus decimais. 0 mudará "para cima", 90 "para a direita" etc. Eu os obtive após criar recursos de índice de mapa de faixa e convertê-los em pontos.
Certifique-se também de selecionar o Nome do campo "Forma" antes de executar :)
(Solução testada no ArcMap 10.0 SP5)
fonte
Como você pode ver, é muito mais fácil na versão 10.1 quando você obtém acesso aos tokens do cursor.
fonte
Isso funciona para 10.0:
fonte