Moja organizacja zbiera wiele danych z monitorowania środowiska (przepływ strumienia, chemia wody itp.), Z których większość jest obecnie przechowywana w programie Excel. Chciałbym przenieść wszystko do bazy danych - prawdopodobnie PostGIS - ale potrzebuję danych, aby były dostępne dla osób bez znajomości zasad dotyczących baz danych (bez SQL lub czegoś podobnego).
Chciałbym mieć jakiś prosty interfejs dla mojej bazy danych, w którym użytkownik wybiera interesującą stację monitorowania, typ zmiennej (np. Stężenie azotanu w strumieniu) i przedział czasu. Baza danych zwróci następnie żądane dane w formacie csv, które użytkownik może pobrać na swój komputer. W idealnym świecie interfejs wyświetlałby klikalną mapę wszystkich stacji monitorujących, ale jeśli jest to łatwiejsze, dobrze byłoby zacząć od rozwijanej listy dostępnych stron. Wydaje mi się, że ten interfejs byłby prawdopodobnie stroną internetową, ale nie musi tak być.
Jak trudne jest to, proszę, i jakie są moje różne opcje? W żadnym wypadku nie jestem ekspertem w dziedzinie baz danych, ale mam solidne doświadczenie w Desktop GIS i cieszę się, że piszę proste skrypty Pythona i gram z PostGIS, SpatiaLite i osobistymi geobazami ESRI. Nigdy nie zajmowałem się tworzeniem ani tworzeniem stron internetowych GIS, ale chętnie się uczę.
Wczoraj spędziłem część na badaniu doskonałych tutoriali OpenGeo . To podejście wygląda obiecująco i przynajmniej mogę teraz zobaczyć, jak wyświetlać moje dane na stronie internetowej. Mniej oczywiste jest dla mnie to, w jaki sposób pozwalam użytkownikowi przesyłać zapytania do bazy danych i odzyskiwać wyniki.
Moje pytanie: o jakiej strukturze oprogramowania powinienem myśleć przy takim projekcie? na przykład
PostGIS + GeoServer + Something else?
Jakie inne opcje są dostępne, które powinienem zbadać?
Na początku preferowane byłoby proste, ale funkcjonalne rozwiązanie: jeśli mogę zbudować podstawowy prototyp, mogę go użyć, aby usprawiedliwić spędzanie więcej czasu na uczeniu się, jak robić rzeczy „właściwie”. Wymagane jest również oprogramowanie typu open source, ponieważ nie mam na to żadnego budżetu, dopóki nie udowodnię pewnych korzyści.
Dziękuję bardzo!
źródło
Odpowiedzi:
Jeśli już znasz się na Pythonie i SQL, zbudowanie strony internetowej przy użyciu frameworka Python nie byłoby trudne. Przychodzą mi na myśl dwa proste - cherry.py i web.py. Myślę, że nauczenie się omijania obiektowego mapowania relacyjnego obiektów Django może być więcej pracy niż jest warte.
Python ma bibliotekę o nazwie psycopg2 (http://initd.org/psycopg/ oraz samouczek: http://wiki.postgresql.org/wiki/Psycopg2_Tutorial ), który umożliwia łatwe uruchamianie zapytań przeciwko PostGRESQL / PostGIS. Ma również moduł CSV (http://docs.python.org/library/csv.html), dzięki czemu tworzenie pliku CSV z tego zapytania jest dziecinnie proste.
Jak powiedzieli inni ludzie, tworzenie mapy na froncie dodaje ryz złożoności. Będziesz potrzebować czegoś takiego jak OpenLayers do wyświetlania map oraz czegoś takiego jak MapServer lub GeoServer do tworzenia obrazów map z bazy danych (lub innych źródeł danych). To byłoby prawdopodobnie lepsze jako drugi krok.
Na razie „wszystko” wydaje się, że potrzebujesz jednej strony internetowej: formularza, który pozwala wybrać żądane parametry zapytania. Naciskają „prześlij”, parametry zapytania są wysyłane na serwer (dobrym wyborem byłby Apache), który następnie uruchamia skrypt, który odpytuje bazę danych, tworzy odpowiedni plik CSV i zwraca go do przeglądarki. Proste jak py;)
źródło
GeoDjango
Jest dość łatwy, łatwy w konfiguracji i zyskuje podstawowe funkcje. To jest Python, więc przynajmniej znasz język. Może to być przesada dla twoich potrzeb. Ale jeśli kiedykolwiek chcesz rozbudować witrynę, masz dojrzałe ramy, na których można budować.
źródło
Jeśli nie chcesz / musisz utworzyć mapę. Wszystko czego potrzebujesz to serwer WWW i język programowania (wolę Apache, ponieważ jest łatwy w użyciu i konfiguracji, ale istnieją inne opcje), a następnie Postgres z PostGIS lub inną bazą danych.
Jeśli pliki programu Excel są ładnie sformatowane, importowanie danych do bazy danych powinno być proste. Możesz napisać skrypt, który może generować instrukcje INSERT. Zapytania, które opisujesz, brzmią tak, jakby można je również zarządzać.
Jeśli / kiedy chcesz wykonać część mapowania, Apache, GeoServer i OpenLayers byłyby prostym i darmowym rozwiązaniem. GeoServer (jak wiadomo) może łatwo używać PostGIS dla WMS lub innego formatu wyjściowego. Wystarczy dodać sklep, który łączy się z PostGIS, a następnie dodać warstwy z tabel w PostGIS.
Innymi bezpłatnymi narzędziami do mapowania, które można przeglądać, byłyby Mapserver i MapGuide. MapGuide Open Source robi całkiem fajne rzeczy, ale jest bardziej skomplikowany, a jego dokumentacja jest nieco opóźniona.
MySQL ma także rozszerzenie przestrzenne, ale nie ma tylu funkcji przestrzennych i funkcji, jakie wykonuje PostGIS.
Jeśli znasz język Python, spojrzałbym na GeoDjango ... osobiście niewiele o nim wiem, ale słyszałem dobre rzeczy
źródło
Omówienie zagadnień związanych z projektowaniem i tworzeniem aplikacji do tworzenia map internetowych, a także w pełni udokumentowany kod źródłowy aplikacji do tworzenia map środowiska w oparciu o Google Maps i czasoprzestrzenną bazę danych PostgreSQL / PostGIS, w mojej stosunkowo niedawnej pracy magisterskiej z informatyki: Zaprojektowanie i opracowanie prototypu dotyczącego przestrzenno-czasowego zarządzania wektorowymi danymi środowiskowymi, analizy i dostarczania z wykorzystaniem technologii Open Source. Ogólne ramy i studia przypadków skoncentrowane na zarządzaniu wodami podziemnymi na obszarach przybrzeżnych ”
Rozprawę można pobrać ze strony http://www.giscience.it/it/pdf/DissertationMscComputerScience_CrestazEzio_Supervisors.pdf
źródło