QGIS 2.6에는 여러 폴리곤이있는 Shapefile 레이어가 있으며 각 폴리곤에는 100 개가 넘는 필드에 데이터가 있습니다. 모든 동일한 다각형을 사용하여 새 레이어를 만들어야하지만 모든 데이터 필드가 비어 있습니다 (필드 유형에 따라 0, Null 또는 비어 있음으로 설정 됨). 한 번에 하나씩 각 다각형의 각 필드에서 Delete 키를 누르는 것보다 빠른 방법이 있습니까?이 방법으로 1000 번 이상 수행해야합니다.
QGIS 2.6에는 여러 폴리곤이있는 Shapefile 레이어가 있으며 각 폴리곤에는 100 개가 넘는 필드에 데이터가 있습니다. 모든 동일한 다각형을 사용하여 새 레이어를 만들어야하지만 모든 데이터 필드가 비어 있습니다 (필드 유형에 따라 0, Null 또는 비어 있음으로 설정 됨). 한 번에 하나씩 각 다각형의 각 필드에서 Delete 키를 누르는 것보다 빠른 방법이 있습니까?이 방법으로 1000 번 이상 수행해야합니다.
답변:
QGIS에로드 된 shapefile 에 대한 모든 속성을 지우려면 Python 콘솔에 다음 코드를 입력 할 수 있습니다 NULL
. 레이어 패널 (목차)에서 레이어를 선택하고 코드를 실행하십시오.
layer = qgis.utils.iface.activeLayer()
layer.startEditing()
for field in layer.dataProvider().attributeIndexes():
for feature in layer.getFeatures():
layer.changeAttributeValue(feature.id(), field, NULL)
layer.commitChanges()
이것은 QGIS 2.8.2에서 테스트되었습니다.
업데이트 :
@Vince에 의해 코멘트에 대응하여, 다음과 같은 코드를 직접 파이썬 콘솔에 붙여 넣기 / 복사 할 수 있습니다과에 따라 속성의 값이 변경됩니다 유형 (즉, 필드 0
에 대한 정수 필드; NULL
에 대한 문자열 필드를, 그리고 시대의 1900-01-01
에 대한 날짜 필드) :
layer = qgis.utils.iface.activeLayer()
layer.startEditing()
for field in layer.pendingFields():
if field.typeName() == 'Integer':
name_int = field.name()
for feature in layer.getFeatures():
feature[name_int] = '0'
layer.updateFeature(feature)
if field.typeName() == 'String':
name_str = field.name()
for feature in layer.getFeatures():
feature[name_str] = NULL
layer.updateFeature(feature)
if field.typeName() == 'Date':
name_dat = field.name()
for feature in layer.getFeatures():
feature[name_dat] = '1900-01-01'
layer.updateFeature(feature)
layer.commitChanges()
파일을 새 파일로 저장하고 "다른 이름으로 저장 ..."대화 상자에서 "속성 만들기 건너 뛰기"상자를 선택하면됩니다. 정확히 말한대로합니다.
FID라는 숫자 카운터 열이 하나 있습니다. 분명히 Shapefile 형식에는 하나 이상의 속성이 필요합니까? 가능하면 더 나은 공간적 공간 또는 지오 패키지를 사용하십시오.
NULL
입니다.
openoffice 또는 기타로 .dbf 파일을 열고 데이터를 제거하십시오.
파이썬을 사용하여 파일을 반복하고 헤더를 제외한 모든 헤더를 제거 할 수 있습니다.
dbf python 모듈을 참조하십시오.
QGIS는 .dbf없이 모양 파일을 열 수 있습니다.
따라서 .dbf 구성 요소를 삭제하고 .shp를로드하면 형상 만 가져올 수 있습니다.
Excel에서 * .dbf 파일을 편집 할 수 있습니다.
그런 다음 기하 필드를 제외한 모든 필드를 삭제합니다.
마지막으로 저장하고 종료하십시오.
이 작업을 수행하기 전에 * .shp의 아카이브를 유지하는 것이 좋습니다.
QGIS 2.8.x에서는 특정 또는 모든 필드를 제거 할 수도 있습니다. 속성 테이블 열기, 편집 모드 전환, "열 삭제"버튼을 클릭하고, 원치 않는 모든 속성을 선택하고 "확인"을 클릭하십시오. 수정 사항을 저장하십시오.