Projekt konceptualny
Przedmiotem projektowania jest przetworzenie podanego na wejściu zbioru punktów w celu:
znalezienia grup współliniowych z zadaną tolerancją (tolerancja na wspołliniowość i równomierność rozmieszczenia)
eksportu wyników do pliku csv
wizualizacji wyniku na mapie
2. Analiza stanu wyjściowego
Dane wejściowe stanowi plik csv z danymi: NR MIASTO ULICA X Y Z PAR1 PAR2 PAR3 PAR4 PAR5 PAR6
Plik jest tajny i nie może być udostępniany publicznie
Parametry par1 do par6 są traktowane literalnie, czyli nie są interpretowane przez algorytm
Podczas wczytywania plików csv atrybuty mogą być w różnej kolejności - pierwszy wiersz determinuje kolejność wczytywanych atrybutów
3. Analiza wymagań użytkownika
W projekcie wykorzystamy PostGIS – rozszerzenie relacyjno-obiektowej bazy danych PostgreSQL, dodające możliwość zapisywania danych geograficznych wprost do bazy danych zgodnie ze specyfikacją OpenGIS Simple Features dla profilu SQL [wikipedia]. Wykorzystanie tej bazy danych ułatwi nam obliczenia wymagane dla realizacji algorytmu znajdowania grup współliniowych (wbudowane funkcje PostGISa).
Wymagania funkcjonalne
możliwość przetwarzania plików csv z możliwością pobrania wyników w tym formacie
realizacja algorytmu
wizualizacja efektów działania algorytmu na mapie
możliwość ingerencji w grupy (łączenie istniejących grup, dzielenie istniejących grup, dodanie punktów do grup) - najlepiej w sposób graficzny
Wymagania pozafunkcjonalne
4. Określenie scenariuszy użycia
Podstawowy scenariusz użycia
Ustalenie tolerancji (na współliniowość i równomierność)
Załadowanie pliku csv
Ustalenie kolejności kolumn na podstawie pierwszej linii pliku CSV (możliwość ingerencji użytkownika w tę kolejność)
Oczekiwanie na zakończenie działania algorytmu
Analiza wyników na mapie
Wprowadzenie ręcznych poprawek do grupowania, jeśli zachodzi taka potrzeba
Pobranie wynikowego pliku CSV
5. Identyfikacja funkcji
Funkcje realizowane w bazie
Import pliku CSV
Wykorzystanie funkcji PostGIS'a w kolejnych etapach algorytmu (przynależność do obszaru, tworzenie obszaru poprzez „bufor” dookoła linii, obrót obszaru itp.)
Wypełnianie tabeli odpowiadających kolejnym etapom realizacji algorytmu
Eksport wyniku do pliku CSV
6. Analiza hierarchii funkcji projektowanej aplikacji
7. Wybór encji (obiektów) i ich atrybutów
8. Projektowanie powiązań (relacji) pomiędzy encjami
9. Projekt diagramów STD