Marcel Pinokurow

Marcel Pinokurow Student,
Politechnika Gdańska

Temat: Prosta aplikacja GIS - czego użyć?

Witam wszystkich!

Muszę napisać/stworzyć interaktywną mapę w dowolnej technologi(poza Google maps) o następującej funkcjonalności:
- interaktywna mapa jakiegoś regionu/miasta (zoom, przesuwanie itp.)
- dodawanie, usuwanie obiektów na mapie(np. mapa kościołów)
- baza danych z informacjami o obiektach umieszczonych na mapie
- wyszukiwanie danych w bazie z zaznaczaniem wyników na mapie
- wyświetlanie na mapie krótkiego opisu obiektów (położenie geograficzne, typ obiektu, adres)
- pomiar odległości (w kilometrach) pomiędzy wybranymi punktami na mapie

Od paru dni przebijam się przez tą tematykę ale jest tego tyle ze trudno się połapać. Więc zapytam bardziej obeznanych w temacie:

Jakich technologi muszę użyć? czy wystarczy(np. openlayers + zewnętrzny mapserver)
Czy muszę postawić własny mapserver, stworzyć własny plik ".map" + shapefile i to konfigurować?

Będę wdzięczny za porady jak się do tego zabrać jestem świeży w tematyce GIS

Pozdrawiam
Adrian Gamrot

Adrian Gamrot Programy i makra w
pakiecie MS Office

Temat: Prosta aplikacja GIS - czego użyć?

Miałem to na studiach w zeszłym roku.

Jakich technologi muszę użyć? czy wystarczy(np. openlayers + zewnętrzny mapserver)
Czy muszę postawić własny mapserver, stworzyć własny plik ".map" + shapefile i to konfigurować?


My robiliśmy w Mapserverze + dodawanie warstw z openlayers. Ale moim zdaniem dużo prościej jest zrobić tylko w openlayers - odpadają wszystkie problemy z mapserverem, który i tak nie ma żadnych dodatkowych opcji.

Na zajęciach korzystaliśmy ze skryptu: http://www.earthisflat.net/ki/

Jakbyś miał jeszcze jakieś pytania to daj znać:)Adrian Gamrot edytował(a) ten post dnia 06.12.10 o godzinie 10:36
Dominik Mikiewicz

Dominik Mikiewicz maps made easy,
www.cartomatic.pl ||
cartoninjas.net

Temat: Prosta aplikacja GIS - czego użyć?

Jeżeli masz własny serwer, albo dostęp do serwera i możesz na nim instalowac soft, to geoserver jest również wart uwagi.

Ale jeżeli Twoim zadaniem jest jedynie napisanie interfejsu, bez konieczności pracy z danymi, ich analizy, wizualizacji karto, to gołe openlayers da radę. Ewentualnie obadaj sobie geoext, który oferuje fajne narzędzia i interfejs od extjs. Dane referencyjne, to np warsty gmaps, bing maps, osm
Same dane o kościołach, etc. o ile nie jest ich duzo, z powodzeniem możesz trzymać w pliku, np: json, albo xml.
Marcel Pinokurow

Marcel Pinokurow Student,
Politechnika Gdańska

Temat: Prosta aplikacja GIS - czego użyć?

Generalnie sprawa wygląda tak że na ubuntu mam postawionego apacha + mapserver i odwołuje się do niego jako localhost na potrzeby prezentacji aplikacji mi to wystarczy.
Ale skoro da się tą funkcjonalność uzyskać za pomocą samego klienta mapservera to odpuszczę zabawę z mapserverem i skupię się na opelayers i geoext. Co do bazy to nie wiem czy uda mi się ją zastąpić plikiem bo mam taki z góry narzucony wymóg.
Jako że nie bardzo lubię js możecie polecić jakieś (podobne do openlayers) rozwiązania na C#, od biedy java, C++? Wiem że istnieją takie biblioteki ale na pewno są mniej popularne i nie wiem jak z ich funkcjonalnością
Dominik Mikiewicz

Dominik Mikiewicz maps made easy,
www.cartomatic.pl ||
cartoninjas.net

Temat: Prosta aplikacja GIS - czego użyć?

od biedy java - obadaj sobie binding openlayers do gwt. Chociaż funkcjonalnosć, którą musisz zaimplementować jest na tyle prosta, że wiele js tam nie napiszesz.
dla c# są jakieś kontrolki pod bingmaps.
Piotr T.

Piotr T. programista GIS,
analityk GIS,
(www.cgis.pl)

Temat: Prosta aplikacja GIS - czego użyć?

W zasadzie jakby to miało być na szybko i znasz jakieś tam podstawy Javy to:
http://www.geomajas.org/
Marcel Pinokurow

Marcel Pinokurow Student,
Politechnika Gdańska

Temat: Prosta aplikacja GIS - czego użyć?

Witam po dłuższej przerwie
zdecydowałem się na OpenLayers + zewnetrzy serwer mapowy OSM i mam pytanie odnośnie połączenie OpenLayersa z bazą mysql właśnie rozeznaje ten temat ale mam bardzo mało czasu będę wdzięczny za pomoc. Mam postawioną prosta baze z jedną tabelką -> id, nazwa, koordynaty i chciałbym wyświetlać punkty trzymane w bazie na mojej mapce są do tego gotowe funkcje w OL? interfejs do obsługi bazy mam zrobione php+js ale jak serwować te dane do OL?

