¿Crear un búfer cuadrado alrededor de la función de punto usando ArcGIS for Desktop?

29

Me gustaría crear un búfer cuadrado a partir de una función de punto, pero no entiendo el código que se incluye en él.

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

¿Cómo creo un búfer cuadrado a partir de una entidad de puntos?

    
pregunta Kimball 11.07.2012 - 22:55

5 respuestas

45

Pruebe estos pasos con ArcMap 10:

  1. Buffer su característica de punto (ArcToolbox > Analysis Tools > Proximity & gt ; Buffer). Asegúrese de seleccionar la distancia correcta en el lineal caja de la unidad.
  2. Ingrese sus buffers recién creados en el Sobre de características para Herramienta Polígono (herramientas de gestión de datos > Features > Feature Envelope to Polígono). Asegúrate de seleccionar la casilla "Crear funciones de múltiples partes" si tienes varios puntos.

Para una solución Python:

Uso de SearchCursor y InsertCursor para crear buffers cuadrados

    
respondido por el Aaron 11.07.2012 - 23:16
12

Una posible solución sería crear sus buffers redondos "normales" utilizando la herramienta de buffer ESRI estándar con el radio que desee y luego realizar una Envolvente de Característica a Polígono en esa clase de entidad resultante de buffers. Esto crea una característica de sobre cuadrado alrededor de la extensión de cada característica. El Sobre de Característica a Polígono se encuentra dentro de Gestión de Datos > Características. El modelo del generador de modelos sería similar a:

    
respondido por el AHigh 11.07.2012 - 23:08
8

Como el script vinculado al final del código de Aaron solo se puede usar para buffers cuadrados y no utiliza el módulo arcpy.da más reciente, he escrito un script que se puede usar para crear buffers de rectángulo. En un conjunto de datos de puntos aleatorios de 10k, se completó en 10 segundos:

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 [email protected] token to read point coords and [email protected] token to write polygon coords. fnames = [f.name for f in fields] fields_in = fnames[::] fields_out = fnames[::] fields_in.append("[email protected]") fields_out.append("[email protected]") #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)     
respondido por el Paul 13.07.2014 - 06:54
5

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 desde la envolvente de un punto, como en este ejemplo: Obtenga todas las características de Point Search en GeoFeatureLayer Snippet

ESRI.ArcGIS.Geometry.IEnvelope envelope = point.Envelope;
envelope.Expand(searchTolerance, searchTolerance, false);
    
respondido por el blah238 11.07.2012 - 23:20
0

Este sitio describe cómo convertir csv a búferes cuadrados o rectangulares o circulares usando el archivo de JavaScript geográfico y js2shape.

Puedes echarle un vistazo si resuelve tu problema.

    
respondido por el GeoSpatialEarth.in 11.08.2016 - 20:23

Lea otras preguntas en las etiquetas