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

我可以在excel中打开dbf文件,但是在excel中没有将另存为dbf选项。

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

评论

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

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

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

#1 楼

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

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

评论


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

– ChristJ
2011年3月6日21:18



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

– Underdark♦
2011年8月8日在18:10

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

– baha-kev
2012年2月23日下午5:12

@ baha-kev为什么只是点击输入?您不可以像本教程那样做吗?

–ocean800
16年4月4日在20:10

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

– andw
18年7月27日在14:41

#2 楼

结合使用Rforeign软件包来修改DBF文件:创建一个全新的shapefile):

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")


#3 楼

我完全不建议使用OpenOffice-或类似的应用程序!达伦·科普(Darren Cope)评论了“没有excel 2003的DBF创建和操作”问题的答案:程序


评论


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

– scw
2011年3月7日,下午2:34

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

– LarsH
14年8月27日在16:18

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

– scw
2014年8月27日在18:39

#4 楼

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

评论


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

– MaryBeth
2011-3-7 13:23



#5 楼

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

如果您对编程控制感兴趣,可以选择DBF的一个功能是dbfpy,这是一个python库(是mdsummer提到的不错的foreign库的替代方法)。添加列的示例脚本:

import dbfpy

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

db.close()


#6 楼

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

http://savedbf.blogspot.com/

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

在ArcGIS外部进行DBF操作-我已经做过几次,有时它可以工作,有时却不行。我的两分钱:如果可以避免外部操作,请避免这种情况。完全避免使用它-在ArcGIS之外进行编辑时,往往会弄乱所有内容。

#7 楼

或者:


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


#8 楼

uDig有一个很好的工具,称为reshape,您可以通过它例如向表添加属性:http://udig.github.io/docs/user/reference/Transform%20operation.html

支持函数是常用查询语言的函数:http://udig.github.io/docs/user/concepts/Constraint%20Query%20Language.html

#9 楼

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

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

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

评论


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

– MaryBeth
2011-3-7 13:22

#10 楼

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