Mamy dwie klasy: jedną o geometrii liniowej i drugą o geometrii poligonowej:
Hydro_cieki_powierzchniowe (Fig. 1),
siatka - siatka kwadratowa o boku 500 m (Fig. 2).
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).
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.
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).
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):
SUM(Detail.dlugosc_potokow)
W wyniku uruchomienia utworzonego zapytania otrzymujemy siatkę, w którego atrybutach odnajdziemy Suma_dlugosci_potokow (Fig. 7).