Answers:
对不起,答案是否定的。您必须推出自己的字段映射器,只有使用您的映射器的软件才能理解它。您可以使用其他不受此限制的格式(例如文件地理数据库,spatialite等)。
关于个人变通办法的一些建议。
当人们选择shapefile(并坚持使用它们)作为其主要格式时,通常出于互操作性的考虑而选择它-将其视为遵循规范。如果选择滚动自己的字段映射器,则基本上是相反的操作-因为您做的事情超出规范-您已经创建了“扩展规范”。
我过去做过吗?是。而且,与每次实际解决问题相比,它无疑总是带来更多的痛苦,因为每次您尝试将shapefile打开为其他任何可以读取/写入shapefile的内容时,最终都会得到一个包含大量难以理解字段的表。
到那时,我会问你,为什么要使用shapefile?要么提出一个符合shapefile规范及其限制的工作流解决方案,要么更改文件格式。其他一切只是头痛的良方。
有一种标准的处理方法,尽管您的客户可能并不完全满意:以软件可以读取的格式导出两个文件,shapefile和数据文件。shapefile仅具有属性的唯一标识符[Id]。数据文件具有多个属性:用于匹配形状的[Id],用于提供字段名称的[Field],用于指示其类型的[Type]以及每种可能的数据类型的一个属性来存储值。原始文件中的每个字段都作为记录存储在此数据文件中。
例如,如下所示的源表:
[Shape] [Id] [Name] [Population2010]
shape1 A1 California 37253956
shape2 A2 Texas 25145561
shape3 A3 Wyoming 563626
将有一个对应的数据文件
[Id] [Field] [Type] [Text] [Integer]
A1 Name Text California <Null>
A1 Population2010 Integer <Null> 37253956
A2 Name Text Texas <Null>
A2 Population2010 Integer <Null> 25145561
A3 Name Text Wyoming <Null>
A3 Population2010 Integer <Null> 563262
显而易见,如何在任何RDBMS中使用这些数据,以及如何在两种格式之间来回转换。
如果您的客户使用的是ArcGIS,则可以提供一个脚本来批量分配字段别名。当他们使用数据时,这将使他们看起来像长字段名。
类似的脚本也可以在其他GIS软件包中提供别名。
最简单的方法是仅将几何图形存储为shapefile,因为许多GIS应用程序中都具有出色的几何图形编辑功能,因此,YET将所有字段数据(或其中的大部分)存储在sqlite中作为表格。根据需要加入他们以研究您的现场数据。
但是,如果您需要在进行空间查询时编辑表,或者在QGIS中选择shapefile功能,则需要忽略[加入sqlite表的shapefile],而是将所有内容导出到Spatialite。学习使用Qspatialite和Spatialite_GUI(它们互为补充,并具有许多其他功能所欠缺的功能-如果您对SQLITE进行很多操作,则将需要并使用两者)
重要的是要记住,这些表(连接到shapefile的表)在连接的同时不可编辑。因此,迁移到Spatialite将是shapefile的绝佳替代选择。它保持了shapefile的简单性和可移植性,同时提供了SQL数据库的大多数优点,而没有PostgreSQL的复杂性。