2014-06-10 3 views
0

Neo4j Spatial을 사용하여 네트워크에서 거리 계산을하려고합니다. 목표는 특정 거리 내의 점을 정의하는 것이지 도로에있는 점만 정의하는 것입니다.그래프 네트워크에서 Neo4j Spatial 기반 SHA 파일

Java에서 ShapefileImporter를 사용하여 도로 네트워크 데이터로 SHP를로드했습니다. 이제 지오메트리 속성이있는 노드가 많이 표시되지만 관계가 표시되지 않습니다.

실제 그래프가 있도록 연결선 사이에 관계를 어떻게 추가합니까?

ShapeFileImporter가 각 줄의 시작점과 끝점을 노드로 사용하고 둘 사이에 관계를 추가 할 것으로 예상했습니다.

현재, Spatial 0.13 플러그인이있는 Neo4j 커뮤니티 2.1.1을 사용하고 있습니다.

답변

0

Neo4j Spatial과 함께 제공되는 각 수입 업체는 그래프에서 데이터를 구조화하는 방법을 결정합니다. 이 결정은 GeometryEncoder 구현의 선택에 의해 결정됩니다. GeometryEncoder는 그래프에서 Geometry를 구조화하는 방법을 결정합니다. Shapefile과 같이 모든 지오메트리가 분리 된 데이터 소스의 가장 일반적인 선택은 단일 지오메트리의 단일 속성에 WKT 또는 WKB로 각 지오메트리를 저장하는 것입니다.

그래야 지오메트리를 그래프 구조로 분리하려면 엔코더를 작성해야합니다. 또는 이미 OSMGeometryEncoder처럼 이미 사용하고있는 것을 다시 사용하거나 수정/확장하십시오.

그러나 내가 생각하는 첫 번째 질문은 왜 지오메트리를 하위 그래프로보고 싶습니까? 예를 들어, 라우팅을 수행하는 경우에는 충분하지 않습니다. 또한 모든 LineString 세그먼트를 연결하여 완전한 네트워크를 만들어야합니다. 이 경우 이미 연결된 그래프로 Neo4j에 이미로드 된 OpenStreetMap과 같이 이미 연결된 데이터 세트를 사용하는 것이 훨씬 쉽습니다. 특별히 모양 파일을 사용해야하는 경우

, 프로세스는 다음과 같습니다

  • 이 (OSMGeometryEncoder에 아마도 모델)의 서브 그래프에 유도 선을 변환하는 GeometryEncoder
  • 가 확장 쓰기 나에 Shape 파일 가져 오기를 수정 가져 오기 중에이 새로운 지오메트리 엔코더 대신이 코드를 사용하십시오.
  • 선형 문자열 간 가능한 연결을 찾아서 코드를 작성하십시오 (일반적인 끝 노드를 병합하거나 특별한 끝점 노드를 병합하거나 특수 관계를 만들어서 사용)
  • 은 (등, restrictings을 설정)
  • 는 라우팅 알고리즘에게 입력을위한
+0

감사 쓰기는 라우팅을 위해 필요 당신이 생각하는 여분의 메타 데이터를 추가합니다. 내 데이터가 들어오는 유일한 승인 된 형식이기 때문에 Shapefile을 사용하고 있습니다. 이미 ShapefileImporter 소스 코드를 살펴 보았지만 OSMGeometryEncoder에서는 아직 도움이되지 않았습니다. – gorik

0

나는 형상 파일에서 각 기능을 가져 와서 각 노드를 노드로 가져오고 공간 인덱스를 통해 속성에 대한 공간적 (내부, 중첩, 교차 등) 쿼리를 허용하는 것처럼 보입니다. 라인 세그먼트의 계층을 노드와 관계로 변환하지 않습니다.

road linesments -> 그래프를 번역하려는 경우 도로가 관계가되고 도로 교차로가 노드가된다는 것을 기억하십시오.

관련 문제