QGIS를 사용하여 여러 레코드를 단일 기능에 결합 하시겠습니까?


25

QGIS에서 건물의 쉐이프 파일이 있고 각 건물에서 일하는 사람들이 포함 된 비 공간 테이블 (.csv)에 참여하고 싶은 Join / Relate를 만들려고합니다. 테이블에 여러 개의 레코드가있어 shapefile의 단일 피처에 결합 할 수 있습니다. QGIS에서 첫 번째 레코드가 shapefile 피처 (예 : 빌드)에 조인되는 경우에만 조인을 실행할 수 있지만 후속 레코드는 제거됩니다.

QGIS에서이 참여 / 관련 관계를 완료하는 방법을 누군가에게 알려주시겠습니까?


여기 gis.stackexchange.com/questions/5797/…에 비슷한 질문이 있습니다 . RT SQL Layer 플러그인과 eVis 플러그인이 제안되었습니다. eVis 플러그인을 사용했지만 이상적인 솔루션은 아닙니다.
안도

2
나는 같은 문제를 겪고 있으며 실제로 테이블을 조인합니다. 비결은 여러 값을 가진 테이블을 단일 값을 가진 테이블에 조인하는 것입니다 (여기서는 다른 방법보다는 사람에서 건물로). 내가 경험하는 한 문제는 이것을 수행하면 결과를 검색하고 지리 참조 파일로 내보낼 수 없다는 것입니다. 이 문제를 우회 할 수있는 방법이 있습니까? marc

달성하고자하는 최종 결과는 무엇입니까? 조인을하더라도지도에 제시 하시겠습니까? 통계를합니까? 이에 따라 다른 워크 플로를 따를 수도 있지만, 조인을하려면 데이터베이스를 사용하는 것이 좋습니다.
johanvdw

답변:


15

QGIS 1.7.0을 사용하여 벡터 레이어를 먼저 알려진 텍스트로 변환 된 지오메트리 필드와 함께 쉼표로 구분 된 값 (CSV) 테이블로 저장하여이 문제를 해결했습니다. 이렇게하려면 "벡터 레이어를 다른 이름으로 저장 ..."대화 상자의 레이어 필드에서 GEOMETRY = AS_WKT를 읽어 WKT라는 열이있는 형상의 잘 알려진 텍스트 필드를 만들어야합니다.

그런 다음 CSV 지오메트리 파일은 비 지오메트리 속성 테이블의 특성 조인 탭 아래 일대 다 조인에서 비 지오메트리 속성 테이블에 조인되었습니다.

결과 결합은 다른 형상 CSV 파일로 저장되었습니다.

이 테이블이 QGIS에서 열리면 각 속성 레코드는 적절한 벡터 지오메트리로 표현되었습니다.

이 모든 작업을 수행하면서 구분 기호가 쉼표이고 WKT 지오메트리 필드의 이름이 WKT 인 경우 구분 텍스트 플러그인이 CSV 지오메트리 파일을 여는 데 필요하지 않음을 발견했습니다.

이 작업을 수행하는 방법에 대한 자세한 내용은 http://georgiawildlife.com/node/2849의 자습서를 참조하십시오 .


좋은 접근 방식 ogr2ogr은 Shapefile에서 CSV 파일을 만드는 데 사용하는 것과 비슷한 작업을 수행 했습니다. 그런 다음 간단한 R 스크립트를 사용하여 원하는 공통 필드의 파일을 병합하고 CSV에 다시 씁니다. 그런 다음 ogr2ogr다시 병합 된 shapefile을 작성하십시오.
vpipkt

1
이것은 가장 높은 등급으로 평가 될 수 있지만, 이에 대한 프로세스는 아래 @underdark에 의해 답변됩니다. 이것은 해킹이며 최선의 선택은 아니지만 느리고 비효율적이며 더 큰 파일과 더 많은 단계를 초래합니다.
nittyjee

10

레이어 속성에서 만든 조인은 기존 기능에 열만 추가합니다. 벡터 레이어에 160 개의 피처 만있는 경우 조인으로 피처 수를 늘릴 수 없습니다!

대신 가상 계층 기능을 사용하십시오. 실제 SQL / 데이터베이스와 같은 조인을 제공합니다. 예를 들어 최근 게시물 : 가상 레이어를 사용하는 OD 플로우 맵의 작은 배수를 참조하십시오.

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


7

QGIS 1.7에는 조인을위한 새로운 엔진이 있습니다 (벡터 속성에서 찾을 수 있습니다).

지오메트리가없는 테이블을 다른 벡터 레이어처럼 프로젝트에 추가 할 수 있습니다.


7

버전 2.2부터 QGIS는 일대 다 관계를 지원합니다. 벡터 레이어 속성이 아니라 프로젝트 속성에서 정의하십시오. 그런 다음 관련 레코드가 레이어의 속성 테이블 또는 양식을 통해 결과 식별에 나타납니다.

답변을 보시고 여기 에 좋은 가이드로 연결 하십시오 .


4

LibreOffice Base에서 가입하십시오.

일대 다 관계를 관리하려고한다는 사실을 극복 할 수 없습니다.

비 공간에서 비 공간에 이르기까지 배우려는 노력의 가치가 있습니다. 가장 큰 트릭은 결합 속성 필드의 용어가 정확히 동일한 지 확인하는 것입니다.

QGIS에서 공간 위치 데이터를 레이어로 연 다음 QGIS의 속성 테이블에서 모든 레코드를 선택하고 (선택 지우기, 반전 선택) LibreOffice Calc의 새 시트에 복사합니다. 첫 번째 필드는 WKT이며 GIS에서 보편적으로 사용할 수있는 기능에 대한 설명입니다. Calc는 붙여 넣은 테이블을 가져오고 WKT 필드를 비트로 씹을 때 쉼표가 선택되지 않도록 탭으로 구분 된 대화 상자를 표시합니다. 그런 다음 Calc에서이 테이블을 강조 표시하고 Base로 전환 한 다음 왼쪽에서 Tables 아이콘을 강조 표시하여 붙여 넣습니다. Base는 대화 상자를 통해 테이블을 가져옵니다. WKT 필드는 결합을 통해 유지 될 수 있으며 파일을 .csv로 QGIS로 다시 가져올 때 피쳐를 재배치하는 데 사용됩니다. 투영을 기억하십시오.

이러한 방식으로 조인을 완전히 제어하고 "역방향"으로 수행 할 수 있습니다. Base에서 조인을 수행하려면 고유 한 데이터 필드 (1)가 기본 키인지 확인한 다음 1 대 다수 또는 1 대 n 개념에 익숙한 경우 "다수"를 가리 킵니다. 조인은 관계 | TOOLS |를 작성하여 설정됩니다. 앞에서 언급했듯이 조인 필드에 동일한 정보가 있지만 다른 텍스트 또는 구문을 사용하여 나타내는 경우 사용자를 쫓아 내고 싶을 것입니다.

hth


2

QGIS에서 1 대 많은 관계가있는 테이블을 연결할 수 있다고 생각하지 않습니다. 대안으로, 당신은 gvSIG를 시도 할 수 있습니다. 여기에서 1 대 많은 링크를 만들 수 있습니다. 링크를 만든 후 맵에서 기능을 선택하면 연결된 테이블의 모든 관련 레코드가 강조 표시됩니다.


1
가상 계층이 도입되었으므로이 답변은 더 이상 맞지 않습니다.
underdark
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.