ArcGIS Desktop에서 래스터 이미지의 경계를 다각형으로 가져 옵니까?


28

ArcGIS Desktop에 직사각형 래스터 이미지가 있습니다.

래스터 이미지의 범위에 해당하는 다각형을 어떻게 만들 수 있습니까?

즉, 이미지의 가장자리 인 단일 사변형을 가진 다각형 레이어를 만들고 싶습니다.

간단히 래스터-> 다각형 변환을 시도했지만 이미지의 데이터를 사용하여 윤곽선을 생성하려고 시도합니다. 원하는 것은 이미지 가장자리의 윤곽선입니다.

ArcGIS Desktop 10을 사용하고 있습니다.

답변:


33

Spatial Analyst 가 있다면 다음을 수행 할 수 있습니다.

  1. 래스터에 0을 곱하여 래스터 계산기를 사용하여 상수 값 래스터를 만듭니다. (정수 유형으로 변환하지 않으면 2 단계가 작동하지 않습니다)
  2. Raster to Polygon 도구를 사용하여 1 단계의 결과를 다각형으로 변환하십시오.

다른 해결책 :

3D Analyst 라이센스 가있는 경우 래스터의 3D Analyst> Conversion>에서 Raster Domain 도구를 사용할 수 있습니다 (그러나 매끄러운 기능은 없습니다)


12

3D Analyst의 Raster Domain 도구를 사용하여 래스터 데이터와 동일한 범위의 다각형을 만들 수 있습니다


GIS SE에 오신 것을 환영합니다! 답변에 참조를 추가해 주시겠습니까? 그렇게하면 더 견고해질 것입니다.
RK

래스터 도메인 도구가 완벽하게 작동했습니다! 래스터 데이터의 윤곽 또는 경계를 만듭니다.

1
이 도구에 대해 경고하는 단어-생성되는 경계 다각형은 픽셀의 바깥 쪽 가장자리가 아니라 픽셀 CENTER에서 시작하고 끝나는 래스터 데이터의 범위입니다. 방금 시도해보고 래스터의 외부 경계 상자를 반환한다고 생각했지만 확대하면 경계 상자가 픽셀 중심에서 시작한다는 것을 알 수 있습니다.
3

실제로 IRasterDomainExtractor.ExtractDomain 메서드에는 픽셀 / 셀의 가운데 또는 외부 가장자리를 사용할지 여부를 제어하는 ​​매개 변수가 있습니다.
Preston

이것은 완벽 해! 하나의 도구와 래스터의 다각형 외곽선이 있습니다. 감사!
user3281667

11

단순히 디지털화하는 것은 어떻습니까? 클릭-클릭-클릭-완료.


8
왜이 옵션이 다운 투표되었는지 확실하지 않습니다. 범위 모서리의 좌표를 찾고 해당 좌표에서 정점을 만들 수 있습니다. 분석에도 사용할 수 있습니다. 표시 전용 인 경우 클릭-클릭-클릭-클릭이 효과적입니다.
Baltok

3
래스터가 불규칙한 모양이 될 수 있고 복잡성에 따라 매우 까다로운 디지타이징 작업이 발생할 수 있기 때문에
Phil Henley

4
그러나 OP는 직사각형이라고 말했다. 나에게는 꽤 간단한 일인 것 같습니다. 실제 래스터 외곽선과 디지털화 된 외곽선 간의 차이는 확대하여 정확하므로 실제 응용 프로그램에서는 무시할 수 있습니다.
Matt

10

Data management Toolbox에서 Build Footprint 도구를 사용할 수 있습니다. 래스터에서 Mosaic 데이터 셋을 만들어야합니다.

File Geodatabase에서 새 Mosaic을 만들고 래스터를 추가하십시오.

ArcMap에서 모자이크를 열고 발자국을 추출하십시오.

그게 내가 할 것입니다.


8

이 간단한 파이썬 스크립트를 사용하여 폴더에있는 모든 래스터의 범위로 다각형 피쳐 클래스를 만듭니다. 이를 사용하려면 ArcToolbox에서 도구를 만들거나 단순히 InFolder 및 Dest (대상) 변수를 변경하면됩니다.

import arcpy,os

InFolder = arcpy.GetParameterAsText(0)
Dest=arcpy.GetParameterAsText(1)

arcpy.env.workspace=InFolder
#The raster datasets in the input workspace
in_raster_datasets = arcpy.ListRasters()

arcpy.CreateFeatureclass_management(os.path.dirname(Dest),
                                   os.path.basename(Dest),
                                   "POLYGON")
arcpy.AddField_management(Dest,"RasterName", "String","","",250)
arcpy.AddField_management(Dest,"RasterPath", "String","","",250)

cursor = arcpy.InsertCursor(Dest)
point = arcpy.Point()
array = arcpy.Array()
corners = ["lowerLeft", "lowerRight", "upperRight", "upperLeft"]
for Ras in in_raster_datasets:
    feat = cursor.newRow()  
    r = arcpy.Raster(Ras)
    for corner in corners:    
        point.X = getattr(r.extent, "%s" % corner).X
        point.Y = getattr(r.extent, "%s" % corner).Y
        array.add(point)
    array.add(array.getObject(0))
    polygon = arcpy.Polygon(array)
    feat.shape = polygon
    feat.setValue("RasterName", Ras)
    feat.setValue("RasterPath", InFolder + "\\" + Ras)
    cursor.insertRow(feat)
    array.removeAll()
