래스터의 발자국을 보여주는 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_rasterfc같이 설정하여 실행할 수 있습니다 .

>>> 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.