如果我的shapefile或地理数据库要素类具有要永久重新排序的字段,是否有工具,脚本或实用程序可以帮助我快速完成此任务?
通常,我知道您必须创建一个新字段,然后使用旧值填充它,然后删除旧字段。我希望已经有一些东西可以对此有所帮助。假设您没有FME或其他ETL工具,那么下一个最佳建议是什么?
这不是视图级别的更改(即,按顺序拖放字段),而是写出到新的shapefile或要素类。谢谢。
如果我的shapefile或地理数据库要素类具有要永久重新排序的字段,是否有工具,脚本或实用程序可以帮助我快速完成此任务?
通常,我知道您必须创建一个新字段,然后使用旧值填充它,然后删除旧字段。我希望已经有一些东西可以对此有所帮助。假设您没有FME或其他ETL工具,那么下一个最佳建议是什么?
这不是视图级别的更改(即,按顺序拖放字段),而是写出到新的shapefile或要素类。谢谢。
Answers:
我很确定您可以通过对工具的字段映射部分中的字段重新排序来实现要素类到要素类的操作。
编辑:FC2FC不会执行此操作,但是...请急救。
我刚刚确认ogr2ogr可以做到这一点。在-select开关上指定字段名称顺序。例如,如果我有一个带有两个字段的shapefile,即“名称”和“ FolderPath”(按此顺序),但是我想首先使用“ FolderPath”创建一个新的shapefile,则可以这样做:
C:\Temp>ogr2ogr -f "ESRI Shapefile" re_order_ogr.shp re_order1.shp -select "FolderPath,Name"
供参考:MapInfo也可以直接使用。只需打开DBF,然后对字段进行永久重新排序。http://www.dbf-editor.com也可以这样做(40美元)。其他DBF编辑器也可能会这样做。
我也遇到过类似的问题,如果您已经拥有QGIS,那么对数据字段进行永久重新排序的最快方法就是使用前面建议的“表管理器”插件。
易于安装插件,并且对用户友好,如下页所述:
http://www.qgistutorials.com/zh-CN/docs/using_plugins.html
它使您可以按特定顺序移动属性,重命名字段,插入任何新字段并进行复制。它还允许您保存原始文件,或重命名它并以不同于原始文件的方式保存它。
这是解决我的属性表管理问题的快速便捷的解决方案,强烈建议使用此方法,尤其是对于具有大量与其相关联的属性的文件。
最好的方法是使用字段映射。多年来,我一直在努力使用ESRI软件的此功能,但最终我对该解决方案感到满意。基本上,您可以复制要素类,并使用arcpy.FieldMappings对字段进行永久重新排序。所有数据也将被保留。脚本完成后,只需将旧的要素类重命名为myFeatureClass_old,将新的要素类重命名为myFeatureClass!
这是脚本,它非常简单:
import arcpy
'''
This is possible in python using FeatureClasstoFeatureClass with Fieldmappings. You can also rename fields at the same time.
So if you have a Feature Class with FIELD3, FIELD2, FIELD1 and you want the result to be FIELD1, FIELD2, FIELD3 then the following code should accomplish this.
'''
arcpy.env.workspace = r"C:\Users\myself\ArcData\my_geodatabase.gdb"
arcpy.env.overwriteOutput = True
input_fpath = "Lakes"
output_dpath = arcpy.env.workspace
output_fname = "Lakes_new"
fms = arcpy.FieldMappings()
fm = arcpy.FieldMap()
fm.addInputField(input_fpath,"FIELD1")
fms.addFieldMap(fm)
fm = arcpy.FieldMap()
fm.addInputField(input_fpath,"FIELD2")
fms.addFieldMap(fm)
fm = arcpy.FieldMap()
fm.addInputField(input_fpath,"FIELD3")
fms.addFieldMap(fm)
arcpy.conversion.FeatureClassToFeatureClass(input_fpath,output_dpath,output_fname,"",fms)
将要素类导出到空的个人地理数据库(最快的拖放操作),在Access中打开.mdb,在Design View中对字段重新排序,保存,然后使用ArcMap / Catalog复制回形状或文件地理数据库。
相同的方法适用于重命名字段。
但是请注意,仅在复印时,很容易弄乱所有内容。(正如Karey Jack在另一个答案中指出的那样,Esri 不鼓励直接使用.mdb访问)。为了安全起见,请忽略所有以。开头的表GDB_
以及以_Shape_Index
。结尾的表。
在MS Access中打开.mdb文件,然后使用“设计视图”中的拖放功能对字段重新排序
尽管ESRI不鼓励在Access ESRI链接中编辑数据库
我在这个聚会上有点晚了,但是我很惊讶没有人提到ESRI地理数据库图表绘制器。
ESRI提供的资源,用于编辑地理数据库和文件的XML结构。就我而言,如果您正在从事任何必须完美设计的工作(长期项目),那么这是至关重要的。在犯了一个简单的错误之后,它使您不必连续重新创建文件。