래스터의 발자국을 보여주는 shapefile을 작성 하시겠습니까?


33

딱딱한 형식으로 약 1,000 개의 위성 이미지가 있으며 래스터에 대한 인덱스 역할을하는 shapefile을 만들고 싶습니다. 이것은 래스터 카탈로그와 비슷하지만 래스터 카탈로그를 만들고 싶지 않습니다.

내가 알 수있는 몇 가지 장애물은 이미지가 지리 참조됩니다. 따라서 직사각형 모양이 아닙니다 (데이터 영역에 대해 이야기하고 있습니다).

명확히하기 위해 다각형이 전체 직사각형 래스터가 아닌 래스터의 0이 아닌 (또는 비 데이터가 아닌) 픽셀 만 포함하도록 요구합니다. 지금까지 대부분의 답은 데이터와 비 데이터 픽셀을 포함하는 직사각형 다각형을 제공합니다.

내 이미지 샘플 위성 이미지


내가 조사 한 도구에 의해 주어진 결과 (래스터 catlog, 다양한 Arcscript, 답변 중 하나에 제공된 사용자 정의 Python 스크립트) : 결과


내가 원하는 결과 : 여기에 이미지 설명을 입력하십시오


4
래스터 카탈로그를 만드는 것 같습니다. 일시적으로 발자국을 만드는 좋은 솔루션 일 수도 있습니다. 관리되지 않는 카탈로그를 만들어 참조 테이블을 만들지 만 이미지는 서버의 해당 위치에 둡니다. 래스터를 카탈로그로 일괄 적으로 가져 오는 것이 쉽고 비교적 빠릅니다. 생성 된 풋 프린트를 새로운 피쳐 클래스로 내보내고 래스터 카탈로그를 삭제할 수 있습니다. 이것은 다른 옵션만큼 빠를 수 있습니다.
— 공간을

2
모자이크 데이터 셋은 이미지 풋 프린트도 생성합니다.
— Roy

모자이크 데이터 셋은 갈 길입니다. 달성하기 매우 쉬운
— Brad Nesom

마지막 이미지에서 빨간색 상자 바깥의 픽셀은 NoData 또는 0입니까? 0 인 경우 원하는 영역에 0 값인 픽셀이 있습니까?
— 채드 쿠퍼

1
빨간색 테두리 외부의 픽셀은 데이터가 아닙니다. 그러나 내 다중 스펙트럼 데이터에는 nodata 영역의 RGB 값으로 0,0,0이 있습니다. 두 경우 모두 필요한 영역 내에 값이 0 인 픽셀이 없습니다.
— Devdatta Tengshe 2018 년

답변:


15

QGIS에는 Image Boundary 라는 플러그인이 있습니다 . 훌륭한 도구입니다. 이 도구에는 위성 이미지의 검은 색 가장자리를 생략하는 "유효한 픽셀"옵션이 있습니다.


이 플러그인은 내가 원하는 것을한다고 주장하지만 실험 한 이미지에서는 실패합니다. 내일 실제 데이터로 시도하겠습니다.
— Devdatta Tengshe 2016

이 플러그인은 다중 스펙트럼 데이터에서 매우 잘 작동하지만 단일 대역 판 크로마 이미지에서 이상한 결과를 제공하는 경우가 있습니다.
— Devdatta Tengshe

2
QGIS Image Boundary가 가장 잘 작동하지만 "바운드 박스"나 "풋 프린트"가 필요하지 않지만 데이터가 존재하는 다각형의 윤곽이 필요한 벡터 파일을위한 도구가 있습니다.
— GeorgeC

이미지 경계 도구는 훌륭하지만 제공하는 링크는 404입니다. 플러그인 설정에서 실험 플러그인을 허용하면 도구를 계속 사용할 수 있다고 생각합니다. 아마도이 링크를 사용 하시겠습니까
— Aaron

이미지 경계 사용에 대한 설명서가 있습니까?
— Loonuh

9

다음 코드는 입력 래스터를 가져 와서 범위를 얻은 다음 해당 범위를 다각형 피쳐 클래스에 삽입합니다.

