임의의 항목 선택에 대한 레이블 만 표시하는 방법은 무엇입니까?


10

다른 사람들이이 문제를 해결하는 방법에 대해 궁금합니다. 레이블이 지정된 많은 지형지 물이있는지도를 만들었습니다. 고객 / 고객은 겉으로 보이는 임의의 결정 (예 : 중요한 기능으로 간주되는 사항)에 따라 X, Y 및 Z에 대한 레이블 만 표시하도록 요청합니다. 어떻게하면 좋을까요?

몇 가지 아이디어 :

  • 이 특수 레이블에 대해 새 문자열 열을 작성하고 원하는 기능의 값만 입력하십시오 (중복 정보가 발생할 수 있음)
  • 새 부울 열을 생성하고 원하는 피처를 true로 표시 한 다음 부울이 true 일 때만 레이블을 표시하려면 QGIS 1.8의 조건부 레이블을 사용하십시오.

6
두 번째 아이디어는 많은 이점이 있습니다. (i) 레이블이 필요한 항목을 명확하게 문서화합니다. (ii) 기본 데이터 세트만큼 영구적이고 이식 가능합니다. (iii) 표시 될 레이블을 결정하는 간단하고 직접적인 메커니즘을 제공합니다 ( 다른 GIS 또는 플로팅 패키지로 이식 가능), (iv) 이러한 레이블 선택과 다른 변수 사이의 관계에 대한 질문이있는 경우 분석이 가능하며 (v) 고객의 선택을 풍자적으로 인코딩하여 중복 정보를 생성하지 않습니다.
whuber

2
@ whuber 당신이 대답 할 수 있습니까? 그래서 투표를 할 수 있습니다.
Nathan W

답변:


11

두 번째 아이디어 (선택을위한 부울 속성을 작성하려는 경우) 에는 많은 장점이 있습니다 .

(i) 라벨이 필요한 것을 명확하게 문서화하고,

(ii) 기본 데이터 세트만큼 영구적이며 휴대 가능합니다.

(iii) 어떤 라벨이 나타날 것인지를 결정하는 간단하고 직접적인 메커니즘을 제공한다 (다른 GIS 또는 플로팅 패키지로 이식 가능).

(iv) 이러한 레이블 선택과 다른 변수 사이의 관계에 대한 질문이있는 경우 분석이 가능합니다.

(v) 고객의 선택을 비 유적으로 인코딩함으로써 중복 정보를 생성하지 않습니다.

현명하게 제안 된 바와 같이, 여기에는 현재 일반적인 데이터베이스 구성 및 관리 원칙이 있습니다 . 그중 하나는 가능한 한 일관성있는 정보가 데이터베이스에 고유하게 표시 되어야한다는 것 입니다. (정보는 다른 테이블에서 해당 레코드를 식별로 그 기능의 미덕에 의해 여러 위치에 표시되어야 조인 구현하는 키로서 사용 물론 관한 것이다.)이 원칙 우수한 이유는,이되어 유지하려고 한 사람으로 비정규을 관계형 데이터베이스는 다음을 증명할 수 있습니다.이 정보를 모든 사람 에게 지속적으로 업데이트, 제거 또는 추가하는 것을 기억하지 못하는 경우 표가 표시되면 데이터베이스가 곧 내부적으로 일관성이 없어집니다. 종종 손상되어 복구 할 수 없을 정도로 손상되었습니다.

또 다른 원칙은 좋은 관계형 데이터베이스 디자인에서 각 테이블은 하나의 개념적 "엔터티"를 나타내야 한다는 것입니다. 클라이언트가 임의로 임의의 기능 선택을 지정하면 테이블에서 행의 서브 세트를 효과적으로 지정합니다. 수학적 으로 분리공리로 이것은 부울 필드로 플래그를 표시하는 것과 같습니다. 따라서, 어떤 데이터베이스에 사물의 의미 "임의의"일부는 이러한 필드는 임의의 부분 집합 (또는 선택)을 저장하는 좋은 방법이다, 반대로, 부울 필드로 표현 될 수있다.

