Pythonを使用して、ラスターから自然なブレーク値を抽出しようとしています。
目的のプロセスは次のとおりです。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:マトリックスは2次元でなければなりません」を返します。
私の知る限り、greenArrayは2次元配列です。
1
Natural_Breaksで処理する前に、greenArrayのディメンションを確認しましたか?配列で.shapeを呼び出すと、配列の大きさがわかります。私はこれのいずれも以前にやったことがありませんが、この投稿は役立つようです... stackoverflow.com/questions/3061761/numpy-array-dimensions
—
Branco 14
ありがとう、ブランコ。私はそのスレッドに出くわしたので、私の配列は2次元であると信じるようになりました。greenArray.shape =(1536,2048)およびgreenArray.ndim = 2の戻り値。解決策(numpy.ravel()を使用)を考え出したと思います。
—
師部14
@phloem私が使用してあなたがしている権利だと思うPySALのdoccoを見てみる
—
om_henners 14
flatten
とravel
、はNatural_Breaks
、値の1dベクトル(または(n, 1)
ベクトル)のみを受け入れるようです。