Zestawy umiejętności programowania WWW GIS [zamknięte]

12

Jakie technologie i zestawy umiejętności powinien ktoś, kto chce studiować / nabywać rozwój GIS?

Poproszę jedną umiejętność / technologię na odpowiedź.

RK
źródło
4
Mówiąc o szerokim pytaniu ... czy możesz zawęzić go do określonego stosu oprogramowania? Esri? FOSS? Po prostu chcesz zrobić mashup danych Google / punkt?
Derek Swingley,
Mój błąd. ESRI lub FOSS, czy nie można mieć obu? Mam nadzieję, że coś bardziej złożonego niż punktowe mashupy. Wystarczające umiejętności, aby zrobić coś takiego. opengeohost.com/maps/stlawrence
RK
1
Świetne pytanie. Miejmy jedną umiejętność na odpowiedź.
Adam Matan,
Dzięki. Świetny pomysł. Czy powinienem zamieścić to w pytaniu? Właśnie zdałem sobie sprawę, że pytanie może być szerokie. Czy byłoby lepiej jako wiki społeczności?
RK

Odpowiedzi:

17

Mogę opowiedzieć o moim doświadczeniu, które zaczęło się jako zwykły geograf, próbując używać produktów GIS do analizy przestrzennej.

Jak powiedziałem, jestem geografem i od początku w college'u zacząłem pracować z GIS jako użytkownik. Potem zacząłem badać, jak zautomatyzować żmudne zadania, które musiałem często wykonywać. To była pasja, a po 3 trzech latach jestem zatrudniony w międzynarodowym domu oprogramowania, który współpracuje z wieloma systemami GIS i opracowuje niestandardowe rozwiązania.

Moje kroki to:

  • Dowiedz się dobrze GIS. Nie zaczynaj nauki programowania bez posiadania podstawowego prawa. Rzuty i przekształcenia, analiza przestrzenna, różnice między modelem rastrowym i wektorowym itp.

  • Poznaj podstawy bazy danych: Wprowadzenie do systemów baz danych , Podstawy systemów baz danych . Dwie książki są nieco inne. Pierwszy z nich jest obfity w teorię, drugi ma bardziej praktyczne podejście.

  • Naucz się SQL. To właściwie druga część do pierwszej. Pomoże ci to bardzo, jeśli zaczniesz myśleć w sposób „sprytny”. Zmiany SQL od dostawcy do dostawcy. Mogę polecić Ci PostgreSQL, który jest dostawcą, który najbardziej przestrzega standardu. Jeśli chcesz nauczyć się określonych dialektów, zrób to później, kiedy naprawdę będziesz tego potrzebować.

  • Programowanie obiektowe. Wydaje się to wyzwaniem, ale zrozumienie podstaw jest dość łatwe. Wybierz łatwy język, aby to zrobić. Python jest zdecydowanie najłatwiejszy. Nauka języka Python jest doskonałym punktem wyjścia. Istnieją otwarte i darmowe książki w języku Python, takie jak Dive into Python . Po Pythonie interesujące opcje to: .NET, Java i C / C ++.

  • Programowanie studiów. Czytaj kod, pisz kod. Czytaj kod geoprzestrzenny. Napisz kod geoprzestrzenny. Poznaj klasyczne interfejsy API: GEOS, JTS, GDAL, ArcObjects (jeśli jesteś fanem ESRI - i to duży plus na rynku) itp.

    - Weź problem geoprzestrzenny i napisz kod, aby go rozwiązać. Nie mogę podkreślić, jak jest to użyteczne. Doprowadzi Cię to do szaleństwa, ale jest to bardzo dobry sposób na potwierdzenie, że nauczyłeś się programowania i upewnienie się, że Twoje umiejętności geoprzestrzenne są aktualne. W moim przypadku napisałem małą aplikację PostgreSQL do geocode wypadków drogowych.

  • Kontynuuj naukę. Standardy OGC są tutaj dobrym wyborem.

George Silva
źródło
4

Poznaj swoją bazę danych. Każdy programista GIS będzie z nich intensywnie korzystać.

W szczególności:

  • DBMS i model relacyjny . Tematy te są kluczowe dla zrozumienia podstaw przechowywania danych.
  • Co najmniej jedno rozwiązanie GIS DB . Wolę PostGIS , ale istnieją również inne rozwiązania .
  • Dobra znajomość SQL i GIS SQL : Jak efektywnie wyodrębniać, wstawiać, sortować i manipulować danymi.
  • Klasyczne kompromisy DB : Jak różne operacje wpływają na pamięć, miejsce na dysku, procesor i wykorzystanie sieci.
  • Indeksowanie Jest to wystarczająco ważne dla osobnego pocisku, ponieważ jest to najczęstsza DB Lacuna wśród początkujących.
  • Trochę wiedzy na temat klastrowania i skalowalności .
  • Podstawowa znajomość NOSQL .
