편집하는 동안 손상된 모양 파일을 작성하지 않으려면 어떻게해야합니까?


15

QGIS의 일부 라인을 shapefile 형식으로 디지털화하는 GIS 기술자 중 한 명이 있습니다. 나는 그가 어떻게했는지 알지 못하지만 (모두도) 모르지만 모양 파일이 손상되었습니다. 임의의 선을 만들거나 그가 만든 선 중 일부가 사라질 것입니다. ArcCatalogue에 들어가서 ArcGIS에서 어떻게 보이는지 확인했으며 이것이 내가 본 것입니다.

여기에 이미지 설명을 입력하십시오

shapefile 'line'아이콘이 표시되는 물음표 아이콘을 확인하십시오. 분명히 ArcCatalogue는이 파일을 읽을 수 없습니다. 또한 두 번째 dbf 파일은 끝에 '_packed'가 첨부 된 것으로 보입니다. Windows 탐색기를 사용하여 shapefile을 볼 때 shapefile 'M3_PRE_SMU_lines_10Apr13_SMC.dbf'에 대한 .dbf가 이미 있다는 것을 알았 으므로이 _packed shapefile의 출처를 모르고 온라인에서 아무것도 찾을 수없는 것 같습니다 그 말을합니다.

이 파일을 ArcMap에 추가하려고 시도했는데 다음 오류가 발생했습니다.

여기에 이미지 설명을 입력하십시오

오류는 꽤 자명하다 ... 모양의 수가 레코드 수와 일치하지 않습니다. 왜 그런 일이 일어나고 있는지 모르겠습니다. QGIS에서 이러한 현상이 어떻게 발생하는지 설명하는 온라인 내용은 없지만 몇 가지 수리 도구가 있습니다. 실제로 QGIS를 열고 레이어를 추가 한 다음 레이어를 마우스 오른쪽 버튼으로 클릭하고 다른 모양 파일로 '다른 이름으로 저장'하여이 문제를 직접 해결했습니다. 따라서 해결 방법을 찾았지만 처음 부터이 문제가 발생하지 않도록하는 솔루션을 찾고 싶습니다. 고마워, 마이크


1
나는 몇 년 동안 QGIS를 사용해 왔으며 이전에는이 ​​문제를 보지 못했습니다. 다른 .dbf의 "매직"모양은 Shapefile이 QGIS 외부에서 변조되었음을 나타냅니다. QGIS 만 사용하여 버그를 재현 할 수있는 경우 버그 보고서를 제출하십시오. 매우 중요합니다!
underdark

운없이 문제를 재현하려고했습니다. 내가 주목 한 것은 ArcGIS와 달리 QGIS에서 편집 할 때 스키마 잠금 메시지가 표시되지 않는다는 것입니다. 예를 들어 누군가가 쉐이프 파일에 스키마 잠금이 있고 동일한 파일을 편집하기 시작하면 ArcGIS가 저장할 때 오류가 발생합니다 QGIS는 그렇지 않습니다.) 스키마가 잠긴 쉐이프 파일을 저장할 때 이상하게 저장된다고 생각합니다. 나는 이것이 원인이라는 것을 100 % 확신하지는 않지만 주목할만한 가치가 있습니다.
Mike

셰이프 파일을 편집하는 동안이 오류가 발생했습니다. 해결 방법은 ArcMap에서 편집하는 것입니다. 분명히 이것은 실제 솔루션은 아니지만 이러한 종류의 오류가 발생하는 것은 아닙니다.
Kevin

..._ SMC.dbf 파일의 이름을 ..._ SMC.dbf.backup으로 바꾸고 ..._ SMC_packed.dbf를 ..._ SMC.dbf로 바꾸려고 했습니까?
Matthias Kuhn

2
Dufur와 같은 문제입니다. q gis 환경에서만 작성된 파일. 모양을 편집하고 마지막으로 저장하고 편집을 중단하면 선이 사라지고 속성 테이블에 데이터가없는 것 같습니다. qgis에 셰이프를 다시로드하려고하면 비어있는 것처럼 보입니다. 폴더에서 파일 es. mario.shx는 mario_packed.shp가되었습니다. 이름에서 압축 된 단어를 삭제하면 (mario.shx로 돌아옴) 도형이로드되어 작동하는 것 같습니다. 얼마나 오래? 내가
이걸로

답변:


16

설명

OGR (GDAL의 일부)은 QGIS에서 모양 파일에 액세스하는 데 사용하는 라이브러리입니다. OGR은 기능을 삭제하면 즉시 삭제하지 않고 기능을 삭제 된 것으로 표시합니다. 가끔 repack 이라는 명령 이 실행되어 접미어 _repack을 사용하여 새 파일을 작성하고 삭제 된 것으로 표시되지 않은 모든 기능을이 새 파일에 복사합니다. 완료되면 원래 .dbf가 _repack.dbf로 바뀝니다. 그런 다음 shapefile과 동일한 작업을 수행합니다. 새 파일 (_packed.shp)을 작성하고 삭제되지 않은 모든 기능을 복사 한 다음 원래 .shp를 바꿉니다.

