네트워크에서 회선을 연결하는 방법은 무엇입니까?


15

선과 다각형의 shapefile이 있습니다. 둘 이상의 선이 다각형과 교차 할 때는 연결 (스냅)해야하지만, 수동 디지털화 중에는 발생하지 않습니다. 이 모든 오류를 찾아서 수정해야합니다. v.cleanGRASS GIS에서 사용 했으며 자동으로 많은 정점을 스냅했지만 좋았습니다. 그러나 연결이 끊긴 선 중 일부는 허용 한도에서 벗어 났으며 허용 오차를 너무 높이면 다른 유형의 오류가 발생하기 시작합니다.

여기에 이미지 설명을 입력하십시오

어떤 아이디어?


1
폴리 라인 끝점을 다각형에 공간적으로 결합하고 개수를 다각형으로 요약합니다. 둘 이상의 결합 된 끝점을 포함하는 각 다각형에 대해 해당 끝점의 중심에서 끝점 자체 ( "별")로 방사되는 세그먼트로 구성된 폴리 라인을 만듭니다. 별을 원래 폴리 라인과 병합합니다. 발생하는 자체 교차를 제거하려면 결과를 청소하십시오. 이러한 각 단계는 모든 기능을 갖춘 GIS에서 지원하고 자동화 할 수 있습니다. QGIS 또는 GRASS의 세부 사항에 익숙하지 않기 때문에이 솔루션을 설명으로 만 제공합니다.
whuber

그러나 때로는 모든 선이 다각형 바깥에서 끝납니다.
vascobnunes

1
이 선들은 무엇을 상징합니까? 그들이 강이라면 이름이나 스트림 순서와 같은 추가 정보로 인코딩됩니까? 2 개의 1 차 스트림이 2 차 스트림으로 흘러야한다고 네트워크가 지시 (하천 네트워크와 같은)됩니까? 검색 허용 오차가 증가하여 닷지 스냅의 문제를 극복하기 위해 스냅 프로세스 뒤에 지능을 부여하고 싶을 것이라고 생각합니다.
Hornbydd

1
귀하의 의견은 질문과 모순되는 것 같습니다. 이 질문 공통 다각형에 속하는 정점을 스냅하려는 것으로 보입니다 . 정점이 다각형 외부에 빠지면 처리 방법에 대한 기준을 제공하지 않습니다! 그렇다면 다각형과 폴리 라인의 관계는 정확히 무엇입니까?
whuber

1
나는 whuber에 동의합니다. 아마도 당신은 질문을 분명히해야합니다. 다각형에 있고 '닫기'이지만 '에'있지만 올바르게 결합 된 선은 제외하는 선을 원하십니까?
대런 코프

답변:


7

문제에 대한 나의 이해는 다음과 같습니다.

폴리선 끝 점이 다각형과 교차하는 경우 폴리선은 (정점을 추가하거나 조정하여) 동일한 다각형과 교차하는 모든 추가 폴리선 끝점에 연결해야합니다.

일부 폴리선 끝점은 언더 슈트되는 다각형과 교차하지 않지만 위와 같이 연결해야합니다.