또 다른 원칙은 GIS의 기본 데이터 관리 기능을 사용하여 정보를 저장하는 것을 선호 해야한다는 것 입니다. 대안은 일부 임시입니다"프로젝트 파일"내에 또는 다른 독립적 인 방법으로 정보를 저장하는 GIS의 능력에 기반한 방법. 일반적인 예로는 원하는 레이블을 수동으로 선택하고 배치하는 방법이 있습니다. 종종 쉽고 빠르게 수행 할 수 있습니다. 문제는 변경이 필요하거나 작업을 재현해야 할 때마다 발생합니다. 이러한 상황 중 하나 또는 다른 상황은 실제로 불가피합니다. 레이블을 수동으로 배치하면 RDBMS 외부에 정보 (즉, 기능의 하위 집합에 레이블을 지정해야 함)를 매우 타원형으로 저장할 수 있습니다. 즉, 레이블이 표시되는 레이블과 표시되지 않는 레이블 만 선택하여 선택합니다. 그런 다음 이러한 후속 문제를 어떻게 해결할지 생각해보십시오.

  • 클라이언트는 동일한 레이블이 다른 프로젝트의 일부인 관련되지만 다른 맵에 표시되기를 원합니다.

  • 레이블이 다른 속성과 연관되어 있는지에 대한 의문이 발생합니다.

  • 시간이 지남에 따라 레이블을 여러 번 변경 한 후에는 원래 버전으로 되돌 리라는 메시지가 표시됩니다.

이러한 경우 문제를 해결하기 위해 관련된 작업이 엄청날 수 있습니다. 라벨링을 다시 다시 수행하거나 데이터베이스 테이블에 대해 수동 교차 점검을 수행하거나 오래된 아카이브 된 프로젝트 파일을 찾아 복원해야합니다. 대신 레이블이 데이터베이스에서 부울 필드로 표시되면 작업은 거의 사소한 것입니다.


1
방금 GIS를 시작했지만 소프트웨어 개발을 통해 데이터베이스에 대한 지식이 있습니다. 나는 원래 데이터 세트와 일대일로 결합되고 투명성을 위해 PostgreSQL보기로 제공되는 별도의 클라이언트 특정 테이블을 생성하여 원래 데이터 세트를 보존하는 것에 대한 후속 질문이 곧있을 것이라고 생각합니다.
Brian Kelly

예, 그것도 좋은 해결책입니다. 데이터베이스에 대한 지식만으로는 완벽한 답이 거의 없다는 것을 알고 있습니다. 항상 상충 관계가 있습니다. 룩업 테이블은 우아하고 일부 상황에 적합합니다. 실제로 레이블을 지정할 피처의 ID를 나열하는 새 테이블이 필요한 경우가 종종 있습니다. 레이어 속성 테이블에 조인하면 피처에 레이블이 지정되지 않은 null 인 새 (외부) 필드가 만들어집니다. 잘가요 그러나 이제 데이터베이스에서 관리 할 새 테이블이 생겼습니다. 트레이드 오프가 있습니다.
whuber

8

새로운 표현식 기반 레이블에서 규칙을 설정할 수 있습니다. 규칙은 결과 레이블을 얻기 위해 수행 한 작업에 대한 문서로 작동합니다.

"부울 플래그"접근 방식의 장점은 올바른 규칙을 작업하는 동안 더 유연하다는 것입니다. 기본 데이터 세트를 변경하지 않고 규칙을 쉽게 변경하고 개선 할 수 있습니다. 반면 다른 GIS 패키지에는 이식성이 없습니다.

다음은 이름이 6 자보다 길고 특정 클래스의 기능에만 레이블을 지정하는 예입니다.

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


1
그러나이 경우의 규칙은 "이 기능은 중요하고 다른 기능은 중요하지 않다"고 생각합니다. 나는 그 기능이 있다고 생각하지 않습니다 :-)
Brian Kelly

1
또한이 질문은 "데이터 세트를 언제 변경해야하고 언제 복사해야합니까?"와 관련이 있습니다. 나는 그것이 훨씬 더 큰 대화라고 생각합니다.
Brian Kelly

방금 그 중요한 기능에는 최소한 clazz 속성을 사용한 것처럼 사용할 수있는 ID가 있다고 가정했습니다. 두 솔루션 모두 장점이 있습니다.
underdark
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.