답변:
실제로 매우 간단한 트릭이 있습니다. "A"필드를 기준으로 정렬 한 다음 "A"내의 "B"필드를 기준으로 정렬한다고 가정합니다. 속성 테이블에서 "B"필드의 헤더를 먼저 왼쪽 클릭하십시오 (오름차순 정렬을 위해 한 번 클릭하고 내림차순으로 두 번째 클릭). 그런 다음 "A"필드의 헤더를 마우스 왼쪽 단추로 클릭하십시오 (ASC의 경우 한 번, DESC의 경우 두 번째). 이 마지막 동작은 "A"필드를 정렬하는 반면 "A"필드의 정렬은 그대로 유지합니다. 3 개의 필드로 시도해 보았고 작동합니다 (지루해졌습니다). QGIS 3.6.3-Noosa를 사용하고 있습니다.
정렬 및 번호 플러그인을 사용할 수 있습니다 . 속성 테이블을 최대 3 개의 필드로 정렬 한 다음 정렬 된 피처의 순서를 포함하는 추가 필드를 만듭니다.
면책 조항 : 나는 플러그인의 저자입니다.
sort()
기능 에 직접 의존합니다. 왜 그렇게 느린 지 궁금합니다. 향후 버전에서 프로세스 속도를 높이는 몇 가지 트릭을 찾으려고 노력할 것입니다.
결과를 영구적으로 저장해도 괜찮다면 GDAL로 shapefile을 정렬 할 수 있습니다
ogr2ogr -f "ESRI Shapefile" -dialect sqlite -sql "SELECT *
FROM my_shapefile ORDER BY attr_1, attr_2, attr_3" sorted.shp my_shapefile.shp
백만 개의 다각형을 가진 shapefile로 3 분도 채 걸리지 않았습니다.
QGIS의 DB 관리자 플러그인에는 이제 QGIS 프로젝트에로드 된 shapefile에 대해 SQL 명령을 작성할 수있는 '가상 레이어'노드가 있습니다.
이제이 기능이 있으므로 여러 필드를 기준으로 정렬하는 SQL 논리가 asc (오름차순), desc (내림차순)를 사용하여 ORDER BY 문에 있으며 여러 열을 기준으로 정렬하기 위해 문자열을 함께 묶을 수 있습니다.
추가 보너스는 더 많은 SQL을 배우므로 shapefile이 아플 때 PostGIS에 가장 많이 뛰어들 것입니다.
이제 버전 3.2 이상에서는 플러그인이나 데이터베이스 별 작업없이이 작업을 수행 할 수 있습니다. 여러 열을 기준으로 정렬하려면
concat()
정렬하려는 필드와 함께 적절한 순서 (예 :)로 함수 를 추가하십시오 concat("column1", "column2")
. 출력 미리보기가 코드 아래에 표시되어야합니다.이 기능은 문제 # 1137을 통해 추가 되었으며 최신 (개발) 버전의 사용자 설명서 에서 다루었습니다 .
concat("col1", right( ('000' || tostring( "col2" )), 4))
글쎄, 지금은 2018이므로 아직 답변되지 않았다고 믿을 수 없습니다.
속성 테이블보기를 열고 열을 마우스 오른쪽 단추로 클릭 한 후 정렬 ... 을 선택하십시오 .
대화 상자 창 속성 테이블 정렬 순서 구성 이 이제 전체 표현식 편집기에서도 열립니다.
원하는 열과 함께 COALESCE 함수를 사용하십시오. 예를 들어 테이블을 3 열로 정렬합니다 (먼저 ID, VERSION, fid)
coalesce("ID","VERSION","fid" )
확인을 클릭하면 테이블이 정렬됩니다
당신은 할 수 없습니다 (적어도 지금은 아닙니다). 죄송합니다!
QGIS 설명서를 참조하여 가장 마지막 줄로 스크롤 하십시오 .
불쾌한 해결 방법은 Shapefile의 DBF를 Excel로 가져 오는 것입니다. 거기에 정렬하고 결과를 저장하십시오. 또는 정렬 기능이 뛰어난 PostGIS 또는 SpatialLite로 Shapefile을 가져옵니다. 기본적으로 고급 정렬을 위해서는 QGIS를 우회해야합니다.
@Sylvester Sneekly가 제안한대로 데이터가 PosGIS 또는 SpatialLite와 같은 RDBMS에로드되는 경우 테이블 형식 데이터를 미리 정렬하는 RDBMS에서 데이터베이스 뷰 를 생성 한 다음 미리 정렬 된 뷰를 레이어로 QGIS에로드하는 것을 고려할 수 있습니다.