将相关表单CSV导出关联到GIS要素
相关表单在设计上就比标准的Shapefile属性表更加灵活:一个要素可以有多条相关条目,一个图层也可以挂接多种不同的相关表单。大多数GIS交换格式无法原生表达这种“多对一”的表单历史,因此GoGIS会将这些记录导出为并行的CSV文件。
关键在于GoGIS_ID列。导出的主图层为每个要素提供一个稳定的GoGIS_ID值,每个相关表单CSV中也包含相同的GoGIS_ID,因此您可以对这些记录进行连接、关联、筛选,或将其重新导入GIS或数据库。
导出内容
导出带有相关表单的图层时,ZIP文件中可以包含:
- 主GIS图层,采用您选择的格式,例如Shapefile、GeoJSON、GeoPackage、KML或CSV。
- 每种相关表单各一个CSV,包含该表单类型的全部条目。
- 媒体文件夹,存放与相关条目关联的照片、草图和签名。
- 相关表单元数据,便于在重新导入或后续处理时理解表单定义和条目结构。
连接列:GoGIS_ID
GoGIS_ID是父要素与相关记录之间的桥梁。如果某个仪表要素的GoGIS_ID = 60083,那么该仪表的每一条读数、检查或维护日志记录都会带有相同的值。
由此形成一种清晰的关系:
- 主图层:每个GIS要素一行。
- 相关表单CSV:每个GIS要素多行。
- 关系:主图层的
GoGIS_ID等于相关CSV的GoGIS_ID。
示例:仪表读数
仪表图层可能只为仪表60083导出一行要素记录,而“仪表读数”相关CSV中,同一要素可以有六行:分别是12月、1月、2月、3月、4月和5月的读数。每一行都有各自的日期、读数值、抄表员姓名、创建时间戳,以及您定义的其他字段。
这样既保留了历史记录,又不必把它们压平成Reading_1、Reading_2、Reading_3这类别扭的列。这也意味着新增读数时无需更改主GIS图层的结构。
如何使用这些CSV
- 在电子表格中:按
GoGIS_ID筛选相关CSV,或按设施汇总读数。 - 在桌面GIS中:加载主GIS图层和相关CSV,然后通过
GoGIS_ID建立关联或连接。 - 在数据库中:将主图层导入为父表,将每个相关CSV导入为以
GoGIS_ID为键的子表。 - 重新导入时:利用相关表单元数据重建表单定义,并在保留原有父要素关联的情况下重新载入条目。
为什么不把所有数据都放进Shapefile?
Shapefile和许多简单的GIS格式都基于“一个要素一行、一组属性”的结构,而相关表单不同:同一要素可以有多行记录,一个图层也可以有多种表单类型。将这些条目导出为CSV,能够如实保留数据的采集方式。
结果更简单也更安全:主空间图层仍与常规GIS工具兼容,而重复的记录则作为干净的表格数据保留下来,需要时随时可以重新连接。