이 프로세스의 어딘가에 뭔가 실패한 것 같습니다 (충돌 일 수 있습니까?).

이 프로세스 내에서 기능 ID가 변경되므로 사용자가 가지고있는 shp (형상)와 dbf (속성 테이블)가 동일한 기능에 대해 다른 기능 ID를 사용하므로 이상한 동작이 발생합니다. 두 파일 중 하나에 여전히 삭제 된 기능이 포함되어 있고 다른 파일에는 포함되어 있지 않은 것 같습니다.

이것을 다루는 방법

2016 년 11 월 업데이트 : GDAL 2.2에는 파일이 디스크에 기록 될 때마다 자동으로 재 포장을 호출하는 기능이 내장되어 있습니다. 따라서 다른 작업을하기 전에 : QGIS에서 대화 상자에 대한 GDAL 버전을 확인하고 GDAL (종종 QGIS의 일부로 제공됨) 릴리스를 최신 버전으로 업데이트하십시오.

처리 할 수있는 것보다 더 많은 데이터를 잃지 않기 위해 정기적 인 백업만드는 것 외에는 할 일이 많지 않을 것입니다 (어쨌든 그렇게하고 있습니까? 😉). 그리고 이것을 재현하는 방법을 찾으면 (샘플 데이터 세트로 가장 좋습니다) 버그 보고서를 만드십시오 .

이 문제가 다시 발생 하면 셰이프 파일에 공간 인덱스만들 수도 있습니다 . 이 과정에서 QGIS는 shapefile에서 repack을 다시 호출 하고 shp / dbf를 "수리"할 수 있습니다. 그러나 이것은 확인되지 않은 추측 일뿐입니다.

@rhm과 주석에서 언급했듯이 {xyz} _packed. {ext} 파일의 이름을 {xyz}. {ext}바꾸는 데 도움이 될 수도 있습니다 . 압축 파일이 이미 완전히 작성되었고 이름이 바뀐 이름 인 경우이 단계를 수동으로 수행하는 것이 절대적으로 유효합니다. 그러나 _packed 파일이 완전히 작성되지 않은 경우 기능의 일부 정보가 누락 될 수 있습니다. 따라서이 작업 을 시도하기 전에 관련된 모든 파일의 백업 사본만드십시오 .

재 포장 호출시기에 대한 배경 정보

QGIS 2.0과 2.8 사이 에서 레이어가 언로드 될 때마다 리팩이 호출되었습니다 (QGIS 종료, 다른 프로젝트로드 ...). 형상이 삭제되었거나 형상이 변경된 경우 삭제 된 것으로 표시된 레코드가있는 .shp 및 .dbf 파일 이 존재했습니다.

삭제 된 플래그를 레코드에 추가 할 수있는 작업 후에 레이어를 저장할 때마다 QGIS 2.10부터 리 패킹이 호출됩니다. 따라서 파일은 항상 다른 응용 프로그램에서 처리 할 수 ​​있도록 제정신 상태에 있어야합니다.


1

이것은 QGIS에서 나에게 일어났다. 누군가 위의 주석 섹션에서 제안한 것처럼 파일 이름에서 '_packed'를 삭제하여 문제를 간단히 해결할 수있었습니다.


1

아마도 이것은 깨진 .shx 인덱스 파일의 또 다른 문제 일 수 있습니다. 지오메트리 유형은 .shp 및 .shx 헤더에 저장해야합니다. 일치하지 않으면 소프트웨어에서 오류가 발생합니다.

QGIS는 깨진 인덱스 파일에 대해 엄격하지 않은 것으로 보입니다. Save As...ARCGIS는 올바른 인덱스 파일을 고집하고 ADFGIS의 올바른 부분을 통해 찾을 수있는 기능에 대해 압축 된 dbf (속성 테이블)를 생성합니다. 색인 파일을 사용하거나 색인을 사용하지 않을 수 있습니다.


1

QGIS에서 형상이 삭제 된 형상 파일의 삭제 된 형상 및 / 또는 이상한 동작의 재현은 알려진 버그입니다. 이 버그 보고서 11007 및 관련 질문- 삭제 된 다각형이 이전 버전으로 되돌아 간 것으로 보입니다 . ArcGIS뿐만 아니라 이러한 모양 파일에 문제가있는 경우 MapInfo TAB 파일로 QGIS에 저장하면 RouteFinder를로드하기 전에 테이블이 MapInfo에 먼저 압축되어 있지 않으면 MapInfo RouteFinder 플러그인이 중단됩니다. MapInfo에서 이러한 손상된 모양 파일을 변환하기 위해 Universal Translator를 실행하면 실패합니다.

알다시피 QGIS에서 '다른 이름으로 저장'을 수행하면 문제를 해결할 수 있습니다.

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