Tengo un número de capas CAD no georreferenciadas (vea esta pregunta ) que tienen características de anotación de texto. He creado un modelo para convertir el texto en puntos, pero después de convertir la anotación en una clase de entidad Punto, veo que los puntos de anclaje del texto CAD no coinciden con el centro del texto CAD (que es donde pertenecen los puntos).
Por lo tanto, me gustaría programáticamente (usando ArcPy o ModelBuilder) [mover] una entidad relativa a su ubicación actual (delta x, y) usando un valor X, Y medido que proporcionaré.
Esto me permitiría mover los puntos SIG a donde pertenecen, en lugar del punto de anclaje CAD compensado.
¿Cómo puedo realizar esta tarea?
@PolyGeo dio una excelente respuesta usando SHAPE @ XY IN 10.1, pero actualmente estoy ejecutando 10.0. ¿Alguna idea 10.0?
fuente
Le doy crédito a @ artwork21 por llevarme a mi solución final. En realidad, encontré un script casi completo en el artículo de ayuda en línea de ArcGIS 10.0 llamado " Calcular ejemplos de campo ", que se enumera en la subcategoría " Muestras de código: geometría " y " Para una clase de entidad de punto, cambie la coordenada x de cada punto por 100 "
La secuencia de comandos final que utilicé dentro de la herramienta ModelBuilder "Calcular campo" fue:
Expresión:
donde ShiftX y ShiftY son variables (como parámetros) definidas en el lienzo de ModelBuilder.
Tipo de expresión:
Bloque de código:
Dado que todos los modelos funcionan en un conjunto seleccionado, también debería poder crear esto como una herramienta genérica que funcionará junto con otros modelos / herramientas en otras sesiones de modelbuilder. El modelo muy simple que creé (como un "complemento" para otros modelos para cambiar los valores de coordenadas) se ve así. De esa manera puedo controlar el cambio en función de cada conjunto de selección (como se define en otros modelos):
Funcionó de maravilla, ¡gracias a todos por su aporte!
fuente
También puede usar este script de calculadora de campo para mover ubicaciones de entidades:
XYsetVALUE (! SHAPE !,! X_COORD !,! Y_COORD!)
Puede incluir un método adicional Calcular campo dentro de su modelo utilizando la función anterior.
fuente
Adapté la solución para mover / cambiar los puntos en una determinada dirección (ángulo) y una distancia dada.
Parece:
y ser llamado como shiftXYCoordinates (! SHAPE !,! Angle!, 5000), si tiene un "ángulo" de campo para sus entidades de puntos (o con una constante, por supuesto). El ángulo debe darse en grados decimales. 0 se desplazará "hacia arriba", 90 "hacia la derecha", etc. Los obtuve después de crear entidades de índice de mapa de banda y convertirlas en puntos.
También asegúrese de seleccionar el nombre del campo "Forma" antes de ejecutar :)
(Solución probada en ArcMap 10.0 SP5)
fuente
Como puede ver, es mucho más fácil en 10.1 cuando tiene acceso a los tokens de cursor.
fuente
Esto funciona para 10.0:
fuente