Pozdrawiam
Piotr T.

Piotr T. programista GIS,
analityk GIS,
(www.cgis.pl)

Temat: Prosta aplikacja GIS - czego użyć?

Brzmi to jakby klasycznego serwera gis w tym rozwiązaniu nie było. PHP to nie moja bajka ale przykład jak możesz bezpośrednio sterować i rysować po OL z poziomu JS masz tutaj:

punkty:
http://dev.openlayers.org/docs/files/OpenLayers/Marker...

punkty, linie, poligony:
http://openlayers.org/dev/examples/vector-features.html
http://openlayers.org/dev/examples/vector-formats.html
Marcel Pinokurow

Marcel Pinokurow Student,
Politechnika Gdańska

Temat: Prosta aplikacja GIS - czego użyć?

dzięki za odzew, problem wydaje się trywialny ale z gisem miałem mało wspólnego dlatego błądzę, głównie chodzi o to żeby pamiętać dodane punkty na mapce więc muszę je trzymać po stronie serwera w DB jeden sposób który znalazłem to OpenLayers.Layer.Text gdzie OL odczytuje sobie dane ze specjalnie sformatowanego pliku txt. Trochę to nadmiarowe a wręcz durne bo wyciągam dane z DB i generuje plik txt :D puki co innego sposobu nie znalazłem
Dominik Mikiewicz

Dominik Mikiewicz maps made easy,
www.cartomatic.pl ||
cartoninjas.net

Temat: Prosta aplikacja GIS - czego użyć?

nie musisz generować txt. Równie dobrze możesz wykorzystać warstwę wektorową.
Załóżmy, że masz webservice, który wyciąga punkty z db na podstawie bbox przesłanego z open layers (map.bounds o ile dobrze pamiętam). Web service odfiltruje sobie dane dla danego bbox po współrzędnych punktów (x i y muszą się zawierać w bbox) i zwróci je jako geometrię wkt (POINT(x y)). Jak już dostaniesz dane z webservice'u wkt readerem ( new OpenLayers.Format.WKT()) przetwarzasz to na pełnoprawny wektor.
Jedyny problem, jaki możesz napotkać, to zbyt duża ilość punktów na mapie, więc może się przydać uch clustrowanie.
mając warstwę wektorową dodając do niej punkt nie musisz jej przeładowywać, byle go dodać do db.
Marcel Pinokurow

Marcel Pinokurow Student,
Politechnika Gdańska

Temat: Prosta aplikacja GIS - czego użyć?

Rozwiązanie z OpenLayers.Layer.Text nie przeszło:/ muszę zrobić to na wkt z rysowaniem danych bezpośrednio z db tylko jak dodać opisy do rysowanych punktów? może znacie jakiś example do podejrzenia?

pozdroMarcel Pinokurow edytował(a) ten post dnia 29.12.10 o godzinie 15:09
Dominik Mikiewicz

Dominik Mikiewicz maps made easy,
www.cartomatic.pl ||
cartoninjas.net

Temat: Prosta aplikacja GIS - czego użyć?

poza geometrią zwróć z db dane opisowe. Domyślnie obiekt feature w openlayers trzyma je we właściwości attributes. Tak więc przy parsowaniu wkt przerzuć do attributes również dane opisowe (chociaż to js w końcu więc możesz sobie je trzymać w dowolnej właściwości, byle powiązanej z feature). Do wyświetlenia etykiety będziesz potrzebował odpowiedniego stylu dla warstwy - szukaj właściwości label stylu. Do tego funkcja, którą woła styl dla etykiety powinna dla danego feature zwracać konkretną właściwość przechowywaną w attributes.
Trochę mało po polsku ten opis, ale sens powinieneś z niego wycignąć ;-)
Marcel Pinokurow

Marcel Pinokurow Student,
Politechnika Gdańska

Temat: Prosta aplikacja GIS - czego użyć?

Witam po raz kolejny - moich zmagań z ol ciąg dalszy

AJAX + PHP + OL i mam już kulejącą mapę która dział prawie tak jak trzeba :D

Niestety nie dałem sobie rady z rozwiązaniem proponowanym przez Dominika mam mniej eleganckie ale już "akceptowalne", wykorzystuję OpenLayers.Format.Text() ale plik php w locie generuje kod z db wygląda to tak:


var layer = new OpenLayers.Layer.Vector("GD",
{
strategies: [new OpenLayers.Strategy.BBOX()],
protocol: new OpenLayers.Protocol.HTTP({url: "layertext.php",format: new OpenLayers.Format.Text()}),
projection: new OpenLayers.Projection("EPSG:4326")
}
);


Pytanie pierwsze jak odświeżać widok tej warstwy aby po dodaniu elementu do db (asynchronicznie za pomocą kontrolek ajax + php) nowy element pojawił się na mapie bez przeładowywania strony?

Sprawa druga - w mapie korzystam z warstwy OSM i chciałbym ograniczyć widok do samego Gdańska jednakże zdefiniowanie: maxExtent i OpenLayers.Bounds(); nie przynosi efektu. W ogóle to definiuje to się dla obiektu mapa czy layer czy dla obu ?? próbowałem różnych kombinacji i nic.

Pozdrawiam

Następna dyskusja:

GIS w internecie.




Wyślij zaproszenie do