선을 자동으로 포인트에 맞추시겠습니까?


19

두 개의 벡터 shapefile이 있습니다. 하나의 파일은 맨홀을 나타내는 점이고 다른 하나는 맨홀로 이어지는 파이프를 나타내는 폴리 라인 파일입니다. 지정된 거리 내에서 가장 가까운 맨홀까지 선을 스냅해야합니다.

수동으로하지 않고 쉽게 수행 할 수 있습니까?

라인-> 포인트

최신 정보

Alexandre에 따르면, shapefile을 공간 형식으로 내보냈습니다. 다음에 무엇을 해야할지 모르겠습니다.

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

업데이트 # 2patialite-gui를 사용하여 새 db 파일을 만들고 shapefile을 새 db로 가져 왔는데 SQL 쿼리를 조정했지만 "no such column : f.geom"오류가 표시됩니다.

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


Spatialite 공간 테이블 (계층)에서 피쳐 형상은 속성에 저장됩니다. 이름이 다를 수 있습니다. "pipe"테이블에서이 속성은 Geometry라고합니다. mh도 Geometry 속성이라고 가정하여 대답을 업데이트합니다.
Alexandre Neto 2019

"이러한 기능이 없습니다 : ST_Snap"오류가 발생했습니다. Windows 7 64 비트에서 QGIS 1.8을 사용하고 있습니다.
GreyHippo

어떤 Spatialite가 있습니까? QGIS> 도움말> 정보
Alexandre Neto

"f.geom 그런 칼럼 없다" f.Geometry와 시도 -
빈 아얀

내 Spatialite 버전은 3.0.1이다
GreyHippo

답변:


26

당신이 당신의 데이터를 입력하고자하는 경우 PostGIS와 (또는 Spatialite ), 당신은 사용할 수 ST_Snap을 당신이 원하는 것을 할 수 있습니다.

선 레이어 \ 테이블을 입력으로 사용하고 점 레이어를 참조로 사용하고 공차를 설정하십시오. 이 같은:

SELECT
    f.gid as gid,
    ST_Snap(f.Geometry, g.Geometry, 2) as geom
FROM
    pipe as f,
    (SELECT ST_Collect(Geometry) as Geometry
     FROM mh) as g

결과는 다음과 같습니다.

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

그런 다음 기능 식별자를 사용하여 형상을 업데이트 할 수 있습니다.


"Select ... From ..."코드를 어디에 넣을까요? "기능 식별자 사용"은 무엇을 의미합니까?
GreyHippo

데이터베이스 (postgis 또는 공간 라이트)에서 파일을 가져온 후 DB 관리자를 사용하여 데이터베이스 테이블을보고 SQL 창에서 SQL 쿼리 (코드)를 실행 한 다음 캔버스에로드 할 수 있습니다. 그것이 당신에게 효과가 있는지 말하면 우리는 업데이트 부분을 할 것입니다.
Alexandre Neto 2013

알렉상드르, 위의 업데이트를 참조하십시오. 파일을 2 개의 공간 라이트 파일로 내보냈습니다.
GreyHippo

두 파일을 모두 동일한 Spatialite 데이터베이스에 두어야합니다. "pipe"를 "mh.sqlite"데이터베이스로 드래그하십시오. 그런 다음 SQL 코드를 업데이트하여 "points"를 "mh"로, "lines"를 "pipe"로 변경하십시오. 또한 "gid"를 "pipe"id에 적용하십시오. 그 후 결과를 실행하고로드 할 수 있습니다.
Alexandre Neto

3

QGIS 또는 GRASS에 대해 잘 모르지만 GRASS에서 빠른 Googling이 v.clean 을 생성 하여 트릭을 수행해야합니다.

한 번 봐 가지고 이 게시물이 하나 .

QGIS 및 GRASS의 대안 :

ArcGIS에서이 작업을 수행하려면 데이터를 파일 지오 데이터베이스의 피처 데이터 셋에 저장 하고 포인트 레이어가 선의 끝점에없는 영역을 식별하기 위해 토폴로지 를 생성합니다 . 그런 다음 Error Inspector를 사용하여 오류 를 수정할 수 있습니다 .

그러나 아마도 가장 빠르고 쉬운 해결책은 FME 일 것입니다. Snapper Tool 또는 AnchoredSnapper Tool을 사용해보십시오 . AnchoredSnapper를 사용하는 경우 스냅 유형이 엔드 포인트 스냅인지 확인하십시오. 물론 FME 라이센스가 필요합니다. 그러나 14 일 평가판이없는 경우 다운로드 할 수 있습니다.


v.clean을 보았지만 한 레이어 만 사용하므로 한 레이어를 다른 레이어와 비교해야합니다. 또한 QGIS / 오픈 소스 옵션을 더 찾고있었습니다.
GreyHippo

1
@GreyHippo, GRASS는 오픈 소스입니다
artwork21

1
GRASS는 오픈 소스이지만 다른 옵션은 그렇지 않습니다.
GreyHippo


-1

수동 방법

Qgis-> 설정-> 스냅 옵션 (확실하지는 않지만 CadTools 확장이 필요할 수 있음) 및 토폴로지 편집을 활성화하십시오.

자동 방법

QGIS의 SEXTANTE 툴박스에있는 GRASS 툴에있는 v.clean. PostGIS 2.0을 가지고 있다면 ST_Snap과 ST_SnapToGrid ()를 사용할 수 있습니다 (그리고 그것을 사용할 수없는 이유는 없습니다. 매우 훌륭한 공간 도구입니다)

상업적인 방법

FME 및 MRF 도구 (상업 확장, 나는 증발 버전을 가지고 있습니다. 그것은 매우 좋습니다).

또한 오픈 소스 도구를 사용하여 수도관 / 하수도 관리에 관심이 있습니다. 힌트가 있습니까?


그것이 "수동으로"GreyHippo가 의미하는 바라고 생각합니다. 스냅 옵션을 사용하면 스냅을 활성화하기 위해 모든 매달려있는 노드를 손으로 움직여야합니다. 아니면 뭔가 빠졌습니까?
Jake

아니. 나는 장님이었다.
simplexio

Simplexio, 수동으로하고 싶지 않습니다. 내가 모르는 플러그인이나 프로세스를 원했습니다.
GreyHippo

GRASS v.clean을 두 레이어에서 사용할 수 있다고 생각하지 않았습니까?
GreyHippo

1
내가 정확하게 기억하면 너무 짧은 줄을 고칠 수 있습니다. 아시다시피, 문제는 맨홀이 올바른 장소에 있지 않은 것이 아니라 하수구 네트워크가 위상 적으로 올바르지 않다는 것입니다. 그리고 그것은 파이프 레이어 만 필요합니다. 내가 본 모든 유틸리티 네트워크 시스템은 모든 하수구 교차로에 맨홀이 있다고 가정합니다. 이 오프 사이트는 올바른 토폴로지를 원한다고 가정합니다.
simplexio
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.