지도에서 "터미널"도시 찾기


13

이있는 마을 / 도시를 찾고 싶습니다 . 즉, 나는 X 킬로미터 떨어진 최대 한 마을에 연결된이 마을이 필요합니다 .

이 알고리즘이 어떻게 호출되는지 궁금합니다 (이전에 누군가 비슷한 것을 만든 것 같습니다).

이를위한 도구가 있습니까? 이 개념을 어떻게 부릅니까?

예 :

 City ------------ Village 1 ------- Village 2 ------ Village 3 - - - [ Mountain]
                    \                 \                                \
                     Village 4         |                                Road
                     |                  \                            in mountains
                     Village 5----------Village6---------Village7 - - - - -  

만큼 산 도로 이상 Xkm보다, Village 3그리고 Village 7내게로 간주 될 수 단말기 가 (각각 V2, V6) 하나 개의 마을로 연결되어 있기 때문에.

그렇지 않으면 열린 데이터로 하나를 만들고 싶습니다.


내가 시도한 것 :

내 국가 (루마니아)의 OSM 데이터를 다운로드하고 마을과 도시를 데이터베이스로 가져옵니다. 데이터베이스에서 위치 정보 기능을 사용하여 나는보다가없는 마을을 찾을 수있어 X의 의 반경 마을 R의 킬로미터.

그러나이 경우에는 위의 예와 같이 마을이 산의 반대편에있을 수 있기 때문에이 경우에는 해결책이 아니지만 좋은 방법은 없습니다 (또는 전혀 방법이 없습니다).


3
개념은 연결성이며, 그래프 이론에서 '노드'가 갖는 '에지'수로 표시됩니다. 무게 임계 값 이상으로 가장자리를 걸러 낸 후 한쪽 가장자리가있는 노드를 찾고 있습니다. 실제 솔루션은 사용중인 도구, 언어 또는 소프트웨어에 따라 다릅니다.
RoperMaps

@RoperMaps 아직 도구를 설정하지 않았지만 일반적으로 묻습니다 (그리고 누군가가 전에 이와 같은 것을 만든 경우). 나는 이것을 확장하여 점수 (노드가 가지고있는 X보다 몇 가지 짧은 길이)를 제공합니다. 점수가 클수록 더 많이 연결됩니다 (그리고 더 적은 터미널 ). 내가 그것을 빌드한다면 아마도 Node.js를 사용하여 일부 그래프를 파싱하지만 다른 누군가가 전에 그것을했는지 궁금해 할 것입니다. : D
Ionică Bizău

@RoperMaps 나는 이것을 위해 OSM을 사용할 수 있다고 생각하지만, 그것이 매우 어렵다는 것을 알게됩니다 (예 : 노드를 연결하는 방법이 있지만이 노드는 단지 도시가 아닌 점입니다). 그래프 에서 리프 를 찾 거나 내 경우에 좀 더 확장 된 알고리즘을 작성할 수는 있지만 OSM 데이터를 사용하는 방법을 잘 모르겠습니다 (또는 OSM보다 쉬운 방법이 있습니까?).
Ionică Bizău

어떤 소프트웨어를 사용하고 있습니까? 실제 거리 나 조류 비행 거리에서 일하십니까?
radouxju

@radouxju 첫 번째 작업 프로토 타입은 조류 비행 거리 (좌표를 기준으로 한 반경)였습니다. 다시 시작이긴하지만 제가 원하는 것이 아닙니다. Node.js에서 MongoDB를 사용하여 스크립트를 작성했습니다. 나는 실제 거리를 선호합니다. 예를 들어 언덕 위의 도로가없는 언덕으로 분리 된 두 마을이 있다면, 그들 사이의 거리는 가장 짧은 도로가됩니다.
Ionică Bizău

답변:


2

하나의 피처 만 끝 / 터미널 포인트를 반환하는 경우 (도로 fc에서) 지오메트리를 선택하는 각 끝 / 터미널 포인트 버퍼의 좌표를 검색하는 선 지오메트리를 단계별로 수행 해야하는 것으로 보입니다. 하나는 아니고 반복됩니다. 이것이 의미가 있기를 바랍니다 ...


글쎄, 어떻게 그렇게?
Ionică Bizău

Modelbuilder를 사용하여 파이썬으로 내보낼 수 있습니다. ArcObjects는 또 다른 경로이지만 더 복잡합니다. 이전에 Modelbuilder를 사용해 본 적이 있습니까?
user17260

"touches"옵션으로 공간을 선택하면 시작할 수 있습니다. 선택 세트를 접촉하지 않는 선택 세트로 반전하면 원래 선택 세트를 좁힐 수 있습니다.
user17260

Modelbuilder를 사용하지 않았습니다. OSM 데이터와의 첫 상호 작용이므로 단계별 답변이 필요합니다. : D 그것에 대한 자습서를 찾기조차 매우 어렵습니다.
Ionică Bizău

와우, 그것은 큰 요청입니다. ArcMap의 ArcInfo 라이센스에 액세스 할 수 있습니까?
user17260

2

Graphab 또는 Conefor 와 같은 가로 연결을 계산하기위한 소프트웨어와 QGIS 를 사용하여이를 달성 할 수 있습니다 . 예를 들면 다음과 같습니다.

  • 끌어서 놓거나 OpenStreetMap 플러그인을 사용하여 OSM 데이터를 QGIS로 가져옵니다.
  • 데이터를 모양으로 저장 (오른쪽 클릭)
  • 여기에 설명 된대로 Conefor 플러그인을 사용하여 노드 및 연결 파일을 생성 하십시오.
  • Conefor를 사용하여 각 노드 및 링크의 중요도를 계산하십시오. "엔드 노드"는 연결에 중요하지 않습니다. BC (IIC) 메트릭을 사용할 수 있다고 생각합니다. "특정 노드를 통과하는 모든 패치 쌍 사이의 최단 경로 수 (...) [및]의 길이 (링크 수)를 고려하기 때문입니다. 특정 노드가 관련된 패치 사이의 경로 " ( 여기 참조 )

나는 이것을 테스트 할 수 없었습니다-불행히도 지금 충분한 시간이 없습니다. 그러나 약간의 조정이 열려 있으면 작동 할 수 있다고 생각합니다. 예를 들어, 수동으로 (너무 많지 않은 경우) 또는 지오 프로세싱 기능과 장애물이 포함 된 모양을 사용하여 장애물의 양쪽 (산 등)에있는 두 개의 노드를 연결하는 링크를 제거해야합니다. .


감사합니다! 곧 시도합니다. [그리고] 길이 (링크 수) — 거리를 킬로미터 단위로 알려줍니다 (그렇지 않은 경우 어떻게 얻을 수 있습니까?)?
Ionică Bizău

점 사이의 거리를 확보하기 위해 QGIS 이외의 다른 소프트웨어를 사용하지 않아도됩니다. 예를 들어 여기여기 를 참조 하십시오 . 사용되는 거리 단위는 레이어 좌표계에 따라 다릅니다.
Mefimefi

또한 가로 연결에 중점을 둔 도구에 대한 자세한 정보가 필요하면 이 Researchgate 토론
Mefimefi

QGIS가 약간 버그가 있음을 발견했지만 (적어도 맥북에서는) 마지막 링크는 유용합니다. 답변도 확인합니다. 감사!
Ionică Bizău

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