Informacje o używaniu wyrażeń w definicjach stylu

Wyrażenia mogą stanowić wartości prawie wszystkich ustawień stylu. Kreator wyrażeń służy do stylizacji elementów za pomocą wyrażeń na podstawie zarówno atrybutów klas elementów, jak i atrybutów powiązanych elementów, lub na podstawie dowolnych wartości, które można obliczyć z użyciem wartości atrybutów.

Funkcje tekstowe

Kreatora wyrażeń można użyć do tworzenia obliczonych właściwości, które pozwalają na dynamiczną stylizację. Model branżowy zawiera dwie funkcje tekstowe.

TB_SQL — służy do wykonywania zapytań o atrybuty z powiązanej klasy elementów. Atrybuty mogą być używane w stylizacji. Polecenie SQL musi być zgodne z następującymi regułami:

Uwaga:

Aby przetestować polecenie SQL, wykonaj polecenie SELECT g.FID, (polecenie SQL) FROM <nazwa klasy elementów> g. Polecenie można wykonać na przykład w programie SQL Sheet.

TB_VARIABLE

Ta funkcja tekstowa służy do tworzenia obliczonej właściwości tekstowej zawierającej zdefiniowaną przez użytkownika zmienną do stylizacji tematycznej. Zmienne są zapisywane w tabeli systemowej TB_VARIABLE. Zmienne można zdefiniować dla każdego użytkownika.

Na przykład w tabeli TB_VARIABLE można określić zmienną BUILDING, której wartość reprezentuje identyfikator FID. W Menedżerze wyświetlania używa się tej zmiennej do stylizacji budynku. W celu podświetlenia pojedynczego budynku na mapie należy podać identyfikator FID budynku w tabeli TB_VARIABLE. Aby podświetlić inny budynek, nie trzeba modyfikować modelu wyświetlania — wystarczy podać nowy identyfikator FID w tabeli TB_VARIABLE.

If, Lookup oraz Range

Funkcje te służą do definiowania tematu dla jednego atrybutu wyświetlania, na przykład koloru lub grubości linii. Obsługiwanych jest wiele typów danych: ciąg, liczba rzeczywista, liczba całkowita, wyrażenie logiczne, kolor oraz data/godzina. Parametr może być stałą lub wyrażeniem, którego wynik ma postać ciągu lub wartości numerycznej.

If

If('Condition', TrueValue, FalseValue)

Parametr Condition to ciąg, który zawiera dowolne wyrażenie zwracające wartość logiczną (zasadniczo stanowi filtr). Może być pojedynczym porównaniem, np. 'liczba mieszkańców > 1000', w którym liczba mieszkańców jest właściwością elementu warstwy. Wartości TrueValue i FalseValue to wyrażenia obliczane i zwracane, gdy warunek zostanie spełniony lub nie zostanie spełniony. Oba wyrażenia muszą zwracać ten sam typ danych (ciąg lub liczbę).

W tym przykładzie pokazano, jak obrócić symbol strzałki w górę w celu wskazania wzrastającej lub spadającej liczby mieszkańców: If('pop2005 > pop2000', 0.0, 180.0)

Lookup

Lookup(Expression, DefaultValue, Key1, Value1, … KeyN, ValueN)

Za pomocą tej funkcji jest tworzona tabela przeglądowa, w której z każdym kluczem skojarzono pojedynczą wartość. Expression to wyrażenie zwracające klucz (ciąg lub liczbę). Klucz jest porównywany z pozostałym stałymi parametrami Key# w celu wybrania zwracanego stałego parametru Value#. Jeśli szukany klucz nie zostanie odnaleziony, jest zwracana wartość domyślna DefaultValue. Typy danych parametru Expression i wszystkich parametrów Key muszą być jednakowe. Ta reguła dotyczy również parametru DefaultValue i wszystkich parametrów Value#. Liczba par klucz-wartość nie jest ustalona.

W tym przykładzie pokazano, jak przypisać kolory do działek na podstawie ich typu strefy:

Lookup(zoning, 0xff888888, 'Industrial', 0xffff0000, 'Commercial', 0xff00ff00, 'Residential', 0xff0000ff)

Range

Funkcja przedziału umożliwia porównanie klucza wyrażenia z zestawem przedziałów. Klucz należy do przedziału, jeśli mieści się między wartością MIN a wartością MAX:

Range(Expression, DefaultValue, Min1, Max1, Value1, … MinN, MaxN, ValueN)

Przedziały są określane za pomocą parametrów Min# i Max#, z którymi skojarzono parametr Value#. Jeśli szukany klucz nie leży w określonych przedziałach, jest zwracana wartość domyślna DefaultValue. Jeśli przedziały się nakładają, jest wybierany pierwszy przedział zawierający klucz. Typy danych parametru Expression oraz wszystkich parametrów Min i Max muszą być jednakowe. Ta reguła dotyczy również parametru DefaultValue i wszystkich parametrów Value#. Liczba zestawów przedział-wartość nie jest ustalona.

W tym przykładzie pokazano, jak określić rozmiar symbolu w zależności od liczby mieszkańców miasta:

Range(population, 4.0, 100000, 1000000, 6.0, 1000000, 10000000, 8.0)