QGIS를 사용하여 shapefile 필드에서 고유 한 값 목록을 가져 오십니까?


18

쿼리 대화 상자에서 where 절을 지정하여 필터링 할 수있는 기능을 가진 shapefile이 있습니다. Fx 나는 'city_name'이라는 이름의 필드를 가지고 있으며 where 절에 'city_name = "London"'으로 런던 만 표시됩니다. 내가 지금하고 싶은 것은 속성 테이블에서 'city_name'의 모든 값을 가져 오는 것입니다.

그런 것 :

select distinct city_name from [attribute table]

QGIS에서 SQL을 다루는 여러 도구를 발견했으며 다른 플러그인을 빠르게 살펴 보았습니다. 그러나 데이터베이스 또는 테이블 이름에 연결하는 데 실패합니다 ...이 경우 어떤 데이터베이스 또는 어떤 테이블입니까?

결국 결과 목록을 내보내고 추가 처리에 사용하려고합니다.

QGIS 1.8을 사용하고 있습니다.

답변:


32

답변 업데이트 (QGIS 버전> = 2.14)

QGIS 2.14부터는 가상 레이어를 사용하여로드 된 벡터 레이어에서 SQL 실행 문을 사용할 수 있습니다 .

  1. QGIS에 레이어가로드되면 레이어> 레이어 추가> 가상 레이어 추가 / 편집으로 이동합니다 .
  2. 가상 계층 작성 대화 상자에서 조회 필드에 SQL 문을 입력하십시오. 다음과 같은 것 :

    layer_name에서 DISTINCT city_name을 선택하십시오.

  3. 형상 세트의 경우 형상 없음

  4. Ok를 클릭하면 원하는 고유 값으로 QGIS에 테이블이로드됩니다.

참고 : city_name 열에 새 값이 추가되면이 테이블이 업데이트됩니다.

레거시 답변 (QGIS 버전 <2.14)

당신이 원하는 것을 할 수있는 몇 가지 선택이 있습니다.

  1. Spatialite 또는 Postgis 데이터베이스에서 shapefile을 가져온 다음 완전한 SQL 문을 사용하여 테이블을 조회 할 수 있습니다.
  2. "city_name"필드를 사용하여 셰이프 파일을 디졸브하려면 디졸브 도구 (벡터> 지오 프로세싱 도구> 디졸브)를 사용하십시오. 이상한 방법이지만 결과 shapefile의 dbf 파일은 필요한 목록을 제공합니다.
  3. group stats plugin (1.6)을 살펴보면 "city_name"을 분류 필드로 사용하고 계산을 누를 수 있습니다. 각 도시에 대한 통계를 계산 한 다음 결과를 복사하고 도시 목록을 추출 할 수 있습니다.

난 그냥에 나타났습니다 벡터> 분석 도구 하는이 목록의 고유 값 을 정확하게이 작업을 위해 무엇 하나 개 필요하다 도구. 너무 쉽게 ... 해결 방법이 없으며 플러그인이 필요하지 않습니다.


6

QGIS DB Manager를 사용하고 '가상 레이어'를 통해 shapefile에 액세스하십시오

그런 다음 SQL 창을 사용하여 쿼리를 작성할 수 있습니다.

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


1
이것이 정답입니다 (QGIS 2.14+).
Alexandre Neto


-1

QGIS에서 쿼리 빌더를 사용하고 쿼리 빌더의 필드에서 도시 이름 필드로 이동하십시오. 값으로 이동하여 모두 추가하십시오. 널을 삭제하십시오.

전체 이름 목록이 표시 될 때까지 city name = "london"및 city name = "paris"와 유사한 스크립트를 작성하고 스크립트를 실행하십시오. 이제 모든 도시 이름이 선택되었습니다. 선택한 모양 파일로 내보내고 postgresql 데이터베이스로 가져올 수 있습니다.

QGIS에 postgresql 백엔드를 사용하려면 geogreer, postgresql 및 postgis enabled databse가있는 postgresql 스택을 postgresql에 설치하십시오. QGIS를 서버에 연결해야합니다. 조금 놀아 보면 알아낼 것입니다.

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