Adam Matan
źródło
Nawet jeśli nie korzystasz z baz danych, nadal używasz danych - i ogólnie jest bezpieczny zakład, że SQL (lub jeden z jego kuzynów) zostanie użyty do zapytania danych.
mwalker
Zgadzam się, że wszystkie powyższe rzeczy warto wiedzieć, ale czy są one na szczycie listy pod względem rozwoju sieci?
Simon
Co z CQL? Czy to też jest konieczne?
RK
1
@simon - Niewystarczająca zdolność DB jest jednym z najczęstszych problemów wśród programistów GIS. IMHO to jedna z najważniejszych umiejętności (wraz z HTML / CSS, JavaScript i renderowaniem map). @rk - CQL?
Adam Matan,
Wspólny język zapytań? Spotkałem go raz podczas pracy z GeoServer.
RK
3

Zakładając, że znasz już stronę GIS (zasady kartograficzne itp.), Najpierw wybrałbym się na stronę http://www.w3schools.com/ - zapoznaj się z samouczkami w HTML, JavaScript, XML itp.

Następnie masz wiele różnych platform do wyboru. Jestem trochę stronniczy w stosunku do ESRI i poleciłbym zacząć od zabawy interfejsami API http://resources.arcgis.com/content/web/web-apis - Przejrzenie koncepcji / próbek daje prawdziwe pojęcie o tym, co możesz osiągnąć.
Uważam, że pobieranie próbek kodu i inżynieria wsteczna do pracy z własnymi usługami (zakładając, że masz instancję ArcGIS Server, w przeciwnym razie możesz użyć przykładowych serwerów ESRI) to dobry sposób na naukę.

Istnieje również wiele filmów, obejrzyj filmy z konferencji dla programistów. Polecam Omówienie interfejsów API ArcGIS dla JavaScript, najlepszych praktyk w zakresie projektowania skutecznych usług map, przeprojektowywania aplikacji komputerowych dla Internetu i korzystania z interfejsu API REST ArcGIS Server.

Którą platformę internetową wybierzesz? Nie mogę zignorować patrzenia na WebADF (Java / NET), ponieważ będzie on stopniowo wycofywany.

Kim są twoi klienci? z jakich przeglądarek będą korzystać? Czy mogą zainstalować wtyczki Silverlight lub Flash? Czy masz jakieś IDE do opracowania? np. Flex jest najlepszy we FlashBuilder ($$), ale możesz także użyć FlashDevelop, który jest alternatywą typu open source.

Czy czujesz się bardziej komfortowo z uznanymi technologiami lub nowymi technologiami? Zważyć ryzyko.
- .NET / Java istnieje od wieków - Silverlight i Flex są dość nowe i trwa debata, czy HTML 5 usunie te platformy

Zarówno Silverlight, jak i Flex mają większą interaktywność od razu po wyjęciu z pudełka, ponieważ JavaScript uzupełnia tę lukę, polegając na Dojo.Framework.

Duża różnica w funkcjonalności między ADF i Web API polega na tym, że API Web ArcGIS są całkowicie po stronie klienta.

Zostawię kogoś innego, aby udzielił odpowiedzi mniejszej niż ESRI, ale oczywistym wyborem jest rozpoczęcie zabawy z interfejsem API Map Google - Istnieje wiele zasobów / samouczków do nauczenia się tego.

Szymon
źródło
Łał. Dzięki za przegląd: DI bardziej skłaniam się ku FOSS, ponieważ jestem w kraju trzeciego świata, a produkty ESRI są poza zasięgiem większości ludzi tutaj.
RK,
Należy pamiętać, że sieciowe interfejsy API ArcGIS (i wiele innych) przetwarzają większość przetwarzania po stronie klienta, ale wszystkie polegają w dużej mierze na opublikowanych usługach i / lub przetwarzaniu po stronie serwera. Tak więc, jeśli chcesz zrobić znacznie więcej niż tylko gromadzenie istniejących zasobów (np. Geoprzetwarzanie), być może będziesz musiał zbadać technologie po stronie serwera lub przeprowadzić poważne badania, aby dowiedzieć się, jak to zrobić po stronie klienta.
mwalker
Odnotowany. Zbadanie otwartego stosu geograficznego już teraz.
RK
3

