Estou tentando extrair valores de quebra naturais de uma varredura usando Python.
O processo pretendido vai: Objeto de varredura do Arcpy para NumPy Array (usando RasterToNumPyArray ) até valores de quebra naturais (usando a função 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)
Este código retorna o erro "ValueError: matrix deve ser bidimensional".
Tanto quanto eu sei, greenArray é uma matriz bidimensional.
1
Você já tentou verificar as dimensões do greenArray antes de tentar processá-lo com Natural_Breaks? Parece que chamar .shape na matriz fornecerá as dimensões da matriz. Eu não tenho feito nada disso antes, mas este post parece votos ... stackoverflow.com/questions/3061761/numpy-array-dimensions
—
Branco
Obrigado, Branco. Me deparei com esse segmento, o que me levou a acreditar que minha matriz era bidimensional. O retorno de greenArray.shape = (1536,2048) e greenArray.ndim = 2. Acho que encontrei uma solução (usando numpy.ravel ()), que escreverei em breve.
—
floema
@phloem Olhando para a documentação do PySAL, acho que você está certo em usar
—
om_henners
flatten
e ravel
; o Natural_Breaks
parece aceitar apenas um vector 1d de valores (ou, um (n, 1)
vector).