Tenga en cuenta que en la actualidad, como lo que puedo decir, no hay ninguna manera para obtener la corriente capa editable(s). Ver: Cómo obtener el editor de la capa actual en ArcPy?
Así, como una alternativa que podría tener el usuario seleccione una capa en el TOC y el uso de la GetSelectedTOCLayerOrDataFrame
método en la pythonaddins
módulo para recuperarlo.
Si usted puede conseguir más de que, aquí es cómo se puede aplicar el resto en un add-in de Python:
Implementar una función que toma un x e y del mapa de coordenadas, dimensiones de anchura y altura de un rectángulo, y una capa/clase de entidad. A continuación, la función se abre una InsertCursor
en la capa, crea un nuevo Polygon
de la entrada de coordenadas y la anchura y la altura, y lo inserta con el cursor del insertRow
método. Prueba este método fuera del marco de complementos hasta que usted esté seguro de que funciona como se espera.
A continuación es una función que se me ocurrió que parece funcionar (se considera que la x y la y argumentos que se van a la esquina inferior izquierda del rectángulo):
def createRectangleAtPoint(x, y, width, height, layer):
desc = arcpy.Describe(layer)
bottom_left = (x, y)
top_left = (x, y + height)
top_right = (x + width, y + height)
bottom_right = (x + width, y)
array = arcpy.Array([arcpy.Point(*coords) for coords in [bottom_left, top_left, top_right, bottom_right, bottom_left]])
rect = arcpy.Polygon(array, desc.spatialReference)
with arcpy.da.InsertCursor(layer, "SHAPE@") as cursor:
cursor.insertRow((rect,))
En la implementación de la Tool
de clase, escuche onMouseUpMap
, recuperar la x
y y
coordinar argumentos, y pasar estas, junto con las dimensiones deseadas y capa, en la función anterior.
Implementar un Extension
de la clase que escuche onStartEditing
, onStopEditing
. Activar y desactivar la herramienta de objeto cuando la sesión de edición se inicia y se detiene.
Nota: Considerar este paso opcional ya que esta realidad no impide que el usuario ejecuta el código en un no-capa editable o fuera de la actual sesión de edición, así que no hay mucho punto ahora mismo.