将属性数据添加到shapefile?


33

我可以在openlayers中显示shapefile,但是我需要添加一些属性数据。

我可以在excel中打开dbf文件,但是在excel中没有将另存为选项作为dbf保存到更新的文件中。

将属性数据添加到shapefile的最佳方法(或使用的软件)是什么?


返回到早期版本的Excel:MS 删除了使用最新版本写入.dbf文件的功能!:-(
豪伯

4
Open office和Quattro Pro可以编辑和保存dbf文件,只是不要删除行或四处移动,否则索引文件将不允许进行匹配。使用商业或开源gis来完成这些任务,编辑单元格值应该不会造成问题

好!!!我以为这个网站的问题太简单了!!我没有机会尝试任何建议,因为我以某种方式破坏了我的geoserver和postgres软件... :-(因此,一旦我的Linux机器恢复到100%,我将查看所有建议,谢谢回复克里斯的时间
ChrisJ

Answers:


23

使用QGIS,您可以编辑shapefile,添加新的列和值。只需打开shapefile,转到“属性”>“属性”并添加新列。

在较新版本的QGIS(2.x)中,“属性”称为“字段”


我没有考虑使用QGIS,因为当我单击“获取python插件”时,在我的Linux机器上,它(Copiapo)崩溃了。有人知道是否有解决办法吗?同时,我将尝试添加寡妇版本的属性。
ChrisJ 2011年

您可以尝试按照Richard在这里描述的方式调试问题:osgeo-org.1803224.n2.nabble.com/…–
underdark

QGIS允许您添加新列,但是用数据填充新列似乎是单击鼠标输入的—确实效率低下!我建议在下面的mdsummer的答案中使用R。
baha-kev '02

@ baha-kev为什么只是点击输入?您不能只做教程吗?
ocean800 '16

1
在QGIS 3.2.1中,它位于对话框窗口中的图层上下文菜单>“属性...”>“源字段”类别中。
andw '18

23

Rforeign软件包一起使用以修改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包读取几何和属性数据(以便您也可以修改关系并创建一个全新的shapefile):

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-或类似的应用程序!达伦·科普(Darren Cope)评论了“ 没有excel 2003的DBF创建和操作 ”问题的答案:

如果您在“外部”程序中编辑.dbf,那就是shapefile变得很沮丧


3
这不一定是正确的:我已经在OpenOffice和Excel中编辑了许多shapefile,而没有出现问题:您只需要了解格式的局限性(列名长度,数据类型等)即可。
SCW

@scw:您可以提供任何有关格式限制信息的链接吗?
LarsH 2014年

2
特定的限制因特定软件对格式的使用而异,但最简单的限制是:11个字符字段名称,字段名称中没有特殊字符或空格,并坚持使用DBF文件的核心数据类型(不是像'memo'这样深奥的东西)字段)。有关更多详细信息,请参见shapefile.pyshapelib DBF APIxbase上的此tome
scw

4

我已经使用MS Access合并了几个shapefile。我需要从其他shapefile中加入一些数据,并且效果很好。也很快。但是我猜不是每个人都有这个软件


1
通常,我使用Access或其他形式的SQL来处理数据。对于我来说,运行一些查询似乎要容易得多。如前所述,您只需观察实际数据库格式的变化,这是在实际GIS软件中最好处理的事情。
MaryBeth

2

使用QGIS很好,并且提供了与DBF交互的可靠界面,但是如果您需要以编程方式进行某些操作,或者只是想使用工具来检查shapefile,我想我会提到其他一些工具:我经常使用的基本功能用于检查DBF文件的shapelib:它可以添加,创建和修改几何形状和属性,我经常使用它dbfdump myshape.dbf来快速了解属性值。

如果您对DBF的程序控制感兴趣,则另一个选择是dbfpy,它是一个python库(是foreignmdsummer提到的不错的库的替代方法)。添加列的示例脚本:

import dbfpy

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

db.close()

2

正如DARIAPRA指向您的链接中的Andy所指出的,有一个Excel 2007 ADD-IN您可能会发现有用-它允许您以dbf格式保存。您可以在以下网站上找到它:

http://savedbf.blogspot.com/

(由于我拥有Excel 2003,所以我从未尝试过,但听说它很有用。

至于在ArcGIS之外进行DBF操作-我已经做了几次。有时它起作用,有时却不起作用。我的两分钱:如果可以避免外界的操纵,那就避免它。如果您使用的是非英语语言,请完全避免使用它-在ArcGIS之外进行编辑时,往往会感到一头雾水。


2

或者:

  1. 在MS Excel 2007/10中打开dbf
  2. 进行更改(添加列,填充数据等)并另存为xls / xlsx
  3. 导航到ArcCatalog中的xls / xlsx位置,右键单击工作表,然后选择“导出”>“到dBase”(单个)
  4. 根据需要重命名输出dbf文件


2

我通常使用R(请检查mdsomne​​rs答案),但我不建议您了解这是否是您唯一想做的事情。我认为最好的方法是使用GIS程序创建字段,然后尝试使用openoffice编辑它们。

更重要的是,您应该考虑是否需要直接编辑属性表的所有字段,或者是否可以将其他表联接到该属性表。后者可以在大多数GIS程序中完成,例如SAGA GIS

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


同意 每次添加/更改数据时,我都想知道是否有更简单的方法。
MaryBeth 2011年

1

Open Office Calc允许您读取和写入dbf文件。但是Lcasagrande使用QGIS的解决方案应该更安全。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.