import arcpy

r = arcpy.Raster(in_raster)
point = arcpy.Point()
array = arcpy.Array()

corners = ["lowerLeft", "lowerRight", "upperRight", "upperLeft"]

cursor = arcpy.InsertCursor(fc)
feat = cursor.newRow()
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))
print len(array)
polygon = arcpy.Polygon(array)
feat.shape = polygon
cursor.insertRow(feat)
array.removeAll()
del feat
del cursor

ArcMap Python 창에서 다음 in_raster과 fc같이 설정하여 실행할 수 있습니다 .

>>> fc = 'r_extent'
>>> in_raster = 'CaliCoast10mNED_HavCurvedPCS'

r_extent기존 다각형 피쳐 클래스는 어디에 있습니까 ? 그런 다음 코드를 복사하여 실행하십시오. 나는 이것을 얻는다 :

여기에 이미지 설명을 입력하십시오


1
위의 코드를 사용하여 폴더에 대해 동일한 작업을 수행했습니다. gist.github.com/4162013
— jeb

7

이것을 위해 gdaltindex를 사용할 수 있습니다 : http://www.gdal.org/gdaltindex.html

그러나 이미지와 동일한 참조 시스템에서 여전히 사각형 (예 : 4 + 1 포인트)을 만듭니다. 그러나 이것이 실제로 문제인지 궁금합니다. 이미지가 얼마나 큽니까?


gdaltindex의 문제점은 각 이미지에 대해 직사각형 다각형을 생성한다는 것입니다. 나는 단지 제로가 아닌 값 픽셀에 관심
— Devdatta Tengshe을

4

QGIS에서 "Image Boundary"도구를 사용해 보았지만 일부 래스터에서는 실패합니다.

나를 위해 일한 또 다른 옵션은 다음과 같습니다 .- 1. gdal_translate 명령 줄 유틸리티를 사용하여 입력 래스터를 단일 디지털 숫자로 변환합니다.

gdal_translate -co 압축 = lzw -b 1 -ot 바이트-스케일 1 1 inp.tif out.tif

이것은 inp.tif가 0이 아닌 값을 갖는 모든 곳에서 1의 값으로 래스터를 만듭니다.

  1. 그런 다음 ArcMap에서 "래스터-다각형"도구를 사용하여 다각형 (모양 파일)을 얻을 수 있습니다.

출력 셰이프 파일에는 이미지의 실제 경계에 따라 여러 다각형 정점이있는 사변형이 아닌 경계가 있습니다.


3

스크립팅 된 솔루션에 관심이 있다면 gdal 명령 nearblack을 사용해보십시오 . -white 플래그를 사용하여 공백으로 묶인 데이터를 검색 할 수도 있습니다. 래스터 데이터의 직사각형이 아닌 외곽 설정을 생성하기 위해 출력을 다각형 화할 수 있습니다 .

##run nearblack
shellcmds = "nearblack -white -o " + outpath + " " + inpath
os.system(shellcmds)

##run polygonize
shellcmds = "gdal_polygonize.py " + outpath + " -f" + """ "ESRI Shapefile"  """ + outpath2 + " nearblack"
os.system(shellcmds)


0

ArcGIS 3D Analyst에는 Raster Domain 이라는 도구가 있습니다.이 도구 는 래스터 데이터 셋의 데이터 부분에 폴리곤 또는 폴리 라인 풋 프린트를 생성하며 NoData 셀을 무시합니다. 나를 위해 일했다.


1
우리 사이트에 오신 것을 환영합니다! 답변이 Tomek의 답변과 어떻게 다른지 설명해 주시겠습니까?
— whuber

래스터 도메인이 도움이되었습니다. 도와 주셔서 감사합니다!
— meryloo

0

공간 참조가 할당 된 래스터 카탈로그를 생성하고 래스터 카탈로그를 ArcMap에 추가 한 다음 "발자국 내보내기"를 수행 할 수 있습니다. 각 래스터 데이터 세트를 복제하지 않도록 "관리되지 않은"래스터 카탈로그를 작성하는 옵션이 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.