¿Creando una zona de influencia cuadrada alrededor de la entidad de punto usando ArcGIS for Desktop?

Me gustaría crear un búfer cuadrado a partir de una característica puntual pero no entiendo el código que contiene.

Se han hecho preguntas similares en el sitio web forums.esri pero eso fue hace más de 10 años, y no funcionó cuando probé el código.

¿Cómo creo un cuadrado búfer de una entidad puntual?

Comentarios

  • gis.stackexchange.com/questions/12479 / … es esencialmente un duplicado (porque aborda una generalización de esta pregunta), pero como ya hay buenas respuestas aquí que son específicas para búferes cuadrados, parece mejor dejar ambos hilos abiertos y separados en lugar de fusionarlos. Pero si quieres más soluciones, ¡lee el otro hilo también!
  • Bien, gracias whuber. Ayer encontré este sitio web y ‘ todavía me estoy familiarizando con él. ‘ intentaré hacer eso con mis futuras publicaciones o preguntas. Me ‘ me gusta mucho más este sitio que los foros de ArcGIS.
  • No ‘ quise decir ese comentario como crítica de cualquier manera, Kimball: estaba ahí para evitar la fusión de los dos hilos, eso ‘ es todo. ¡Bienvenido a nuestra comunidad! (Y cuénteles a sus amigos sobre nosotros, especialmente aquellos en los foros de ArcGIS. 🙂
  • Correcto. Sé que no lo ‘ quiso decirlo de esa manera. Disfruto mucho de esta comunidad y ya he comenzado a contarles a otros sobre este nuevo foro.
  • Gracias por su importante participación. Me pregunto cómo puedo usar un conjunto de datos de campo en la función de puntos para crear búferes rectangulares usando el script que usted proporciona sin escribir manualmente sus coordenadas. Gracias

Responder

Pruebe estos pasos con ArcMap 10:

  1. Zona de influencia su entidad de puntos (ArcToolbox> Herramientas de análisis> Proximidad> Zona de influencia). Asegúrese de seleccionar la distancia correcta en el cuadro Unidad lineal.
  2. Ingrese los búferes recién creados en la herramienta Entorno de entidad a polígono (Datos Herramientas de administración> Funciones> Envolvente de entidad a polígono). Asegúrese de seleccionar la casilla «Crear características de varias partes» si tiene varios puntos.

Para una solución de Python:

Usando SearchCursor e InsertCursor para crear búferes cuadrados

ingrese la descripción de la imagen aquí

Comentarios

  • +1 Las respuestas que demuestran que la solución funciona son las mejores.

Respuesta

Una posible solución sería crear sus zonas de influencia redondas «normales» utilizando la herramienta de zona de influencia de ESRI estándar con el radio que desee y luego realizar un Sobre de entidad a polígono en esa clase de zona de influencia resultante. Esto crea una característica de envolvente cuadrada alrededor de la extensión de cada característica. Feature Envelope to Polygon se encuentra dentro de Gestión de datos> Funciones. El modelo del generador de modelos sería similar a:

ingrese la descripción de la imagen aquí

Comentarios

  • ¡Excelente solución! Además, al crear la salida del búfer como una capa in_memory (in_memory \ tmpBuffer) y puede evitar escribir datos innecesarios en el disco y hacer que el proceso sea mucho más rápido.

Respuesta

Dado que el script vinculado al final del código de Aaron solo se puede usar para búferes cuadrados y no hace uso del módulo arcpy.da más nuevo, «escribí un script que se puede usar para crear búferes rectangulares. En un conjunto de datos de puntos aleatorios de 10,000, se completó en 10 segundos:

ingrese la descripción de la imagen aquí

 import os, arcpy point_FC = arcpy.GetParameterAsText(0) w = float(arcpy.GetParameterAsText(1)) h = float(arcpy.GetParameterAsText(2)) output_FC = arcpy.GetParameterAsText(3) def rect(coord, w, h): #Given XY coordinates and rectangle dimensions, #return a polygon object of a rectangle centered about the point x,y = coord w *= 0.5 h *= 0.5 xmin,xmax = x-w, x+w ymin,ymax = y-h, y+h poly = ((xmin, ymax), (xmax, ymax), (xmax, ymin), (xmin, ymin)) return arcpy.Polygon(arcpy.Array(arcpy.Point(*p) for p in poly)) #Create output feature class. spatref = arcpy.Describe(point_FC).spatialReference folder, base = os.path.split(output_FC) arcpy.CreateFeatureclass_management(folder, base, "POLYGON", spatial_reference=spatref) #Get field object for every field in input except OID and Shape. fields = [f for f in arcpy.ListFields(point_FC) if f.type not in ("OID", "Geometry")] for field in fields: arcpy.AddField_management(output_FC, field.name, field.type, field.precision, field.scale, field.length, field.aliasName, field.isNullable, field.required, field.domain) #Get field names to be inputted to cursors. #Need SHAPE@XY token to read point coords and SHAPE@ token to write polygon coords. fnames = [f.name for f in fields] fields_in = fnames[::] fields_out = fnames[::] fields_in.append("SHAPE@XY") fields_out.append("SHAPE@") #Create buffers and write attributes to output FC, if any. count = int(arcpy.GetCount_management(point_FC)[0]) arcpy.SetProgressor("step", "Buffering...", 0, count, 1) with arcpy.da.SearchCursor(point_FC, fields_in) as Scursor, arcpy.da.InsertCursor(output_FC, fields_out) as Icursor: for i,row_in in enumerate(Scursor): #"Convert" point to rectangle arcpy.SetProgressorPosition(i) feature = list(row_in) feature[-1] = rect(feature[-1], w, h) Icursor.insertRow(feature)  

Respuesta

Suponiendo que está usando ArcObjects (use las etiquetas para especificar el idioma y la API que está usando), podría usar IEnvelope.Expand para crear un búfer cuadrado a partir del sobre de un punto, como en este ejemplo: Obtener todas las funciones de la búsqueda de puntos en GeoFea tureLayer Snippet

 ESRI.ArcGIS.Geometry.IEnvelope envelope = point.Envelope; envelope.Expand(searchTolerance, searchTolerance, false);  

Respuesta

Como alternativa a la respuesta de Aaron, para aquellos que no tengan una licencia avanzada, use la herramienta geometría de límite mínima . Pasos a continuación (modificado de Aaron):

  1. Zona de influencia su entidad de puntos (ArcToolbox> Herramientas de análisis> Proximidad> Zona de influencia). Asegúrese de seleccionar la distancia correcta en el cuadro Unidad lineal.
  2. Ingrese los búferes recién creados en la herramienta Geometría de límite mínima (Herramientas de administración de datos> Funciones> Geometría de límite mínima). Utilice «RECTANGLE_BY_AREA» o «RECTANGLE_BY_WIDTH», las otras opciones solo están disponibles con una licencia avanzada.

EDIT : Esta opción no le permite controlar la orientación de los búferes cuadrados resultantes, sin usar la opción» ENVELOPE «(que requiere una licencia avanzada). Al marcar la casilla» Agregar características de geometría como atributos a la salida ( opcional) «: el desplazamiento resultante se registrará como» MBG_Orientation «en la clase de entidad de salida. Esto se puede usar para rotar las entidades de nuevo al centro si lo desea; consulte Rotación polígonos por valor de la tabla de atributos usando ArcPy? para una posible solución a eso.

ingrese la descripción de la imagen aquí

Comentarios

  • Para mi clase de entidad en particular, termina rotando los cuadrados en diferentes direcciones usando este flujo de trabajo. Quizás porque tengo círculos de búfer superpuestos. No estoy seguro. Hice que Esri usara el método de Aaron ‘ anterior en mi misma clase de entidad y no rotó los círculos almacenados en búfer.
  • @Andrew, sí, ‘ correcto, esa es una limitación de la herramienta sin una licencia avanzada. Usar la opción ENVELOPE devolvería el mismo resultado que el método anterior de Aaron ‘, pero también necesita una licencia avanzada. Una posible solución alternativa sería marcar la opción ‘ agregar características geométricas como atributos ‘, averiguar la cantidad de inclinación (debe ser consistente ), luego rote los búferes cuadrados resultantes en esa cantidad en una sesión de edición. Haven ‘ t intenté esto todavía.

Responder

Esto sitio describe cómo convertir csv a búferes cuadrados, rectangulares o circulares usando JavaScript Geographiclib y js2shapefile.

Puede echar un vistazo si se resuelve su problema.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *