Estou tentando abrir um shapefile com o notebook Jupyter, mas não consigo abri-lo. O shapefile está localizado na mesma pasta da minha pasta de trabalho e o Python não pode identificá-lo, mesmo que eu use o caminho completo.
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.
Abri-lo com fiona e geopandas também não funciona.
import fiona
shape = fiona.open("1-11-99n.shp")
e
import geopandas as gp
shp = gp.GeoDataFrame.from_file('1-11-99n.shp')
print (shp)
ambos acabam com
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'
Sei que esse pode ser um problema trivial, mas sou novo no uso de shapefiles e bibliotecas espaciais de Python, por isso realmente não sei como solucionar esse problema.
Respostas:
Existe uma armadilha para os usuários iniciantes de shapefiles. O arquivo shapefile real (.shp) é inútil sem os arquivos complementares: .dbf, .shx, .prj etc.
Isso está descrito na especificação técnica shapefile, mas um pouco avançado, o artigo da Esri pode ser mais adequado para uma explicação rápida.
É fundamental que todos os arquivos pertencentes a um shapefile sejam tratados como uma única unidade. Se o shapefile for editado em qualquer estágio, mesmo que apenas as alterações de atributo, os FIDs (identificadores de recurso) são alterados, o que significa que a ordem no arquivo .DBF é alterada. Você deve editar os atributos de um shapefiles e copiar apenas o arquivo .DBF, sobrescrever um arquivo DBF existente as formas irá apontar para as linhas erradas. Sempre copie TODOS os arquivos juntos .
Ao enviar um shapefile por email, Dropbox, Google Drive etc., acho conveniente compactar todos os arquivos em um único arquivo, para que, quando descompactado, todos os arquivos associados apareçam juntos.
fonte
Se o único item que você possui é o arquivo .shp, e você pode ficar sem as outras partes, considere esta solução, abrindo e salvando no OpenJump. /gis//a/306228 Você ainda pode precisar de um arquivo .proj, dependendo da sua finalidade, mas pode conseguir um "padrão" copiado de outro projeto e renomeado para corresponder ao seu shapefile , se isso usar a mesma projeção.
fonte