赞
踩
当我们创建一个Shapefiles(shp), geodatabase feature classes(gdb中的要素类)或独立的dBase表(dbf)时,ArcGIS会自动为上述三种格式创建一个ID字段,这个ID是由ArcGIS来管理,是不能手动更改或删除的。它被用于指定Shapefiles, geodatabase feature classes或dBase表中的每条记录。因此这个ID是唯一的。
我们日常工作中经常会面对三种ArcGIS中的ID,分别是FID、OBJECTID和OID。他们之间的区别是什么呢?
说明一下,图中ID可以理解为属性内容,它与FID、OBJECTID和OID都没有任何关系,示例数据没有做好命名,若造成误导还请理解。
FID存在于shapefile中,它的值从0开始。
在shapefile中新增一个图形,则属性表中相应的增加一条记录,该记录的FID按顺序编号。
在shapefile中删除一条记录时,FID会重新编号,编号之间保持顺序,没有间隔。
如下图所示,删除了FID为2的记录,则其余FID重新编号。
如下图所示,对FID为1的图形进行切割后,生成了新的图形被赋值为新FID-4。
OBJECTID存在于.gdb数据库中的geodatabase feature classes(要素类)或geodatabase table(表)中,它的值是从1开始。
如果一个 geodatabase feature class 或者一个 geodatabase table中的一条记录被删除了, OBJECTID不会重新编号, 并且列表中的间隔会保存。
如下图所示,删除了FID为3的图形后,OBJECTID并没有重新编号。
如下图所示,对2和4图斑进行了多次切割,新生成的图形,其OBJECTID按现有记录继续向下编号,没有占用之前删掉的OBJECTID-3。
当一个geodatabase feature class被导出或者转换成shapefile的格式,输出shapefile中的记录将被从0开始按顺序重新编号。
我们将之前OBJECTID为1/2/4/5/6/7的要素类导出为shapefile格式,查看其属性表变化如下:
可以看到导出后的shapefile新增了一个FID字段,且编号从0开始顺序编号,中间没有间隔。而其中OBJECTID则继承原要素类的OBJECTID值,并变成了一个可编辑的字段。
当一个geodatabase 表格被导出成dBase格式, 输出dbf表格中的记录将被从0开始按顺序重新编号。
当一个geodatabase feature class被导出或者转换到一个新的 geodatabase feature class, 输出的feature class 中的记录将被从1开始按顺序重新编号。
可以看到将geodatabase feature class导出到另一个gdb数据库中后,OBJECTID被从1开始重新编号。也就是说一组数据经过两个数据库之间的转换后,如果直接按OBJECTID进行连接将有可能不再准确对应(原geodatabase feature class进行过删减操作)。
当一个geodatabase table 被导出或者转换到一个新geodatabase table, 输出的table中的记录将被从1开始按顺序重新编号。
当一个shapefile导入或转换到geodatabase feature class中,输出的feature class中将没有FID,会出现一个OBJECTID,并从1开始重新编号。
-END-
更多内容请关注LearnGIS公众号
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。