이 답변은 이미 제공된 일부를 기반으로하지만 모든 QGIS 명령을 알지 못하여 완료되지는 않습니다. 아마도 다른 사람이 추가 할 수 있습니까?

  1. 각 폴리 라인에 대해 끝점 좌표 ( 벡터> 형상 도구> 노드 추출 후 정리)를 추출 하고 다각형 내에 있는지 여부를 계산합니다 ( 벡터> 리서치 도구> 위치 별 선택 ).

  2. 다각형 내에있는 폴리 라인의 엔드 포인트, 다각형의 중심에 폴리 라인의 끝을 연장을 위해 (사용 다각형의 중심을 추출 > 다각형 중심 벡터> 형상 도구를 사용하면 작업 할 수있을지라도, 확실하지 라인 수정에 대한, Points to Paths 플러그인을 사용하여 수정 된 폴리 라인을 재구성하기 전에 폴리 라인 정점을 점으로 지정하고 적절한 번호가 지정된 추가 점을 추가합니다.

    일부 또는 모든 선이 올바르게 연결된 상황이있을 수 있으며 이러한 상황 (일치하는 폴리선 끝점으로 식별 가능)에서는 다각형 중심 대신 일치하는 끝점 위치를 확장 점으로 사용하도록 선택할 수 있습니다 해당 다각형에 대한 추가 연결되지 않은 폴리 라인

  3. 폴리 라인 끝 점이 폴리곤 외부에있는 경우 폴리 라인의 끝을 가장 가까운 폴리곤의 중심으로 확장합니다. GRASS v.distance 모듈이 트릭을 수행하려고하지만 가장 가까운 다각형을 계산하는 것에 대해서는 확신이 없습니다.


이것이 문제 해결책에 대한 좋은 근거입니다. 나는 또한 alexgleith의 대답으로 그런 것을 얻었습니다. 그러나 나는 "가장 가까운 폴리곤의 중심까지 폴리 라인의 끝을 확장"하는 작업에 갇혀있었습니다. 문제는 이제 어떻게해야합니까? v.clean.snap을 다각형의 중심에 사용하면 여전히 끝 점이 아닌 정점이 이동합니다.
vascobnunes

한 가지 방법은 설명한대로 폴리 라인을 점으로 변환하고 필요한 경우 기존 시작 또는 끝점의 위치에 따라 지정된 선의 시작 또는 끝에 추가 점을 추가하는 것입니다. 추가 된 점의 위치는 다각형의 중심이되며 점은 폴리 라인의 시작 또는 끝에 배치하기 위해 -1 또는 1000000의 정점 시퀀스 번호로 표시됩니다. 그러면 Points to Path 도구를 사용하여 폴리 라인을 재구성 할 수 있습니다.
Andy Harfoot

2

나는 몇 가지 사용자 정의 알고리즘으로 그것을 할 수 있다고 생각합니다 ... 어떻게 구현하고 있는지 확인하지만 작동 할 것이라고 생각합니다.

각 선에 대해 각 끝점에 대해 끝점의 정점에 대해 다각형 점을 만들고 다각형에 연결합니다.

그런 다음 각 다각형에 대해 둘 이상의 선의 끝 점이 연결되어 있으면 평균 좌표 또는 다각형의 중심에 모두 병합 (이동)합니다.

꽤 간단합니다. 그러나 표준 연산자에서는 사용할 수 없습니다. ArcGIS에서 며칠의 코딩 시간으로 수행 할 수 있다고 생각합니다.

다른 메모, 게시 한 이미지에서 선 중 하나가 다각형 외부에 있습니다 ... 각 끝 정점에 가장 가까운 정점을 찾아서 근접성을 상호 확인함으로써 더 간단한 방법으로이를 처리 할 수 ​​있습니다. 꼭 필요한 방식으로 꼭짓점을 갖도록하려면 정점의 평균 위치로 정점을 이동할 수 있습니다.


1

재미있는 문제! 자동 스냅을 수행하는 방법을 생각할 수는 없지만 수동 수정을 위해 살펴볼 영역을 식별하는 단계는 다음과 같습니다.

  • 선 레이어에 새 열을 추가하고 모든 기능에 대해 '1'로 설정하십시오.
  • 벡터> 위치 별 속성 결합에서 대상 레이어를 다각형 레이어로 설정하고 선 레이어를 결합 레이어로 설정합니다. 그런 다음 "교차 기능 요약 작성"을 선택하고 "Sum"을 클릭하십시오. 출력 파일의 위치와 "확인"을 제공하십시오.
  • 결과 폴리곤 파일은 원래 폴리곤 레이어이지만 추가 필드가 있습니다. SUM 필드는 원하는 것입니다. 2 일 때는 확대하고 수동으로 피쳐를 스냅 할 수 있음을 의미합니다.

상황 (기능 수,이 상황에있는 수와 그렇지 않은 수 등)에 따라 시간을 절약 할 수 있습니다.

편집 : 합계 2의 폴리곤을 사용하여 선 레이어의 하위 세트를 만든 다음 다른 기능을 변경하지 않도록 더 큰 공차를 가진 폴리곤에서 클린업을 실행할 수 있습니다.


나는 이미 그런 일을했다. v.net을 사용하여 선의 노드를 검색하고 노드와 일치하는 다각형을 공간적으로 선택했습니다. 나는 이것을 사용하여 수정할 수있는 많은 오류를 발견했지만 여전히 3 가지 큰 문제가 있습니다. 1) 수동으로 수정하는 수천 가지 오류가 있습니다. 2) 경우에 따라 선이나 노드가 다각형을 '터치'하지 않는 모든 오류가 발생하지 않습니다. 3) 오류가 아닌 오류가 발생합니다. 두 줄이 올바르게 연결되면 선택됩니다.
vascobnunes

0

끝 점이 있으면 다각형 중심을 시설로 사용하고 근처 선의 끝점을 대상으로 사용하는 스파이더 다이어그램을 작성합니다. 스파이더 다이어그램 분석을 수행하면 결과적으로 각 폴리 라인에 대한 세그먼트가 생깁니다.

이것은 다각형 외부에서 끝나는 사람들에게도 효과가 있습니다. QGIS에서 어떻게해야할지 모르겠습니다. 죄송하지만 ESRI 제품에서는 잘 알고 있습니다. 그것이 whuber가 첫 번째 답변에서 "별"을 만들 것을 제안했을 때 내가 이해 한 것입니다.

QGIS에서 그러한 분석을 수행하는 방법을 알고있는 사람들이 여기 있다고 확신합니다.


4
GIS Stack Exchange에 오신 것을 환영합니다! 귀하의 답변이 일부 다운 보트를 유치한 것으로 나타났습니다. 이는 asker가 사용하는 기술 (GRASS / QGIS)의 대안을 제안했기 때문입니다. 저의 추천은 답변이 아닌 의견과 같은 제안을 표시하는 것이며, 질문이 관심이있는 경우 정보를 답변으로 전달하십시오.
PolyGeo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.