关键点之一是“层”的使用:据我了解,功能属性应该存储在拓扑架构(称为
topo_actualname
)之外的表中,并使用AddTopoGeometryColumn
注册为该拓扑的一层。但是,是否有一种简单的方法来连接属性(存储具有相应功能(在
node
,face
或edge_data
中的元素)的图层表中?现在,我要做的是:
SELECT whatever
FROM layer_tb l
JOIN topo_topologyname.edge_data e ON (l.topo).id=edge_id;
但是,如果我必须同时了解拓扑架构名称和层名称来获取所需信息,我想整个
layer
概念都将毫无用处。实际上,我想我知道该层上的
topo
列具有足够的信息来了解各个拓扑的位置,此外,topology
模式存储了对每个层表的引用,以用于eac h拓扑。是否有简短/简单/正确的方式将信息连接在一起?我一直在寻找拓扑扩展功能中的某些内容,但找不到有用的内容。
#1 楼
属性到拓扑的映射不是直接的。对于节点而言,这种关系是这样的:your_topogeom -> (topogeom_id) relation table (element_id)-> (node_id) node
,所以您的select语句将更像这样:
SELECT whatever
FROM layer_tb l
INNER JOIN relation AS r ON (((l.mytopogeom).id , (l.mytopogeom).layer_id)) = (r.topogeo_id, r.layer_id )
INNER JOIN edge_data AS e ON (r.element_id = e.edge_id)
评论
我对应该如何利用拓扑也有些迷惑,但这可能会有所帮助。您可以将TopoGeometry直接转换为几何:从layer_tb中选择任何ST_AsText(topogeom :: geometry)。问题是,如果以后再将边缘分开,结果似乎几何形状可能会发生变化。您需要的是工具或数据操作,例如相交,并集或合并。 QGIS与Post GIS一起使用,并且是免费的,并且具有类似的工具。要素位于图层中,并在基于这些操作类型合并图层时将其合并。