del feat
del cursor  

이 코드를 사용하는 방법을 자세히 알려주십시오. .asc 래스터 파일에서 사용하고 싶습니다. 이미지가 다른 하위 폴더와 다릅니다.?
GIS 데이터 정육점

1
jeb의 답변 이 저에게 도움되었으므로 투표 할 충분한 담당자가 없습니다. @GIS Data Butcher 완전한 소스를 script.py 파일에 저장하고 ArcMap 내의 Python Window 에서 실행하십시오 . Python Window에서 다음 명령을 사용하여 파일에서 스크립트를 실행할 수 있습니다. > execfile (r'd : \ temp \ script.py ')
Asad

완전한!! 도구에 하위 폴더를 읽는 방법이 있습니까?
raphael

@raphael, 확실히, 당신은 스크립트에서 표준 파이썬 os.listdir 또는 os.walk를 구현해야합니다.
jeb

@ jeb 그래, 나는 개념을 얻는다 ... 봇 나는 이것에 매우 익숙하고 그것을 작동시킬 수 없다 ... 당신은 도움을 줄 수 있습니까?
raphael

4

또한 쉬운 방법은 분류 버튼을 클릭하고 클래스 수를 1로 변경해야하는 재 분류 도구를 사용하는 것입니다. 확인을 클릭하십시오. 이제 래스터를 다각형으로 변환 도구를 사용하여 출력 래스터를 쉽게 변환 할 수 있습니다. ;)


4

래스터를 다시 분류하고 다각형으로 변환하는 데 너무 많은 시간이 걸릴 수 있다고 생각합니다. 제 생각에는 가장 쉬운 방법은 다음과 같습니다.

  • maxX, maxY, minX, minY를 가져옵니다 (describe 명령으로 Python에서 수행 할 수 있음)
  • 위의 범위와 행 / 열 수를 1로하여 Fishnet 만들기를 실행하십시오.

래스터가 많은 경우 Python으로 수행해야하며 몇 초 만에 수백 개의 발자국을 만들 수 있습니다.


0

ArcCatalog에서 .gdb (데이터 관리 도구-> 래스터)에 래스터 카탈로그를 만들 수 있습니다. 관리되지 않는 것이 좋습니다. 그런 다음 마우스 오른쪽 버튼을 클릭하고로드합니다 (래스터가 폴더에 앉아있는 경우 "작업 영역에서로드"). 래스터 카탈로그를 ArcMap에로드하면 마우스 오른쪽 버튼을 클릭하여 데이터-> 풋 프린트를 모양 파일 또는 피쳐 클래스로 내보낼 수 있습니다. 모양 파일에는 래스터 이름으로 채워진 'name'필드가 있습니다.

래스터 카탈로그는 자동으로 범위를 표시하지만 ArcGIS를 사용하지 않는 사람에게 범위를 보내야했습니다.


0

변환 도구 도구 상자에서 "래스터를 다각형으로"도구를 사용하십시오. 다각형 단순화 상자를 선택 취소하십시오. 이것은 당신이 원하는 것을 정확하게 만들 것입니다.


8
이것이 원본 이미지의 연속 된 동일한 값 픽셀 세트마다 하나씩 다각형의 큰 혼란을 초래하지 않습니까?
whuber

이 후에 항상 폴리 디를 얻기 위해 디졸브를 추가 할 수 있습니다. 그러나 @jeb에 의해 나열된 python 솔루션이 더 빠릅니다.
GeoJohn

0

"래스터 도메인"도구는 불규칙한 모양의 래스터 주위에 다각형을 만듭니다. 3d 분석 확장에 대한 라이센스가 필요하다고 생각합니다.


0

ArcCatalog를 사용하는 것이 가장 좋습니다. 사용 가능한 래스터에서 모자이크 데이터 세트를 만듭니다. 래스터의 배경이 다각형에 포함되지 않도록 모자이크에 "값 없음"을 정의하십시오. 방사 측정법을 사용하여 발자국을 만듭니다. ArcGIS에서 Mosaic 데이터 셋을 열고 풋 프린트를 shp 파일로 내 보냅니다. 모자이크 경계를 얻는 좋은 방법 ...


0

DEM 래스터의 개요를 얻으려면 다음을 수행해야합니다.

Spatial Analyst 및 3d Analyst가있는 경우 다음을 수행 할 수 있습니다.

  1. 래스터 계산기를 사용하여 상수 값 래스터를 만들려면 래스터에 0을 곱하십시오.
  2. "INT (도구)"를 사용하여 1 단계의 결과를 래스터 정수로 변환하십시오. 이것은 다음 단계에 필요합니다.
  3. Raster to Polygon 도구를 사용하여 2 단계의 결과를 다각형으로 변환합니다 (래스터 정수에서만 작동).

이 허용 대답에서 상당히 다르지 않다 서면으로 안녕 Seamster02는 : GIS 스택 교환에 오신 것을 환영합니다 gis.stackexchange.com/a/22016/108 .
매트 윌키
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.