QGIS를 사용하여 정점에서 레이어의 모든 선을 분할합니까?


11

QGIS 레이어의 모든 선을 정점에서 ( 이와 같이 ) 자동으로 분할하고 싶습니다 .

Google 검색을 수행 하고이 기사를 찾았습니다. 이 기사 는 매우 가깝지만 워크 플로우는 복잡합니다. 이 도구를 사용하려면 GIS에 익숙하지 않은 동료를 교육해야하므로 플러그인이나 GRASS가 필요하지 않은 간단한 도구를 원합니다. 이전 답변 의 시간 인 2010 년부터 오랜 시간이 지났으므로 동일한 결과를 얻는 더 좋은 방법이 있는지 궁금합니다.


현재 QGIS의 GRASS 툴을 사용할 수 있습니다. 아마도 Vector-> Geometry Tools-> Single parts to multipart가 도움이 될 것입니다. Sextante 툴박스에는 "Explode line layer"가 있어야하고 "split feature"플러그인이 있습니다.
simplexio

나는 당신이 언급 한 대답이 올바른 절차라고 생각합니다. 벡터 도구 "Single Part to Multipart"는 원하는 작업을 수행하지 않습니다. 각 정점이 아닌 노드 에서 여러 줄 문자열을 분할합니다 .
Micha

@simplexio : Sextante 도구 상자를 사용하면 Bernd V. 답변과 같은 오류 메시지가 표시되어 그물의 어느 곳에서나 '분할 기능'플러그인을 찾을 수 없습니다.
Cao Minh Tu

@Micha : 그 절차는 정확할 수도 있지만 GIS에 익숙하지 않은 동료 동료들에게는 너무 복잡 할 것입니다. 따라서 다른 모든 방법이 실패했을 때 마지막 수단으로 고려하겠습니다 :)
Cao Minh Tu

@Cao Minh Tu : 새로 작성된 라인 레이어를 사용하여 Linux Master 및 Win7 1.8에서 'Split 기능'을 다시 테스트했으며 작동합니다. 테스트 레이어를 처음부터 만들어서 적용하십시오. 어쩌면 원래 레이어에 먼저 해결해야 할 오류가있을 수 있습니다!?
Bernd V.

답변:


17

Processing Toolbox의 분해 선 은 정점의 모든 선을 별도의 선으로 분할합니다.

메뉴 처리-> 도구 상자. 검색 필드에 "explode"를 입력하여 기능을 찾으십시오. 드롭 다운에서 선 레이어를 선택하고 시작하십시오. 새 레이어가 생성됩니다.

선 레이어에서 하나 이상의 선을 선택하면 이러한 피처 만있는 분할 된 레이어가 만들어지고 나머지는 버려집니다.

참고 : QGIS가 빠르게 이동함에 따라 아래의 모든 정보는 이미 오래되었습니다.

SEXTANTE 툴박스를 통해 Explode 라인 이 멍청한 해결책 이라고 생각 합니다. . 불행히도, 그것은 현재 작동하지 않는 것 같습니다. 오류 메시지 만 나타납니다.QGIS Geoalgorithms > Vector geometry tools > Explode lines

Traceback (most recent call last):
  File "path/.qgis//python/plugins\sextante\core\GeoAlgorithm.py", line 145, in execute
    self.processAlgorithm(progress)
  File "path/.qgis//python/plugins\sextante\algs\Explode.py", line 58, in processAlgorithm
    features = QGisLayers.features(layer)
NameError: global name 'layer' is not defined

효과적인 해결책은 Split Feature"기여 된"저장소 의 -Plugin입니다.

일반적으로 별도의 플러그인보다 sextante 기능을 선호하므로 sextante의 워크 플로우가 훨씬 빠르며 중간 단계의 정크 파일을 생성하지 않습니다 (작동하는 경우).

편집 : 불행히도 많은 플러그인이 아직 공식 플러그인 저장소로 이동하지 않았지만 여전히 "기여 된"플러그인 저장소를 통해서만 사용할 수 있습니다 : http://pyqgis.org/repo/contributed . 기본 저장소에서 제거되었습니다 버전 1.8 목록.

여기에서 개별적으로 다운로드하여 .qgis / python / plugins 폴더에 압축을 풀거나 플러그인 저장소 목록에이 주소를 추가 할 수 있습니다. Plugins -> Fetch python plugins -> Tab "Repositories" -> Add ... -> enter a name and the url.


'Split Feature'플러그인을 찾을 수있는 위치를 알려줄 수 있습니까? 공식 플러그인 저장소에서 찾을 수 없습니까? SEXTANTE Explode 회선을 사용하면 다음과 같은 오류 메시지가 표시됩니다. 여기에 버그 보고서가 있습니다. hub.qgis.org/issues/7157
Cao Minh Tu

@Cao Minh Tu : 죄송합니다.이 플러그인이 독점적으로 상주하는 오래된 저장소를 내 목록에 추가 한 것을 잊었습니다. 내 편집 내용을 참조하십시오.
Bernd V.

Split Feature 플러그인을 시도했지만 오류 메시지는 없지만 출력 레이어에는 아무것도 포함되어 있지 않습니다.
Cao Minh Tu

pyqgis.org/repo/contributed 에는 404 오류 만 있습니다. URL이 변경 되었습니까?
til_b

@til_be 내 편집 내용보기
Bernd V.

4
  1. GRASS 맵셋 열기 / 만들기 (데이터에서 도구를 실행할 수 있음)
  2. GRASS 도구 열기 / GRASS 데이터베이스로 분할하려는 shapefile 가져 오기
  3. v.split.vert 실행 (최대 정점 수 설정 = 2)

이 솔루션은 세그먼트 형상에서 z 값을 유지합니다
Tamas Kosa

1
    segment_list = []
    for feature in feature_list:
        vertices = feature.geometry().asPolyline() # returns list of vertices comprising polyline
        for point in range(len(vertices)-1):
            segment = QgsFeature()
            segment.setGeometry(QgsGeometry.fromPolyline([vertices[point], vertices [point+1]]))
            segment.setAttributes(feature.attributes())
            segment_list.append(segment)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.