Korzystanie z klas etykiet a kwerendy definicyjne - które są najlepsze?

11

Która zapewniłaby najlepszą wydajność do pracy w ArcMap z bardzo dużymi zestawami danych przechowywanymi w geobazie ArcSDE? Wiele klas etykiet przy użyciu złożonych zapytań SQL do oznaczania określonych funkcji, czy wiele kopii tej samej warstwy przy użyciu tych samych złożonych zapytań SQL ustawionych jako zapytanie definicji dla każdej warstwy?

ianbroad
źródło
2
Myślę, że „wiele kopii tej samej warstwy, każda z własną definicją zapytania i prostym etykietowaniem opartym na polach”, stanie się ulubionym, ale nie mam danych, które mogłyby potwierdzić to przeczucie, więc myślę, że to świetne pytanie. Czy klasa obiektów geobazy danych z milionem wielokątów kwalifikowałaby się jako bardzo duży zestaw danych w twoim języku?
PolyGeo

Odpowiedzi:

5

Zakładając, że zapytania SQL dotyczące klas etykiet są takie same, jak zapytania na podzielonych warstwach, podejście jednowarstwowe z wieloma klasami etykiet będzie szybsze. Czemu?:

Etykietowanie w ArcMap spowoduje wykonanie jednego zapytania dla losowania warstwy, a następnie jednego zapytania dla każdej klasy etykiet. Tak więc warstwa z 4 klasami etykiet zapyta raz (1 zapytanie) dla wszystkich narysowanych elementów, a następnie 4 dodatkowe razy łącznie (jeden dla każdej klasy etykiety lub 4 więcej zapytań) = 5 zapytań ogółem

Jeśli podzielisz warstwy, otrzymasz 1 filtrowane zapytanie (definicja) dla każdej warstwy (4 zapytania) plus to samo zapytanie dla każdej klasy etykiety (4 kolejne zapytania) = 8 zapytań ogółem

W prawie wszystkich przypadkach 5 zapytań będzie szybszych niż 8 zapytań z powodu zwykłego narzutu zapytań, chociaż zależy to od źródła danych.

Uwaga: w ArcGIS Server pamięć podręczna służy do oznaczania funkcji, a 1 warstwa z 4 klasami etykiet zostanie najprawdopodobniej obsłużona za pomocą jednego zapytania, gdy klasy etykiet będą używać dość standardowego SQL bez funkcji specyficznych dla dostawcy.

Craig Williams
źródło
2
Ale w scenariuszu zapytania definicji nie tworzyłbym klas etykiet. Zostałyby one po prostu oznaczone na podstawie wartości pojedynczego pola. A może źle czytam trzeci akapit?
ianbroad
Klasy etykiet służą do oznaczania podzbioru funkcji zdefiniowanych przez klauzulę SQL where (dokładnie tak samo jak zapytanie definicji) i mają własny symbol tekstowy, wyrażenie etykiety oraz reguły umieszczania. Z opisu nie jest dla mnie jasne, jak przejście z klas do zapytania dotyczącego definicji pozwala na oznaczenie tylko jednego pola. Masz na myśli złożone wyrażenia etykiet, a nie złożone zapytania SQL?
Craig Williams
1
Nie, chodzi mi tylko o to, że w obu scenariuszach żadne nie używa wyrażenia etykiety. Oba są oznaczone za pomocą jednego pola.
ianbroad
4
Pracuję w zespole ds. Etykietowania w Esri. Jestem dokładnie zaznajomiony z tym, jak to działa. Wywołanie lokalizacji zapytania nie wpłynie na wydajność, ale będziesz chciał zmniejszyć całkowitą liczbę zapytań.
Craig Williams
1
Wydaje mi się, że rozumiem twoją odpowiedź, Craig, ale zastanawiam się, czy istnieje jakiś sposób na przeredagowanie jej, aby ułatwić jej zrozumienie. Musiałem ją przeczytać kilka razy, aby zdać sobie sprawę, że twoja matematyka prawdopodobnie nie jest zła, tak jak ja i inni pomyśleliśmy na początku.
jmpreiks
2

Przeprowadziłem kilka bardzo prostych testów przy użyciu niektórych danych NHD pochodzących z połączenia SDE i znalazłem bardzo małą różnicę między obiema metodami.

  1. 7 klas etykiet na jednej warstwie, a także 7 oddzielnych symboli: 36 sekund
  2. 7 Oddzielne warstwy z zapytaniami definicji, każda klasa pojedynczej etykiety bez zapytania: 37 sekund

Kilka zastrzeżeń:

  1. Mój test był bardzo prosty z prostymi etykietami i prostymi zapytaniami, złożone zapytania powinny zostać przetestowane, ponieważ było to częścią pytania.
  2. Około jedna trzecia całkowitego czasu poświęcona była na narysowanie symboliki.
  3. Mój czas dotyczył stopera, więc margines błędu jest dość duży.
jmpreiks
źródło
+1 za twoje testy. Zastanawiam się, czy ma to znaczenie, czy występują konflikty etykiet, czy nie? Być może możesz powiększyć rozmiar czcionki, aby nakładać się na siebie wiele etykiet. Następnie wyłącz opcję nakładających się na siebie etykiet. Czy jest teraz jakaś różnica?
Jens
1
W rzeczywistości w moich testach było wiele konfliktów z etykietami, ponieważ musiałem wykazać się dużą ilością czasu, aby uzyskać naprawdę długi czas przetwarzania, który mogłem łatwo zmierzyć.
jmpreiks
1
Nie ma czegoś takiego jak „brak klas etykiet”, ponieważ zawsze istnieje jedna.
Craig Williams
Prawda, Craig, zredagowałem swoją odpowiedź, aby wyjaśnić.
jmpreiks
1

Myślę, że zapytanie definicji byłoby szybsze, ponieważ jest na poziomie obiektu, a nie na poziomie danych atrybutów.

Nadal będziesz musiał przetestować. Korzystałbym jednak z definicji zapytań, a nie z etykiet klas.

geogeek
źródło
1
Tak, przetestuj (i zgłoś się, jeśli możesz). Opieram się również na zapytaniach dotyczących definicji, ale ze względu na wydajność użyteczności. Okna dialogowe wyrażeń etykiet są boleśnie powolne, a kilka warstw kliknięć jest głębszych niż te, w których znajduje się zapytanie def. Łatwiej jest też dostać się do Pythona.
matt wilkie
Nie sądzę, że kwalifikuje się to jako odpowiedź bez jakiejś podstawy technicznej lub testów ilościowych. Może wprowadzać niektórych w błąd. Byłoby lepiej jako komentarz do pierwotnego pytania.
jmpreiks
Zrobiłbym to, gdybym miał możliwość komentowania. Dziękuję za głosowanie w dół. Próbuję tylko pomóc.
geogeek