回答:
Pythonコンソールに次のコードを入力して、QGISにロードされたシェープファイルのすべての属性をクリアできます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によるコメントに応じて、次のコードを直接Pythonコンソールにコピー/貼り付けることができ、フィールドのタイプ(つまり0
、整数フィールドの場合NULL
、文字列フィールドの場合、および1900-01-01
forのエポック)に応じて属性の値を変更します日付フィールド):
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という名前の数値カウンター列が1つありますが、Shapefile形式には少なくとも1つの属性が必要ですか?可能であれば、より良いもの、spatialiteまたはgeopackageを使用してください。
NULL
。
openofficeなどで.dbfファイルを開き、データを削除します。
Pythonを使用してファイルをループし、ヘッダー以外のすべてを削除できます
。dbfpythonモジュールを参照してください。
QGISは、.dbfなしでシェイプファイルを開くことができます。
したがって、.dbfコンポーネントを削除して.shpにロードするだけで、ジオメトリのみが読み込まれます。
おそらく、Excelで* .dbfファイルを編集できます。
次に、geom以外のすべてのフィールドを削除します。
最後に保存して終了します。
これを行う前に* .shpのアーカイブを保持しておくと便利です。
QGIS 2.8.xでは、特定のフィールドまたはすべてのフィールドを取り除くこともできます。属性テーブルを開き、編集モードを切り替え、「列を削除」ボタンをクリックし、不要な属性をすべて選択して「OK」をクリックします。編集を保存します。