シェープファイルに属性データを追加しますか?


33

Openlayersでシェープファイルを表示できますが、いくつかの属性データを追加する必要があります。

私はExcelでdbfファイルを開くことができますが、dbfとして更新されたファイルにExcelで保存オプションはありません。

シェープファイルに属性データを追加する最良の方法(または使用するソフトウェア)は何ですか?


Excelの以前のバージョンに戻る:MSが取り除かその最新バージョンと書き込みの.dbfファイルへの能力を!:-(
whuber

4
Open OfficeとQuattro Proは、dbfファイルを編集および保存できます。行を削除したり移動したりしないでください。そうしないと、インデックスファイルでは一致しません。これらのタスクには商用またはオープンソースのgiを使用してください。セル値を編集しても問題はないはずです

まあ!!! そして、このサイトにとって私の質問は単純すぎると思いました!! ジオサーバーソフトウェアとpostgresソフトウェアを何らかの理由で破壊したため、提案を試す機会がありませんでした...クリスに返信する時間
ChrisJ

回答:


23

QGISを使用すると、新しい列と値を追加してシェープファイルを編集できます。シェープファイルを開き、[プロパティ]> [属性]に移動して、新しい列を追加します。

QGIS(2.x)の新しいバージョンでは、「属性」は「フィールド」と呼ばれます


QGISを使用することを考えていませんでした。なぜなら、Linuxボックスでは、「Pythonプラグインの取得」をクリックすると、それ(Copiapo)がクラッシュするからです。これに対する修正があるかどうか誰でも知っていますか?それまでは、未亡人バージョンで属性を追加してみます。
ChrisJ

あなたは問題にリチャードはここに記述する方法をデバッグしようとすることができます:osgeo-org.1803224.n2.nabble.com/...
アンダーダーク

QGISでは新しい列を追加できますが、新しい列にデータを入力するのはポイントクリックで入力するように見えますが、本当に非効率的です!以下のmdsummerの答えのようにRを使用することをお勧めします。
バハ・KEV

@ baha-kevなぜクリックポイント入力なのでしょうか?このチュートリアルのようなことをしていただけませんか?
ocean800

1
QGIS 3.2.1では、ダイアログウィンドウのレイヤーコンテキストメニュー>「プロパティ...」>「ソースフィールド」カテゴリにあります。
-andw

23

パッケージで使用Rしてforeign、DBFファイルを変更します。

library(foreign)
dbfdata <- read.dbf("file.dbf", as.is = TRUE)
## add new attribute data (just the numbers 1 to the number of objects)
dbfdata$new.att <- 1:nrow(dbfdata)

## overwrite the file with this new copy
write.dbf(dbfdata, "file.dbf")

または、rgdalパッケージでジオメトリと属性データを読み取ります(したがって、関係も変更して、まったく新しいシェープファイルを作成できます)。

library(rgdal)
## read "/path/to/files/filename.shp"
shp <- readOGR("/path/to/files/", "filename")  

## add new attribute data (just the numbers 1 to the number of objects)
shp$new.att <- 1:nrow(shp)

## write out to a new shapefile
writeOGR(shp, "/path/to/files/", "filename2")  

4

OpenOffice-または同様のアプリケーション-を使用することはまったくお勧めしません!Darlen Copeは、「Excel 2003を使用しないDBFの作成と操作」という質問に対する答えをコメントしています。

「外部」プログラムで.dbfを編集すると、シェープファイルがかなり混乱する


3
これは必ずしも真実ではありません。OpenOfficeとExcelで多くのシェープファイルを問題なく編集しました。フォーマットの制限(列名の長さ、データ型など)に注意するだけです。
scw

@scw:形式の制限に関する情報へのリンクを提供できますか?
LarsH 14

2
特定の制約は、特定のソフトウェアによる形式の使用によって異なりますが、最も単純な制限は次のとおりです。11文字のフィールド名、フィールド名に特殊文字やスペースは使用せず、DBFファイルのコアデータ型に固執します(「メモ」のような難解なものではありません)フィールド)。詳細については、shapefile.pyshapelib DBF API、またはxbaseのこの本を参照してください。
scw 14

4

MS Accessを使用していくつかのシェープファイルをマージしました。他のシェープファイルの一部のデータを結合する必要があり、非常にうまく機能しました。また、迅速でした。しかし、誰もがこのソフトウェアを持っているとは限りません


1
通常、Accessまたは他の形式のSQLを使用してデータを操作します。いくつかのクエリを実行する方がはるかに簡単に思えます。前述したように、実際のデータベース形式の変更を監視するだけでよく、これは実際のGISソフトウェアで最適に処理されます。
-MaryBeth

2

QGISの使用は素晴らしく、DBFとやり取りするための強固なインターフェイスを提供しますが、プログラムで何かを行う必要がある場合や、シェープファイルを検査するためのツールが必要な場合は、他のいくつかのツールについて言及したいと思いました:DBFファイルを調べるためのshapelib:ジオメトリと属性の両方を追加、作成、および変更できdbfdump myshape.dbfます。属性値の概要をすばやく取得するためによく使用します。

あなたはDBFのプログラム制御に興味があるなら別のオプションはありdbfpy、Pythonライブラリ(素敵なのに代替foreignライブラリmdsummerが言及します)。列を追加するためのサンプルスクリプト:

import dbfpy

db = dbf.Dbf("myshape.dbf", new=False)
# add a new character field named 'myfield'
db.addField(("myfield", "C", 15))

db.close()

2

andyがリンクDARIAPRAであなたに言及したように、Excel 2007アドインが役に立つかもしれません-dbf形式で保存できます。このウェブサイトで見つけることができます:

http://savedbf.blogspot.com/

(Excel 2003を持っているので、試したことはありませんが、便利だと聞きました。

ArcGIS以外でのDBF操作については、数回行いました。時には機能する場合もあれば、機能しない場合もあります。私の2セント:あなたが外部からの操作を避けることができるなら、それを避けてください。英語以外の言語を扱っている場合は、完全に避けてください-ArcGIS以外で編集すると、すべてがめちゃくちゃになる傾向があります)。


2

代わりに:

  1. MS Excel 2007/10でdbfを開く
  2. 変更(列の追加、データの入力など)を行い、xls / xlsxとして保存します
  3. ArcCatalogでxls / xlsxの場所に移動し、ワークシートを右クリックして、[エクスポート]> [To dBase(単一)]を選択します。
  4. 必要に応じて出力dbfファイルの名前を変更します


2

私は通常Rを使用します(mdsomne​​rsの回答を確認してください)が、それがあなたがしたい唯一のことである場合、それを学ぶことはお勧めしません。最良のアプローチは、GISプログラムを使用してフィールドを作成し、次にopenofficeを使用して編集することだと思います。

さらに重要なことは、属性テーブルのすべてのフィールドを直接編集する必要があるのか​​、他のテーブルをそれに結合できるのかを考える必要があることです。後者は、SAGA GISなどのほとんどのGISプログラムで実行できます。

http://www.saga-gis.org/saga_modules_doc/shapes_tools/index.html


同意した。データを追加/変更するたびに、もっと簡単な方法があるのだろうかと思います。
MaryBeth

1

Open Office Calcでは、dbfファイルを読み書きできます。しかし、QGISを使用したLcasagrandeのソリューションはより安全なはずです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.