Chciałem tylko zapytać guru GIS o otwartym kodzie źródłowym w sprawie zalecanego stosu do wykorzystania w moim przewidywanym projekcie, ponieważ nie do końca rozumiem granice możliwości większości pakietów. Wiem, że mogę robić, co chcę, używając różnych pakietów ESRI, ale chcę, aby świat był tańszy i otwarty. Jestem przekonany, że mogę podjąć każde wyzwanie i nauczyć się elementów wystarczająco dobrze, aby zrealizować projekt, po prostu chcę przede wszystkim uniknąć zejścia złą ścieżką.
Moja wizja witryny: jeśli chodzi o interfejs użytkownika, witryna wyglądająca poza GIS! Coś więcej w stylu whereis.com, gdzie wszystko (lub prawie wszystko) odbywa się na polach unoszących się nad mapą podstawową. Specyfika nie jest teraz ważna, tylko podkreślając brak warstw GIS z polami wyboru w osobnym okienku itp. Pod względem interakcji z użytkownikiem zarejestrowani użytkownicy mogą tworzyć funkcje (takie jak fontanny do picia, ścieżki spacerowe itp.) Na podstawie bazy mapować i edytować własne obiekty. Jeśli to możliwe, edytuj TYLKO ich własne funkcje, które utworzyli. Naprawdę mapa współpracy.
Nadal jestem głównie w trybie badawczym, gram z różnymi pakietami, ale tylko w celu ogólnej znajomości i nie prawdziwych testów (które wymagałyby najpierw ich szczegółowego zapoznania się!). PostGIS zdecydowanie wydaje się właściwą drogą, aby przejść jako bazowe bazy danych, a Geoserver / Mapserver to najprawdopodobniej oprogramowanie pośrednie. Openlayers prawie na pewno będzie śliską mapą, ponieważ już się z nią czuję i znam jej moc.
To prowadzi mnie do dwóch głównych kwestii wymagających dużej ilości porad:
1) Jaki jest najlepszy interfejs górnej warstwy dla takiej witryny?
Czy jest to niestandardowa instancja Django (lub nawet Django-CMS), czy po prostu złożona instancja GeoExt lub innej biblioteki (nie jestem pewien, czy można za jej pomocą zalogować się / zarejestrować / pełny interfejs użytkownika), czy inny CMS / framework ( nie, nie drupal czy coś ograniczającego!), czy coś zupełnie innego?
2) Czy zarejestrowani użytkownicy strony mogą nawet edytować własne funkcje?
Chcę uniknąć masowych miejsc „graffiti”, takich jak OSM i innych wspólnych projektów. Z moich wcześniejszych lektur i porad wynika, że Geoserver nie może mieć uwierzytelnienia użytkownika na poziomie funkcji.
Czy Mapserver?
Nie wiem nawet, czy populacja użytkowników witryny (z CMS lub frameworka) może nawet bezpośrednio linkować do geoserver / mapserver.
Jeśli taka koncepcja nie jest możliwa w przypadku rozwiązań typu open source, czy istnieje inny sposób na osiągnięcie tego celu?
Czy uwierzytelnieni użytkownicy edytują nieopublikowaną wersję głównej warstwy funkcji (aby nie zepsuć oryginału) i automatycznie łączą ją z opublikowaną wersją co 24 godziny, zachowując codzienną kopię zapasową oryginału?
Trochę zagubionych, jak osiągnąć ten cel.
I tak, też spojrzałem na GeoNode, ale chcę tylko jedną ogólną mapę (uprość to), a jej interfejs nie jest wystarczająco interaktywny (przed przejściem do GeoExplorer) lub zbyt podobny do GIS w GeoExplorer. Wydaje się, że rozwiązanie tego projektu jest zbyt konserwowane.
Przepraszam, że jestem tak otwarty, skończyłem tutaj i niejasno, ale mam nadzieję, że uda mi się rozpocząć ścieżkę, w której powyższe jest możliwe, i nie wpaść w ścianę za kilka miesięcy, po prostu muszę zacząć wszystko od nowa, ponieważ ścieżka # 1 nigdy nie miał takiej funkcjonalności od samego początku!
Jednym z najlepszych przykładów, jaki mogę znaleźć, jest http://www.gpsies.com. Wiem, że używa ona ulotki, ale nie jestem pewien, jakie są podstawy i baza danych. Użytkownicy mogą tworzyć / przesyłać własne funkcje, ale nie mogą edytować innych.
Odpowiedzi:
Ponieważ teraz buduję coś podobnego, powiem ci, jak to robię, i możesz zmienić cokolwiek zechcesz na inny kawałek.
Django (z GeoDjango ) jest całkiem dobry jako podstawowa platforma dla Pythona (ponownie, jeśli to twoja sprawa, możesz to zrobić w innym języku).
Moje podejście do edycji na poziomie użytkownika jest podobne do tego, co opisał CaptDragon. Korzystam ze struktury uwierzytelniania django . W tym projekcie moje interfejsy API są tworzone przy użyciu Tasty Pie Django, który ma już platformę, która pozwala na tworzenie odpowiednich interfejsów API RESTful z uwierzytelnianiem branym pod uwagę dość łatwo.
Mój Mapserver (lub Geoserver lub cokolwiek zechcesz użyć) nigdy nie jest narażony bezpośrednio na świat zewnętrzny (tylko serwer lokalny ma do nich dostęp) ... wszystkie kafelki są podawane za pomocą serwera kafelków ( geowebcache , tilecache , tilestache cokolwiek ).
Nie muszę wspominać o Openlayers, ponieważ już to wybrałeś. Dobry wybór.
PostgreSQL / PostGIS był kolejnym, bez zastanowienia. :)
Jako biblioteka javascript nigdy nie możesz się pomylić z jQuery. Jeśli masz zamiar zezwolić na kilka edycji, możesz skorzystać z pewnej struktury obiektów javascript przy użyciu czegoś takiego jak backbone.js . Weź to z odrobiną soli. Niektórzy ludzie to uwielbiają, inni tego nienawidzą.
Jeśli nie chcesz, aby twoja strona wyglądała tak brzydko, zrób sobie przysługę i skorzystaj z frameworka css, takiego jak Bootstrap lub Compass lub alternatywnie, za 20 USD, po prostu kup jeden z nich przed lub z paska (jeśli zamierzasz go otworzyć, możesz to zrobić jeśli chcesz kupić licencję). Zahaczenie jednego z nich zajmuje około jednego dnia i ma ogromny wpływ na wygląd Twojej witryny!
Osobiście kilkakrotnie oglądałem Django-cms (i Pinax ) i nigdy nie mogę się przekonać, że warto. Jeszcze nigdy nie żałowałem tej decyzji.
Ponieważ wybierasz projekt, który będzie wymagał różnych wersji twojego schematu (im bardziej się rozwijasz, tym bardziej się on zmienia), po prostu skorzystaj z południa . Nawet się nie wahaj! Poważnie.
Tego właśnie użyłbym, ale cudowną rzeczą w Open Source jest to, że możesz zmieniać części w celu dostosowania do własnych potrzeb.
źródło
Używam stosu podobnego do Ragiego. Jestem blisko wersji alfa mojej aplikacji i wydaje mi się, że wybory były właściwe. Oto moje rozwiązanie:
Na serwerze:
U klienta:
źródło
Czy zarejestrowani użytkownicy strony mogą nawet edytować tylko własne funkcje?
Wydaje się, że jest to możliwe przy użyciu Cartaro. Opiera się na Drupal (wiem, że nie powiedziałeś nic ograniczającego jak Drupal, ale wysłuchaj mnie!) I pozwala użytkownikom edytować tylko własne funkcje, między innymi. Oto zrzut ekranu pobrany ze strony Ludzie po zalogowaniu jako administrator, który pokazuje typy uprawnień, które można ustawić dla użytkowników:
Ponadto Cartaro działa na PostGIS, GeoServer i OpenLayers, więc potencjalnie może mieć wszystko, czego szukasz.
Jaki jest najlepszy interfejs górnej warstwy dla takiej witryny?
Nie wiem, jaka jest „najlepsza” górna warstwa, ale wygląda na to, że Cartaro może zapewnić to, czego szukasz, ponieważ Drupal ma wiele opcji interfejsu użytkownika. Wygląda na to, że Cartaro jest na wczesnym etapie rozwoju (osobiście nie znam nikogo, kto z niego korzysta), ale ma potencjał.
źródło
Zajmę się pytaniem nr 2 W ten sposób radzę sobie z problemem umożliwienia użytkownikom edytowania własnych rekordów.
Tworzę własne usługi sieciowe RESTFUL lub SOAP (do wyboru), takie jak te,
UpdateUserRecord(string WKTLocation, string otherArg)
które wiążą się z mechanizmem uwierzytelniania Twojej witryny.OpenLayers i PostGIS zarówno odczytują i zapisują dobrze znany tekst (WKT), jak i GML i inne standardowe formaty, ale ja osobiście używam WKT do przesyłania informacji geometrycznych i formularzy z mojej aplikacji, przez serwis internetowy i do PostGIS DB.
Również moje metody sieciowe
UpdateUserRecord
mogą być wywoływane tylko przez uwierzytelnionego użytkownika sesji.401 Unauthorized
Zwracane jest A, jeśli ktoś spróbuje wywołać tę usługę internetową. W moim przypadku korzystam z .NET i FormsAuthentication z opcją uwierzytelnienia za pomocą OpenAuth2 (Google, Facebook, Twitter itp.). Można to również zrobić w PHP, Javie itp.Możesz więc tworzyć metody sieciowe, które wywołują bezpośrednio bazę danych PostGIS i aktualizują lub wstawiają rekordy, jak chcesz. I tak to zrobiłem.
Następnie użyłem GeoServera do obsługi zapytań WFS, WMS i łatwości wyświetlania informacji na mapie, gdzie podałbym UserID, gdyby zapytanie tego wymagało.
Mam nadzieję że to pomoże.
źródło