Label 클래스와 정의 쿼리를 사용하면 어떤 것이 가장 좋습니까?


11

ArcSDE 지오 데이터베이스에 저장된 매우 큰 데이터 세트를 사용하여 ArcMap에서 작업하기위한 최고의 성능을 제공하는 것은 무엇입니까? 특정 기능에 레이블을 지정하기 위해 복잡한 SQL 쿼리를 사용하는 여러 레이블 클래스 또는 각 레이어에 대한 정의 쿼리로 설정된 동일한 복잡한 SQL 쿼리를 사용하는 동일한 레이어의 여러 사본?


2
"자신의 정의 쿼리와 간단한 필드 기반 레이블이있는 동일한 레이어의 여러 복사본"이 선호되는 것으로 생각되지만 그 직감을 느끼는 메트릭스가 없기 때문에 이것이 좋은 질문이라고 생각합니다. 백만 개의 폴리곤이있는 파일 지오 데이터베이스 피처 클래스가 당신의 용어에서 매우 큰 데이터 세트로 인정됩니까?
PolyGeo

답변:


5

레이블 클래스의 SQL 쿼리가 분할 계층의 쿼리와 동일하다고 가정하면 여러 레이블 클래스가있는 단일 계층 접근 방식이 더 빠릅니다. 왜?:

ArcMap에서 라벨을 지정하면 레이어 그리기에 대해 하나의 쿼리를 실행 한 다음 각 레이블 클래스에 대해 하나의 쿼리를 실행합니다. 따라서 4 개의 레이블 클래스가있는 도면층은 그려진 모든 피쳐에 대해 한 번 쿼리 (1 개의 쿼리) 한 다음 총 4 회의 추가 시간 (각 레이블 클래스에 대해 하나씩 또는 4 개의 추가 쿼리) = 총 쿼리 5 개

레이어를 분리하면 각 레이어에 대해 1 개의 필터링 된 쿼리 (정의 쿼리) (4 개의 쿼리)와 각 레이블 클래스에 대해 동일한 쿼리 (4 개의 추가 쿼리) = 8 개의 총 쿼리가 있습니다.

대부분의 경우 데이터 소스에 따라 다르지만 일반 쿼리 오버 헤드로 인해 5 개의 쿼리가 8 개의 쿼리보다 빠릅니다.

ArcGIS Server에서 캐시는 기능 레이블링에 사용되며 레이블 클래스가 공급 업체별 기능없이 상당히 표준적인 SQL을 사용하는 경우 레이블 클래스가 4 개인 1 레이어는 하나의 쿼리를 통해 처리 될 가능성이 높습니다.


2
그러나 정의 쿼리 시나리오에서는 레이블 클래스를 만들지 않습니다. 단일 필드 값을 기준으로 레이블이 지정됩니다. 아니면 세 번째 단락을 잘못 읽습니까?
ianbroad

레이블 클래스는 SQL where 절 (정의 쿼리와 동일)로 정의 된 기능의 서브 세트에 레이블을 지정하고 고유 한 텍스트 기호, 레이블 표현식 및 배치 규칙을 갖습니다. 클래스에서 정의 쿼리로 이동하면 단일 필드에 레이블을 지정하는 방법에 대한 설명이 명확하지 않습니다. 복잡한 SQL 쿼리가 아닌 복잡한 레이블 표현식을 참조하고 있습니까?
Craig Williams

1
아니요, 두 시나리오 모두 레이블 표현식을 사용하지 않습니다. 둘 다 단일 필드를 사용하여 레이블이 지정됩니다.
ianbroad

4
Esri의 라벨링 팀에서 일하고 있습니다. 이것이 어떻게 작동하는지 친숙합니다. 쿼리 호출 위치는 성능에 영향을 미치지 않지만 총 쿼리를 줄이려고합니다.
Craig Williams

1
나는 지금 당신의 대답을 이해한다고 생각하지만, 이해하기 쉽게 그것을 바꿀 수있는 방법이 있는지 궁금합니다. 나는 당신과 당신의 수학이 실제로 저와 다른 사람들이 처음 생각한 것처럼 잘못되지 않았 음을 깨닫기 위해 그것을 몇 번 읽어야했습니다.
jmpreiks

2

SDE 연결에서 오는 일부 NHD 데이터를 사용하여 몇 가지 매우 간단한 테스트를 실행했으며 두 방법 사이에 거의 차이가 없음을 발견했습니다.

  1. 단일 레이어의 7 개의 레이블 클래스와 7 개의 개별 심볼로지 : 36 초
  2. 7 정의 쿼리가있는 별도의 레이어, 쿼리가없는 단일 레이블 클래스 : 37 초

몇 가지주의 사항 :

  1. 간단한 레이블과 간단한 쿼리로 테스트가 매우 간단했습니다. 복잡한 쿼리는 질문의 일부이기 때문에 테스트해야합니다.
  2. 총 시간의 3 분의 1은 상징을 그리는 데 사용되었습니다.
  3. 내 타이밍은 스톱워치로 오류 마진이 상당히 큽니다.

테스트를 위해 +1 라벨 충돌이 발생 하는지 여부에 차이가 있는지 궁금합니다 . 많은 글꼴이 겹치도록 글꼴 크기를 확대 할 수 있습니다. 그런 다음 겹치는 레이블 배치 옵션을 비활성화하십시오. 지금 차이가 있습니까?
Jens

1
실제로 테스트에 많은 레이블 충돌이 있었기 때문에 쉽게 측정 할 수있는 처리 시간을 크게 확보해야했기 때문입니다.
jmpreiks

1
"레이블 클래스 없음"과 같은 것은 항상 존재하는 것과 같은 것은 없습니다.
Craig Williams

사실 크레이그, 나는 명확히하기 위해 내 대답을 편집했습니다.
jmpreiks

1

정의 쿼리는 속성 데이터 수준이 아니라 객체 수준에 있기 때문에 더 빠를 것이라고 생각합니다.

여전히 테스트해야합니다. 그러나 클래스를 레이블링하지 않고 정의 쿼리를 사용합니다.


1
예, 테스트하십시오 (가능한 경우 다시보고하십시오). 나는 또한 정의 쿼리에 의존하지만 유용성 성능상의 이유로. 레이블 표현식 대화 상자는 느리게 느리고 def 쿼리보다 더 많은 클릭 레이어가 있습니다. 그들은 또한 파이썬에서 접근하기가 더 쉽습니다.
matt wilkie 4:14에

나는 이것이 일종의 기술적 근거 나 정량적 테스트가 없다면 대답으로 자격이 없다고 생각합니다. 일부 사람들을 오도 할 수 있습니다. 원래 질문에 대한 의견으로 더 좋았을 것입니다.
jmpreiks

의견을 제시 할 수 있다면 그렇게했을 것입니다. 다운 투표 해 주셔서 감사합니다. 그냥 도와 주려고
geogeek
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.