Saya mencoba membuka shapefile dengan notebook Jupyter, tetapi saya tidak bisa membuatnya terbuka. Shapefile terletak di folder yang sama dengan buku kerja saya, dan Python tidak dapat mengidentifikasi bahkan jika saya menggunakan path lengkap.
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.
Membuka dengan fiona dan geopanda juga tidak berfungsi.
import fiona
shape = fiona.open("1-11-99n.shp")
dan
import geopandas as gp
shp = gp.GeoDataFrame.from_file('1-11-99n.shp')
print (shp)
keduanya berakhir dengan
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'
Saya tahu ini mungkin masalah sepele, tapi saya baru menggunakan shapefile dan perpustakaan Python spasial jadi saya benar-benar tidak tahu bagaimana mengatasi masalah ini.
Jawaban:
Ada jebakan untuk pengguna pertama kali shapefile. Shapefile yang sebenarnya (.shp) tidak berguna tanpa file pendamping: .dbf, .shx, .prj dll.
Ini diuraikan dalam spesifikasi teknis shapefile tapi itu agak maju, artikel Esri mungkin lebih cocok untuk penjelasan cepat.
Sangat penting bahwa semua file milik shapefile diperlakukan sebagai satu unit. Jika shapefile diedit pada tahap apa pun, bahkan perubahan atribut saja, FID (pengidentifikasi fitur) berubah, yang berarti urutan dalam file .DBF diubah .. jika Anda mengedit atribut shapefile dan hanya menyalin file .DBF, menimpa file .DBF yang ada bentuknya akan menunjuk ke baris yang salah. Selalu salin SEMUA file bersama .
Saat mengirim shapefile melalui email, Dropbox, Google Drive, dll. Saya merasa perlu untuk zip semua file menjadi arsip tunggal sehingga ketika membuka ritsleting semua file terkait muncul bersama-sama.
sumber
Jika satu-satunya item yang Anda miliki adalah file .shp, dan Anda dapat melakukannya tanpa bagian lain, pertimbangkan solusi ini, membuka dan menyimpan dari OpenJump. /gis//a/306228 Anda mungkin masih memerlukan file .proj, tergantung pada tujuan Anda, tetapi mungkin bisa lolos dengan "standar" yang disalin dari proyek lain dan diganti namanya agar sesuai dengan shapefile Anda , jika itu menggunakan proyeksi yang sama.
sumber