파이썬은 shapefile을 읽을 수 없습니다


11

Jupyter 노트북으로 shapefile을 열려고하는데 열 수 없습니다. shapefile은 통합 문서와 동일한 폴더에 있으며 전체 경로를 사용하더라도 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'

나는 이것이 사소한 문제 일 수 있다는 것을 알고 있지만 shapefile과 공간 파이썬 라이브러리를 처음 사용 하므로이 문제를 해결하는 방법을 정말로 모른다.


빼기를 밑줄로 바꾸고 다시 시도하십시오. shapefile 이름은 문자, 숫자 및 밑줄 포함해야 합니다 . 이름을 문자로 시작하는 것도 좋습니다. 문제가 지속되면 shapefile이 손상되었거나 .SHX가 누락되었을 수 있습니다. .SHP 파일 만 있거나 전체 파일 세트 (.SHP, .SHX, .DBF, .PRJ 등)가 있습니까? )?
Michael Stimson 2

아마도 shapefile이 손상되었을 수 있습니다. 나는 임의의 shapefile을 1-11-99n.shp 로 저장하고 shapey , fiona 또는 geopandas가있는 미니 스크립트에 아무런 문제가 없었습니다.
xunilk

3
그래, 문제는 내가 필요한 다른 shx, dbf 등 파일을 포함시키지 않았다는 것입니다. 나는 전에 shp 파일을 사용한 적이 없으므로 파일 보완이 필요하다는 것을 몰랐습니다. 파일 이름을 변경할 필요없이 정상적으로 작동했습니다. 감사!
레너드 쇼

1
@LeonardShaw이 질문이 해결되었다고 생각할 수 있도록 질문에 대한 답변을 제공하십시오.
Aaron

반복해서 말하면, shapefile 스펙을 위반하여 파일 이름에 선행 숫자 또는 하이픈이있는 것입니다. 일부 shapefile 판독기 구현에서 실패를 일으킬 수있는 이름 지정을 피하는 것이 좋습니다.
빈스

답변:


21

shapefile을 처음 사용하는 사용자를위한 함정이 있습니다. 실제 모양 파일 (.shp)은 .dbf, .shx, .prj 등의 동반 파일 없이는 쓸모가 없습니다.

이것은 shapefile 기술 사양에 요약되어 있지만 약간 고급이지만 Esri 기사 는 빠른 설명에 더 적합 할 수 있습니다.

shapefile에 속하는 모든 파일을 단일 단위로 처리해야합니다. 셰이프 파일이 어떤 단계에서든 편집되면 속성 변경만으로도 FID (기능 식별자)가 변경됩니다. 이는 .DBF 파일의 순서가 변경됨을 의미합니다. 셰이프 파일의 속성을 편집하고 .DBF 파일 만 복사해야하는 경우, 기존 .DBF 파일을 덮어 쓰면 모양이 잘못된 행을 가리 킵니다 . 항상 모든 파일을 함께 복사하십시오 .

이메일, Dropbox, Google Drive 등으로 shapefile을 보낼 때 모든 파일을 단일 아카이브로 압축하여 압축을 풀면 연결된 모든 파일이 함께 표시되는 것이 좋습니다.


1
더 정확하게 말하면 .shp, .dbf 및 .shx는 절대 최소값입니다 (표준에 따름). QGIS / OGR을 사용하면 .dbf가없는 파일을 열 수는 있지만 해당 기능을 삭제하거나 편집 할 수는 없습니다. 그러나 ogr2ogr을 사용하여 누락 된 dbf-File (빈 속성 테이블 포함)을 작성할 수 있습니다.
LuWi

2
@LuWi는 심지어 .SHX 파일도 재 구축 될 수 있으며, 공간 인덱스이며, 기존 모양에서 공간 인덱스를 재 구축 할 수있는 몇 가지 도구와 옵션이 있습니다. 관련 파일의 정확한 수는 다양하지만 항상 모든 것을 함께 유지하는 것이 가장 좋습니다 .
Michael Stimson 20시 47 분

0

가지고있는 유일한 항목이 .shp 파일이고 다른 부분없이 수행 할 수있는 경우 OpenJump에서 열고 저장하여이 솔루션을 고려하십시오. https://gis.stackexchange.com/a/306228 목적에 따라 여전히 .proj 파일이 필요할 수 있지만 다른 프로젝트에서 복사하여 shapefile과 일치하도록 이름을 바꾼 "표준"파일로 벗어날 수 있습니다. 동일한 투영을 사용하는 경우

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.