2016-10-28 7 views
1

現在、私はjsonパッケージを使用してESRIシェイプファイル(.shp)のデータをJsonファイルに変換しようとしています。このプロセスで大きな値のリストを含む辞書をPythonのjsonファイルに変換する

、私は異なる点がたくさんの座標を含むdictionairyを変換したい:

[[-2244.677490234375, -3717.6876220703125], [-2252.7623006509266, -3717.321774721159], 
..., [-2244.677490234375, -3717.6876220703125]] 

と、いくつかの程度含まれています

json.dumps({"Points" : coordinates}) 

リストは次のようになり、「座標」数百の座標対。

私はjson.dumpsを実行しようとすると、しかし、私は次のエラーを取得する:

[-2244.677490234375, -3717.6876220703125] is not JSON serializable 

私が最初に考えたのは、それは、小数点/浮動小数点値を処理することはできません。しかし、私は、次の作業の例を実行した場合ということでした2つだけのペアの座標含む:

print(json.dumps({"Points" : [[-2244.677490234375, -3717.6876220703125], 
[-2244.677490234375, -3717.6876220703125]]})) 

TTの作品を、私はエラーを取得しない...この場合の出力は次のようになります。

{"Points": [[-2244.677490234375, -3717.6876220703125], [-2244.677490234375, -3717.6876220703125]]} 

なぜ私の "座標"リストではうまくいかないのですか?

答えて

0

表示されるエラーは、カスタムクラスで最もよく発生します。だから私はあなたの問題がpyshpが座標値を供給している方法と関係していると信じています。あなたのコードを見ることなく私は確信することはできませんが、私はのいくつかの場所で使用されているpyshpのソースを見て。あなたが実際にそれがカスタムクラスであるときは、標準のリストやタプルを見ていると思う理由

class _Array(array.array): 
    """Converts python tuples to lits of the appropritate type. 
    Used to unpack different shapefile header parts.""" 
    def __repr__(self): 
    return str(self.tolist()) 

__repr__を説明するかもしれません。私はpython fiddleを組み込み、pyshpの_Arrayクラスをjson.dumps()に提供する際に例外を示しています。

この問題を解決するには、ダンプ呼び出しにcoordinates.tolist()を渡す必要があります。

json.dumps({"Points" : coordinates.tolist()}) 
+0

ありがとうございます!今は動作していますが、私は以前のプロンプトを完全に理解していません... 私の座標は実際にリストでした。だから私は.tolist()を適用しようとしたときにリストにはメソッドがありませんtolist()。 私はリストをnumpy配列に変換しました。これは.tolist()を使ってリストに変換し直しました...そして、不思議なことに、今は動作しています:-D – Jannik

+0

ああ優秀です。オブジェクトの問題は間違いありませんでした...私たちは決して知らないでしょう:) – craigts

+0

ところで、私はあなたがnumpy配列のリストを持っていたと思いますが、100%確実ではないと思います。また、鉱山を答えとしてマークすることを忘れないでください。 – craigts

関連する問題