파이썬을 사용하여 래스터에서 자연 브레이크 값을 추출하려고합니다.
의도 된 프로세스는 다음과 같습니다. Arcpy 래스터 객체 에서 NumPy 배열 ( RasterToNumPyArray 사용 )에서 자연 나누기 값 ( PySAL Natural Breaks 기능 사용 )으로 이동합니다.
import arcpy, pysal
from pysal.esda.mapclassify import Natural_Breaks as nb
# code to create greenIndex arcpy Raster object here
greenArray = arcpy.RasterToNumPyArray(greenIndex)
breaks = nb(greenArray,k=2,initial=20)
이 코드는 "ValueError : matrix must be twodimensional"오류를 반환합니다.
내가 아는 한 greenArray는 2 차원 배열입니다.
1
Natural_Breaks로 처리하기 전에 greenArray 치수를 확인하려고 했습니까? 배열에서 .shape 를 호출 하면 배열 크기가 표시됩니다. 이전에이 작업을 수행 한 적이 없지만이 게시물이 도움이 될 것 같습니다 ... stackoverflow.com/questions/3061761/numpy-array-dimensions
—
Branco
고마워, 브랑코 나는 그 스레드를 발견했고, 그 결과 내 배열이 2 차원이라고 믿게되었습니다. greenArray.shape = (1536,2048) 및 greenArray.ndim = 2가 반환됩니다. 솔루션 (numpy.ravel () 사용)을 생각해 보았습니다. 곧 작성하겠습니다.
—
phloem
내가 당신에게 사용에 맞아요 생각 docco @phloem는 PySAL 보면
—
om_henners
flatten
및 ravel
; 는 Natural_Breaks
1 차원 벡터 값 (또는 (n, 1)
벡터) 만 허용하는 것으로 보입니다 .