파이썬은 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.