Bạn có thể nhập mã sau vào Bảng điều khiển Python để xóa TẤT CẢ các thuộc tính NULL
cho một shapefile được tải vào QGIS. Chọn lớp từ bảng điều khiển lớp (Mục lục) và chạy mã:
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()
Điều này đã được thử nghiệm trên QGIS 2.8.2.
CẬP NHẬT :
Để đối phó với những nhận xét của @Vince, mã sau đây có thể được sao chép trực tiếp / dán vào Python console và sẽ thay đổi các giá trị của các thuộc tính tùy thuộc vào loại của lĩnh vực (ví dụ 0
cho số nguyên lĩnh vực; NULL
cho chuỗi các lĩnh vực; và một kỷ nguyên của 1900-01-01
cho một trường ngày ):
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()