Pythonはシェープファイルを読み取れません


11

Jupyterノートブックでシェープファイルを開こうとしていますが、開くことができません。シェープファイルはワークブックと同じフォルダーにあり、フルパスを使用してもPythonはそれを識別できません。

import shapefile as shp
import matplotlib.pyplot as plt

sf = shp.Reader(r'C:\Users\Public\Documents\1-11-99n.shp')

ShapefileException: Unable to open C:\Users\Public\Documents\1-11-99n.dbf or C:\Users\Public\Documents\1-11-99n.shp.

fionaとgeopandasで開くこともできません。

import fiona
shape = fiona.open("1-11-99n.shp")

そして

import geopandas as gp
shp = gp.GeoDataFrame.from_file('1-11-99n.shp')
print (shp)

両方で終わる

CPLE_OpenFailedError: b'Unable to open 1-11-99n.shx or 1-11-99n.SHX.Try --config SHAPE_RESTORE_SHX true to restore or create it'

これは些細な問題かもしれませんが、シェープファイルと空間Pythonライブラリを使用するのは初めてなので、この問題を回避する方法が本当にわかりません。


マイナス記号をアンダースコアに置き換えて、もう一度やり直してください。シェープファイル名には、文字、数字、アンダースコアのみを含めるようにしてください。名前を文字で始めることもお勧めです。問題が解決しない場合は、シェイプファイルが壊れているか、.SHXが欠落している可能性があります。 )?
マイケルスティムソン

おそらくシェープファイルが壊れています。1つの任意のシェープファイルを1-11-99n.shpとして保存しましたが、シェイプリー、フィオナ、またはジオパンダを使用したミニスクリプトには何の問題もありませんでした。
xunilk

3
ええ、問題は、必要な他のshx、dbfなどのファイルを含めなかったことです。以前にshpファイルを使用したことがないため、ファイルの補完が必要であることを知りませんでした。ファイル名は変更することなく正常に機能しました。ありがとう!
レナードショー

1
@LeonardShawこの質問の解決を検討できるように、ご質問への回答をご検討ください。
アーロン

繰り返しになりますが、ファイル名に先頭の数値またはハイフンを含めることは、シェープファイルの仕様違反です。一部のシェープファイルリーダーの実装でエラーが発生する命名を避けることをお勧めします。
ビンス

回答:


20

シェープファイルを初めて使用するユーザーのためのトラップがあります。実際のシェープファイル(.shp)は、コンパニオンファイル(.dbf、.shx、.prjなど)なしでは役に立ちません。

これは、シェープファイルの技術仕様で概説されていますが、少し高度なものであるため、Esriの記事は簡単な説明に適しています。

シェープファイルに属するすべてのファイルを単一のユニットとして扱うことが重要です。シェープファイルが任意の段階で編集された場合、属性が変更されただけでも、FID(機能識別子)が変更されます。つまり、.DBFファイルの順序が変更されます。シェープファイルの属性を編集して。既存の.DBFファイルを上書きすると、シェイプは間違った行を指します。常にすべてのファイルを一緒にコピーします

シェープファイルをメール、Dropbox、Googleドライブなどで送信する場合、すべてのファイルを単一のアーカイブに圧縮すると、解凍すると関連するすべてのファイルが一緒に表示されるので便利です。


1
より正確に言うと、.shp、.dbf、および.shxは絶対的な最小値です(標準による)。QGIS / OGRでは、.dbfが欠落しているファイルを開くことができますが、これらの機能を削除または編集することはできません。ただし、(空の属性テーブル付き)行方不明DBF-ファイルを作成するために使用することができますogr2ogr
LuWi

2
@LuWi .SHXファイルでさえも再構築できます。それは空間インデックスです。既存の形状から空間インデックスを再構築できるツールとオプションがいくつかあります。関連ファイルの正確な数は異なりますが、常にすべてをまとめておくことが最善です。
マイケルスティムソン

0

持っているアイテムが.shpファイルのみであり、他のパーツなしで実行できる場合は、OpenJumpから開いて保存するこのソリューションを検討してください。/gis//a/306228 目的に応じて.projファイルが必要になる場合がありますが、別のプロジェクトからコピーされ、シェープファイルに合わせて名前が変更された「標準」ファイルで回避できる場合があります、同じ投影法を使用する場合。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.