JavaScript, HTML DOM, CSS, HTTP

Jeśli je opanujesz, możesz robić wszystko w Internecie. Dodanie ładnych interfejsów API, takich jak SVG, może ułatwić, a twoje aplikacje internetowe będą ładniejsze, ale IMO nigdy nie będziesz w stanie ominąć czterech wymienionych powyżej.

mkadunc
źródło
JavaScript, HTML DOM, CSS, HTTP Czy jest jakieś zamówienie, którego powinienem się nauczyć? :)
RK
2
Sugerowałbym następującą kolejność: HTML, CSS, HTTP, DOM, JavaScript, dodatkowo PHP i lub Python / Ruby do skryptów po stronie serwera.
podmrok
3

Zakładając, że udało Ci się uporządkować przestrzenną bazę danych i serwer map [opisany w innych odpowiedziach tutaj] i pogłębić znajomość HTML, CSS i JavaScript, możesz zacząć majstrować przy bibliotekach klienckich, które zużywają i wyświetlają komponenty mapy w przeglądarce internetowej użytkownika.

OpenLayers wydaje się być zdecydowanie najczęściej używaną biblioteką. Ma całkiem dobrą dokumentację i przykłady, i możesz znaleźć tutoriale, na przykład tutaj . Strony BostonGIS przydadzą się tutaj również dla ciebie, nie tylko dla rzeczy OpenLayers.

W zależności od twojej wiedzy / chęci do nauki Python MapFish jest również bardzo wdzięcznym rozwiązaniem. Możesz też zagłębić się w GeoDjango , jednak sam nie mogę komentować tego rozwiązania.

Alternatywnie możesz spojrzeć na rozwiązania mapowania sieci OSGeo , przejść do Flasha lub użyć czegoś komercyjnego, takiego jak interfejsy API ESRI Web .

radek
źródło
3

Zgadzam się z Adamem, że przestrzenna baza danych i SQL powinny być punktem wyjścia.

Po tym warto spojrzeć na drugą warstwę przyszłego geostacka . Będziesz potrzebował czegoś, co będzie działało jako pomost „obsługujący” Twoje dane z przestrzennej bazy danych do klienta w przeglądarce użytkowników.

Upewnij się, że rozumiesz pojęcia WFS i WMS .

Zainstaluj i zacznij grać lokalnie na własnym serwerze. Dwoma dobrze znanymi projektami objętymi przez Open Source Geospatial FoundationGeoServer i MapServer . Warto też zajrzeć na serwer map QGIS . Serwer ArcGIS byłby tutaj [kosztowny!] Komercyjnym odpowiednikiem.

Po uporządkowaniu tej części możesz zacząć bawić się bibliotekami klientów.

radek
źródło
2

Mapnik lub dowolne inne narzędzie do renderowania map do tworzenia kafelków map.

Prawie każdy programista GIS musiałby użyć narzędzi do renderowania map lub przynajmniej zrozumieć podstawowe pojęcia dotyczące warstw i kafelków.

Adam Matan
źródło
Dzięki. Myślę, że dobrze rozumiem warstwy i płytki. Mam problem z renderowaniem.
RK
2

Poznaj swój system operacyjny serwera, serwer WWW (IIS, Apache, cokolwiek) i jak zabezpieczyć swoje rzeczy - nawet jeśli ktoś robi to wszystko za Ciebie.

Chad Cooper
źródło
2

Możesz przejść przez mój kurs (https://www.e-education.psu.edu/geog585/), który (myślę) daje dobre wprowadzenie i powinien zacząć działać.

Ian Turton
źródło
1

Nie mogę wystarczająco podkreślić drugiego od ostatniego komentarza George'a. Wybierz problem geoprzestrzenny i / lub sieciowy, który Cię interesuje, i dowiedz się o wymaganych technologiach podczas jego rozwiązywania.

Jeśli poświęcisz trochę czasu na zdobycie biegłości we wszystkich wymienionych wyżej obszarach, minie wieczność, zanim zaczniesz budować projekt, który zadraży cię.

Proponuję zacząć od zbudowania aplikacji przy użyciu OpenLayers do zbudowania aplikacji mapujących dane z niektórych istniejących usług danych. Następnie możesz przejść do tworzenia własnych źródeł danych lub usług. Jeśli będziesz trzymać się technologii FLOSS, będziesz mógł budować i używać swoich aplikacji w dowolnym miejscu bez problemów z licencją.

DavidF
źródło