2013-03-12 5 views
0

나는 래스터 파일과 다각형 모양 파일이 있습니다. 폴리곤이 덮는 영역의 래스터 파일의 평균을 얻고 싶습니다. 필자는 python 독립형 스크립트에서이 작업을 수행합니다. 따라서 QGIS와 Starspan은 작동하지 않습니다. 또한 Arcpy는 사용할 수 없습니다. GDAL을 사용하고 싶습니다. 파이썬 패키지 란 무엇입니까? 이렇게하는 방법을 권해 주시겠습니까?Python의 폴리곤을 기반으로 한 래스터 파일에서 구역 통계를 수행하는 방법은 무엇입니까?

답변

2

벡터 레이어를 래스터 화하는 데 사용할 수있는 gdal.RasterizeLayer 함수가 있습니다. 여기에는 몇 가지 단점이 있습니다. 래스터화할 출력 데이터 세트가 필요합니다. 또한 겹치는 지오메트리가있는 경우 먼저 별도의 벡터 레이어에서 각 지오메트리를 분리해야합니다. 즉, 모든 지오메트리를 반복해야합니다.

gdal을 사용하면 MEM 드라이버를 사용하여 메모리 내장 파일을 만들 수 있습니다.이 기능을 사용하면 데이터를 훨씬 쉽게 만들 수 있지만 여전히 많은 데이터 세트 생성 오버 헤드가 있습니다. 당신이 구조 내에서 픽셀을 분리 할 수 ​​np.masked_where에 대한 예를 함께 사용, 형상의 마스크를 포함 지금 outds

driver = gdal.GetDriverByName('MEM') 
outds = driver.Create('', pixelxsize, pixelysize, 1, GDT_Byte) 
outds.SetProjection(target_proj) 
outds.SetGeoTransform(target_gt) 

gdal.RasterizeLayer(outds, [1], vectorlayer, burn_values=[1]) 

: 같은

각 구조에 대한

, 단계 더 많거나 적은 것 .

그다지 편리하지는 않지만 일단 다각형의 마스크 된 배열이 있으면 numpy/scipy를 사용하여 통계를 쉽게 얻을 수 있습니다.

편집 : 좀 더 자세한 예는이 스크립트를 참조하십시오 http://svn.osgeo.org/gdal/trunk/autotest/alg/rasterize.py