ArcGIS for Desktop을 사용하여 포인트 피처 주변에 사각형 버퍼를 생성합니까?

포인트 피처에서 정사각형 버퍼를 만들고 싶지만 여기에 들어가는 코드를 이해하지 못합니다.

forums.esri 웹 사이트에서 비슷한 질문을 받았지만 10 년이 넘었고 코드를 시도했을 때 작동하지 않았습니다.

정사각형을 어떻게 만드나요? 포인트 피쳐에서 버퍼링 하시겠습니까?

댓글

  • gis.stackexchange.com/questions/12479 / … 는 본질적으로 중복이지만 (이 질문의 일반화를 다루기 때문에), 여기에는 이미 정사각형 버퍼에 특정한 좋은 답변이 있으므로 가장 좋은 것 같습니다. 두 스레드를 병합하는 대신 열려 있고 분리 된 상태로 둡니다. 그러나 더 많은 솔루션을 원한다면 다른 스레드도 읽어보십시오!
  • 좋습니다. 감사합니다. 어제이 웹 사이트를 찾았는데 ' 아직 익숙해졌습니다. 저는 ' 향후 게시물 / 질문에서 그렇게하려고 노력할 것입니다. ' ArcGIS 포럼보다이 사이트가 훨씬 더 마음에 듭니다.
  • ' 그 댓글을 의미하지는 않았습니다. 어떤 식 으로든 비판으로 Kimball : 두 스레드의 병합을 방지하기 위해 존재했습니다. ' 모두입니다. 커뮤니티에 오신 것을 환영합니다! (특히 ArcGIS 포럼에있는 친구들에게 우리에 대해 알려주세요. 🙂
  • 맞습니다. 당신이 ' 그런 뜻이 아니라는 것을 알고 있습니다. 저는이 커뮤니티를 아주 좋아하고 이미이 새로운 포럼에 대해 다른 사람들에게 알리기 시작했습니다.
  • 많은 의견을 보내 주셔서 감사합니다. 좌표를 수동으로 입력하지 않고 제공하는 스크립트를 사용하여 사각형 버퍼를 생성하기 위해 포인트 기능의 필드 데이터 세트를 사용하는 방법이 궁금합니다. 감사합니다.

답변

ArcMap 10에서 다음 단계를 시도해보세요.

  1. 버퍼 포인트 기능 (ArcToolbox> 분석 도구> 근접성> 버퍼). 선형 단위 상자에서 올바른 거리를 선택했는지 확인합니다.
  2. 새로 생성 된 버퍼를 피처 엔벨로프를 다각형으로 도구 (데이터 관리 도구> 기능> 기능 봉투를 다각형으로). 여러 포인트가있는 경우 “다중 부품 기능 생성”상자를 선택해야합니다.

Python 솔루션의 경우 :

SearchCursor 및 InsertCursor를 사용하여 정사각형 버퍼 만들기

여기에 이미지 설명 입력

댓글

  • +1 솔루션이 효과가 있음을 보여주는 답글이 최고입니다.

답변

가능한 해결책은 원하는 반경으로 표준 ESRI 버퍼 도구를 사용하여 “일반”둥근 버퍼를 만든 다음 그 결과 버퍼의 피쳐 클래스에 대해 피쳐 엔벨로프를 폴리곤으로 수행하는 것입니다. 이것은 각 피처의 범위 주위에 정사각형 엔벨로프 피처를 만듭니다. Feature Envelope to Polygon은 Data Management> Features에 있습니다. 모델 작성기 모델은 다음과 유사합니다.

여기에 이미지 설명 입력

댓글

  • 뛰어난 솔루션! 또한 버퍼의 출력을 in_memory 계층 (in_memory \ tmpBuffer)으로 생성하여 불필요한 데이터를 디스크에 쓰는 것을 방지하고 프로세스를 훨씬 빠르게 만들 수 있습니다.

답변

Aaron의 코드 끝에 연결된 스크립트는 사각형 버퍼에만 사용할 수 있으며 최신 arcpy.da 모듈을 사용하지 않습니다. “직사각형 버퍼를 만드는 데 사용할 수있는 스크립트를 작성했습니다. 임의의 10k 포인트 데이터 세트에서 10 초만에 완료되었습니다.

여기에 이미지 설명 입력

 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)  

답변

ArcObjects를 사용한다고 가정하면 (태그를 사용하여 사용중인 언어와 API를 지정하십시오) : 다음 예와 같이 포인트의 엔벨로프에서 정사각형 버퍼를 만듭니다. GeoFea의 포인트 검색에서 모든 피처 가져 오기 tureLayer 스 니펫

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

답변

고급 라이선스가없는 경우 Aaron의 답변 대신 Minimum Bounding Geometry 도구를 사용하세요. . 아래 단계 (Aaron에서 수정 됨) :

  1. 버퍼 포인트 피쳐 (ArcToolbox> 분석 도구> 근접성> 버퍼). 선형 단위 상자에서 올바른 거리를 선택해야합니다.
  2. 새로 생성 된 버퍼를 최소 경계 형상 도구 (데이터 관리 도구> 기능> 최소 경계 형상)에 입력합니다. “RECTANGLE_BY_AREA”또는 “RECTANGLE_BY_WIDTH”를 사용하세요. 다른 옵션은 고급 라이선스로만 사용할 수 있습니다.

수정 :이 옵션을 사용하면”ENVELOPE “옵션 (고급 라이센스가 필요함)을 사용하지 않고 결과 사각형 버퍼의 방향을 제어 할 수 없습니다.”출력 할 속성으로 형상 특성 추가 ( 선택 사항) “옵션-결과 오프셋은 출력 피쳐 클래스에”MBG_Orientation “으로 기록됩니다. 그런 다음 원하는 경우 피쳐를 다시 중앙으로 회전하는 데 사용할 수 있습니다. 회전 참조 ArcPy를 사용하는 속성 테이블의 값으로 폴리곤? 에 대한 잠재적 솔루션을 찾을 수 있습니다.

이미지 설명 입력 여기

댓글

  • 특정 피쳐 클래스의 경우이 워크 플로를 사용하여 사각형을 다른 방향으로 회전시킵니다. 아마도 내가 가지고 있기 때문에 겹치는 버퍼 원. 확실하지 않다. Esri가 동일한 피쳐 클래스에서 위의 Aaron '의 방법을 사용하도록했고 버퍼링 된 원을 회전하지 않았습니다.
  • @Andrew, 네 ' 맞습니다. 이는 고급 라이선스가없는 도구의 제한 사항입니다. ENVELOPE 옵션을 사용하면 위의 Aaron '의 방법과 동일한 결과가 반환되지만 고급 라이선스도 필요합니다. 잠재적 인 해결 방법은 ' 기하학적 특성을 속성으로 추가 ' 옵션을 선택하고 기울어 진 정도를 확인하는 것입니다 (일관 적이어야 함). ) 그런 다음 편집 세션에서 결과 사각형 버퍼를 해당 크기만큼 회전합니다. ' 아직 시도하지 않았습니다.

답변

site 는 geographiclib JavaScript 및 js2shapefile을 사용하여 csv를 정사각형, 직사각형 또는 원형 버퍼로 변환하는 방법을 설명합니다.

해결되면 살펴볼 수 있습니다. 당신의 문제.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다