Stawiamy sobie za cel obliczenie sumarycznej długości wszystkich odcinków obiektów klasy o geometrii liniowej (w tym przypadku Hydro_cieki_powierzchniowe) przypadajacych na każde oczko klasy siatka (Fig. 3).
Fig. 3. Długość liniowych odcinków klasy Hydro_cieki_powierzchniowe przypadających na przykładowe oczko klasy siatka
Aby dokonać niezbędnych obliczeń będziemy musieli podzielić obiekty klasy liniowej na fragmenty odpowiadające przestrzennym zakresom obiektów klasy siatka. W ten sposób otrzymamy pofragmentowane odcinki cieków powierzchniowych. W tak przygotowanych danych, za pomoca atrybutu funkcyjnego obliczymy długość każdego z odcinków klasy cieki_powierzchniowe. Na koniec, za pomocą narzędzia: Aggregation dokonamy zsumowania długości wszystkich odcinków liniowych występujących w każdym oczku siatki.
ROZWIĄZANIE:
W oknie dialogowym Feature Class, otwieramy kolejno klasę liniową (np: Hydro_cieki_powierzchniowe) i klasę siatki (np: siatka) i zmieniamy mazwy ich kluczy podstawowych na intuicyjne, kolejno: ID_cieki_powierzchniowe oraz ID_siatka. Krok ten nie jest konieczny ale ułatwi nam późniejsze prace.
Obliczamy iloczyn przestrzenny Spartial intersection klasy obiektów liniowych (Hydro_cieki_powierzchniowe) i klasy siatki (siatka) (zapytanie wynikowe: cieki_powierzchniowe_siatka). Nowemu zapytaniu nadajemy nazwę: Hydro_cieki_pow_1_w_siatce. Każdy z fragmentów cieków powierzchniowych otrzymuje w ten sposób dodatkowy atrybut opisujący jego położenie względem oczek siatki (ID_siatka).
Otwiieramy okno: Analysis->Functional Atributes i przy pomocy utworzonego atrybutu:
tworzymy zapytanie o długość każdego odcinka liniowego zapytania Hydro_cieki_pow_1_w_siatce (Fig. 4). Utworzonemu atrybutowi funkcyjnemu nadajemy nazwę: dlugosc_ciekow. Utworzonemu zapytaniu nadajemy nazwę: Hydro_cieki_pow_2_dlugosc_potokow.
Fig. 4. Okno dialogowe Functional Attribute z formułą obliczającą długość linii
W wyniku jego działania, w tabeli atrybutowej zapytania pojawia się kolumna zawierająca wartości długości wszystkich odcinków cieków powierzchniowych (Fig. 5).
Fig. 5. Tabela atrybutowa zapytania zawierająca obliczone wartości atrybutu dlugosc_ciekow
Za pomoca polecenia Aggregation, dla każdego okna siatki, dokonujemy obliczeń długości wszystkich linii. Aggregate to summary features in: siatka; From detail features in: Hydro_cieki_pow_2_dlugosc_potokow; Spartial Aggregation: touch; Attribute Aggregation Id_siatka/Id_siatka; Output: NEW.
Tworzymy atrybut funkcyjny obliczający dla każdego okna siatki sumaryczną długość wszystich odcinków linii (nazwa: Suma_dlugosci_potokow) (Fig. 6):
W wyniku uruchomienia utworzonego zapytania otrzymujemy siatkę, w którego atrybutach odnajdziemy Suma_dlugosci_potokow (Fig. 7).
Fig. 7. Sumaryczna długość linii obliczona dla wybranego oczka siatki