2017-08-18 3 views
0

私は、QGISで行われたセグメント化の結果を含むいくつかのシェープファイル(タイプポリゴン)を解析するためにPysalツールを使用しています。Pysalはいくつかのポリゴンネイバーを認識しません

私は、対応するシェープファイルの名前VECTさ

segshp = pysal.weights.Queen.from_shapefile(vect)

を使用してシェープファイルをロードします。

問題は、隣人の辞書を見ると、ポリゴンが2ピクセル未満のものを共有する場合、近隣と見なされないということです。

ArcGISを使用して、ポリゴン隣接(計算ツール→近接→ポリゴン隣接)を計算します。たとえば、ポリゴン1227には画像に示すように4つの隣接があります。

Neighbors calculated with ArcGIS

しかしPysalを使用してPythonでロードするときに、多角形1227は、3ネイバーを有しており、欠落一つのみ2ピクセルの境界線を共有する、3307です。 1または2ピクセルしか共有しない他のポリゴンでも同じことが起こります。この2ピクセルの「閾値」は、私がいくつかのポリゴンの解析を見ただけのものです。

Neighbors calculated with Pysal

とにかくすべてのネイバーを検討するために、その「しきい値」を変更するのはありますか?私はPysalのドキュメントで見て、多分それは、コマンド

pysal.weights.user.min_threshold_dist_from_shapefile

または類似のものに近い関連と思ったが、正直なところ私は考えを持っていないしました。

また、pysal.weights.Rook ...オプションで試しましたが、それよりも少ない近隣を認識し、より多くの島を検出します。

どうもありがとう

+0

シェイプファイルが有効であり、ポリゴン3307にポリゴン1227と共通の頂点が2つあることを確認できますか? QGISでジオメトリを編集すると、3307の頂点が表示されます。また、QGISまたはArcGISでジオメトリを修復してみてください。 – Charles

答えて

0

おかげ@Charles。

実際、問題があるようです。頂点をチェックすると、ポリゴン1227と3307は共通のボーダーを共有しますが、どの頂点も共有しません。手動で編集して新しい頂点の座標の小さな違いを修正したら、Pysalツールはそれらを隣人として認識します。シェイプファイルのジオメトリをチェックしても、ArcgisやQGISでは無効なジオメトリは生成されません。

これらのケースで「欠落」頂点を作成する方法を考えようとしています。そのため、Pysal線の前にジオメトリを修正することができます。

とにかく、元の質問を尊重して、問題は解決されました。

関連する問題