4 votos

¿Cómo puedo crear un polígono con una ArcGIS 10.1 complemento de python

Estoy buscando algunos ejemplos de código, o ayudar con el código para que me refiero. He construido un complemento de python menú que me gustaría usar para crear entidades de polígono en una capa específica en mi sesión de edición. enter image description here

Así, por ejemplo, me gustaría haga clic en 30x60 y un 30 m x 60m rectangular polígono sería colocado donde me clic. Me parece que no puede encontrar mucho en la creación de la geometría dentro de un complemento de python. Gracias de antemano por cualquier comentario o sugerencia. Frank

3voto

auramo Puntos 161

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:

  1. 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,))
    
  2. 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.

  3. 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.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X