PostGIS 토폴로지로 각 요소와 레이어 결합


24

현재 PostGIS 토폴로지 확장을 사용하고 있지만 구조 작동 방식을 이해하는 데 어려움이 있습니다.

핵심 요점 중 하나는 "계층"을 사용하는 것입니다. 필자가 이해 한대로 기능 속성은 토폴로지 스키마 (이름이 지정된 스키마)에서 테이블에 저장하고에 해당 토폴로지의 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스키마에는 각 토폴로지의 각 레이어 테이블에 대한 참조가 저장되어 있다고 생각 합니다.

정보를 합칠 수있는 짧고 / 간단하며 / 적절한 방법이 있습니까? 토폴로지 확장 기능 에서 무언가를 찾고 있었지만 유용한 것을 찾을 수 없었습니다.


3
토폴로지를 어떻게 활용해야하는지 조금 잃어 버렸지 만 도움이 될 수 있습니다. TopoGeometry형상에 직접 캐스트 할 수 있습니다 : SELECT whatever, ST_AsText(topogeom::geometry) FROM layer_tb. 문제는 나중에 가장자리가 분리되면 결과적으로 지오메트리가 변경되는 것처럼 보입니다.
jpmc26

1
교차, 결합 또는 병합과 같은 도구 또는 데이터 작업이 필요합니다. QGIS는 포스트 GIS와 함께 작동하며 무료이며 이와 같은 도구가 있습니다. 피처는 레이어에 있으며 이러한 유형의 작업을 기반으로 레이어를 병합 할 때 결합됩니다.
lewis

답변:


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)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.