Criando buffer quadrado ao redor do recurso de ponto usando ArcGIS for Desktop?

Eu gostaria de criar um buffer quadrado a partir de um recurso de ponto, mas não entendo o código que contém.

Perguntas semelhantes foram feitas no site forums.esri, mas isso foi há mais de 10 anos e não funcionou quando tentei o código.

Como faço para criar um quadrado buffer de um recurso de ponto?

Comentários

  • gis.stackexchange.com/questions/12479 / … é essencialmente uma duplicata (porque aborda uma generalização desta questão), mas como já existem boas respostas aqui que são específicas para buffers quadrados, parece melhor para deixar ambos os threads abertos e separados, em vez de mesclá-los. Mas se você quiser mais soluções, leia o outro tópico também!
  • OK, obrigado whuber. Acabei de encontrar este site ontem e ‘ ainda estou me familiarizando com ele. Eu ‘ tentarei fazer isso com minhas futuras postagens / perguntas. Eu ‘ estou gostando deste site muito mais do que dos fóruns ArcGIS.
  • Não ‘ quis dizer esse comentário como crítica de qualquer forma, Kimball: estava lá para evitar a fusão dos dois tópicos, que ‘ é tudo. Bem vindo à nossa comunidade! (E por favor, conte aos seus amigos sobre nós, especialmente aqueles nos fóruns do ArcGIS. 🙂
  • Certo. Eu sei que você não ‘ quis dizer isso. Gosto muito desta comunidade e já comecei a contar a outras pessoas sobre este novo fórum.
  • Obrigado por sua participação significativa. Estou me perguntando como posso usar um conjunto de dados de campo no recurso de ponto para criar buffers retangulares usando o script que você forneceu sem digitar manualmente suas coordenadas. Obrigado

Resposta

Experimente estas etapas com ArcMap 10:

  1. Buffer sua característica de ponto (ArcToolbox> Ferramentas de análise> Proximidade> Buffer). Certifique-se de selecionar a distância correta na caixa Unidade linear.
  2. Insira seus buffers recém-criados na ferramenta Feature Envelope to Polygon (Dados Ferramentas de gerenciamento> Recursos> Envelope de recurso para polígono). Certifique-se de selecionar a caixa “Criar recursos multpartes” se você tiver vários pontos.

Para uma solução Python:

Usando SearchCursor e InsertCursor para criar buffers quadrados

insira a descrição da imagem aqui

Comentários

  • +1 Respostas que demonstram que a solução funciona são as melhores.

Resposta

Uma possível solução seria criar seus buffers redondos “normais” usando a ferramenta de buffer ESRI padrão com qualquer raio que você gostaria e, em seguida, executar um Feature Envelope To Polygon nessa classe de recurso de buffers resultante. Isso cria um recurso de envelope quadrado ao redor da extensão de cada recurso. O recurso Envelope para polígono está localizado em Gerenciamento de dados> Recursos. O modelo construtor de modelo seria semelhante a:

insira a descrição da imagem aqui

Comentários

  • Excelente solução! Além disso, ao criar a saída do buffer como uma camada de memória (in_memory \ tmpBuffer), você pode evitar a gravação de dados desnecessários no disco e tornar o processo muito mais rápido.

Resposta

Visto que o script vinculado ao final do código de Aaron só pode ser usado para buffers quadrados e não faz uso do módulo arcpy.da mais recente, eu “escrevemos um script que pode ser usado para criar buffers retangulares. Em um conjunto de dados de pontos aleatórios de 10k, ele foi concluído em 10 segundos:

insira a descrição da imagem aqui

 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)  

Resposta

Supondo que você” esteja usando ArcObjects (use as tags para especificar o idioma e a API que está usando), você poderia usar IEnvelope.Expand para criar um buffer quadrado a partir do envelope de um ponto, como neste exemplo: Obter todos os recursos da pesquisa de pontos no GeoFea trecho de tureLayer

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

Resposta

Como alternativa à resposta de Aaron, para aqueles que não têm uma licença avançada, use a ferramenta Geometria de limite mínimo . Etapas abaixo (modificadas de Aaron):

  1. Buffer sua característica de ponto (ArcToolbox> Ferramentas de análise> Proximidade> Buffer). Certifique-se de selecionar a distância correta na caixa Unidade linear.
  2. Insira seus buffers recém-criados na ferramenta Geometria de limite mínimo (Ferramentas de gerenciamento de dados> Recursos> Geometria de limite mínimo). Use “RECTANGLE_BY_AREA” ou “RECTANGLE_BY_WIDTH”, as outras opções estão disponíveis apenas com uma licença avançada.

EDIT : Esta opção não permite que você controle a orientação dos buffers quadrados resultantes, sem usar a opção” ENVELOPE “(que requer uma licença Avançada). Ao marcar a opção” Adicionar características de geometria como atributos de saída ( opcional) “option – o deslocamento resultante será registrado como” MBG_Orientation “na classe de recurso de saída. Isso pode então ser usado para girar os recursos de volta ao centro, se desejado – consulte Rotação polígonos por valor da tabela de atributos usando ArcPy? para uma possível solução para isso.

insira a descrição da imagem aqui

Comentários

  • Para minha classe de recurso particular, ela acaba girando os quadrados em diferentes direções usando este fluxo de trabalho. Talvez porque eu tenho círculos tampão sobrepostos. Não tenho certeza. Eu fiz a Esri usar o método de Aaron ‘ s acima na minha mesma classe de recurso e ele não girou os círculos armazenados.
  • @Andrew, sim, você ‘ bem, essa é uma limitação da ferramenta sem uma Licença Avançada. Usar a opção ENVELOPE retornaria o mesmo resultado que o método de Aaron ‘ acima, mas também precisa de uma Licença Avançada. Uma possível solução alternativa seria marcar a opção ‘ adicionar características de geometria como atributos ‘, descobrir a quantidade de inclinação (deve ser consistente ) e, em seguida, gire os buffers quadrados resultantes nessa quantidade em uma sessão de edição. Ainda ‘ não tentei isso.

Resposta

Isto site descreve como converter csv em quadrado ou retângulo ou buffers de círculo usando geographiclib JavaScript e js2shapefile.

Você pode dar uma olhada se resolve seu problema.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *