Web GIS Development Skill Sets [geschlossen]

12

Welche Technologien und Fähigkeiten sollte jemand erwerben, der eine Web-GIS-Entwicklung durchführen möchte?

Eine Fähigkeit / Technologie pro Antwort bitte.

RK
quelle
4
Sprechen Sie über eine allgemeine Frage ... können Sie sie auf einen bestimmten Softwarestapel eingrenzen? Esri? FOSS? Suchen Sie nur nach Google / Point-Daten-Mashups?
Derek Swingley
Mein Fehler. ESRI oder FOSS, kann man nicht beides haben? Etwas komplexeres als Punkt-Mashups, hoffe ich. Genug Fähigkeiten, um so etwas zu tun. opengeohost.com/maps/stlawrence
RK
1
Gute Frage. Lassen Sie uns eine Fähigkeit pro Antwort haben.
Adam Matan
Vielen Dank. Großartige Idee. Soll ich das auf die Frage posten? Mir ist gerade klar geworden, dass die Frage weit gefasst sein könnte. Wäre es besser als Community-Wiki?
RK
Ähnliches Problem: stackoverflow.com/questions/1054480/…
radek

Antworten:

17

Ich kann Ihnen von meinen Erfahrungen erzählen, die ich als einfacher Geograf gesammelt habe, als ich versuchte, mit GIS-Produkten räumliche Analysen durchzuführen.

Wie gesagt, ich bin Geograf und habe von Anfang an als Benutzer mit GIS gearbeitet. Danach begann ich zu erforschen, wie man mühsame Aufgaben automatisiert, die ich oft machen musste. Das kam aus Leidenschaft und nach drei Jahren bin ich bei einem multinationalen Softwarehaus beschäftigt, das mit vielen GIS-Systemen arbeitet und kundenspezifische Lösungen entwickelt.

Meine Schritte waren:

  • Lernen Sie GIS gut. Beginnen Sie das Programmieren nicht ohne Grundrecht. Projektionen und Transformationen, räumliche Analyse, Unterschiede zwischen Raster- und Vektormodell usw.

  • Erlernen der Datenbankgrundlagen: Einführung in Datenbanksysteme , Grundlagen von Datenbanksystemen . Die beiden Bücher sind etwas unterschiedlich. Die erste ist sehr theoretisch, die zweite praktischer.

  • SQL lernen. Dies ist eigentlich ein zweiter Teil zum ersten. Es wird Ihnen sehr helfen, wenn Sie anfangen, auf eine "schmale" Art und Weise zu denken. SQL ändert sich von Anbieter zu Anbieter. Ich kann Sie mit PostgreSQL empfehlen, dem Anbieter, der sich am meisten an den Standard hält. Wenn Sie bestimmte Dialekte lernen müssen, tun Sie dies später, wenn Sie sie tatsächlich benötigen.

  • Objekt orientierte Programmierung. Es scheint eine Herausforderung zu sein, aber es ist ziemlich einfach, wenn Sie die Grundlagen verstanden haben. Wählen Sie eine einfache Sprache, um dies zu tun. Python ist bei weitem das einfachste. Das Erlernen von Python ist ein hervorragender Ausgangspunkt. Es gibt quelloffene / kostenlose Python-Bücher wie Dive into Python . Interessante Optionen nach Python sind: .NET, Java und C / C ++.

  • Studienprogrammierung. Code lesen, Code schreiben. Geodatencode lesen. Schreiben Sie den Geodatencode. Studieren Sie die klassischen APIs: GEOS, JTS, GDAL, ArcObjects (wenn Sie ein ESRI-Fan sind - und das ist ein großes Plus auf dem Markt) usw.

    - Nehmen Sie ein räumliches Problem und schreiben Sie Code, um es zu lösen. Ich kann nicht betonen, wie nützlich dies ist. Das wird Sie verrückt machen, aber es ist eine sehr gute Möglichkeit, um zu bestätigen, dass Sie die Programmierseite gelernt haben, und um sicherzustellen, dass Ihre georäumlichen Fähigkeiten auf dem neuesten Stand sind. In meinem Fall habe ich eine kleine PostgreSQL-Anwendung geschrieben, um Verkehrsunfälle zu geocodieren.

  • Lern weiter. OGC-Standards sind hier eine gute Wahl.

George Silva
quelle
4

Sich in Datenbanken auskennen. Jeder GIS-Entwickler wird sie ausgiebig nutzen.

Vor allem:

  • DBMS und das relationale Modell . Diese Themen sind entscheidend für das Verständnis der Grundlagen der Datenspeicherung.
  • Mindestens eine GIS DB-Lösung . Ich bevorzuge PostGIS , aber es gibt auch andere Lösungen .
  • Gute Kenntnisse in SQL und GIS SQL : Effizientes Extrahieren, Einfügen, Sortieren und Bearbeiten von Daten.
  • Klassische DB-Kompromisse : Wie wirken sich verschiedene Vorgänge auf Speicher, Festplattenspeicher, CPU und Netzwerknutzung aus?
  • Indizierung. Dies ist wichtig genug für eine separate Kugel, da es die häufigste DB Lacuna unter Anfängern ist.
  • Kenntnisse über Clustering und Skalierbarkeit .
  • Grundkenntnisse in NOSQL .
Adam Matan
quelle
Auch wenn Sie keine Datenbanken verwenden, verwenden Sie immer noch Daten - und im Allgemeinen ist es sicher, dass SQL (oder einer seiner Verwandten) zum Abfragen der Daten verwendet wird.
mwalker
Ich bin damit einverstanden, dass alle oben genannten Punkte gut zu wissen sind, aber stehen sie in Bezug auf die WEB-Entwicklung ganz oben auf der Liste?
Simon
Was ist mit CQL? Ist es auch nötig?
RK
1
@simon - Unzureichende DB-Fähigkeit ist eines der häufigsten Probleme bei GIS-Entwicklern. IMHO ist es eine der wichtigsten Fähigkeiten (zusammen mit HTML / CSS, JavaScript und Kartendarstellung). @rk - CQL?
Adam Matan
Gemeinsame Abfragesprache? Ich habe es einmal bei der Arbeit mit GeoServer erlebt.
RK
3

Angenommen, Sie haben bereits die GIS-Seite (kartografische Prinzipien usw.) abgedeckt, würde ich zuerst einen Ausflug nach http://www.w3schools.com/ machen. - Durchlaufen Sie die Tutorials in HTML, Javascript, XML usw.

Dann haben Sie verschiedene Plattformen zur Auswahl. Ich bin ein bisschen voreingenommen gegenüber ESRI, und ich würde empfehlen, zunächst die APIs zu testen: http://resources.arcgis.com/content/web/web-apis - Wenn Sie die Konzepte / Beispiele durchgehen, erhalten Sie einen echten Eindruck davon, was passiert Sie können erreichen.
Das Herunterladen und Reverse Engineering der Codebeispiele für die Arbeit mit Ihren eigenen Services (vorausgesetzt, Sie haben eine Instanz von ArcGIS Server, andernfalls können Sie ESRIs-Beispielserver verwenden) ist eine gute Möglichkeit, dies zu lernen.

Es gibt auch viele Videos, schauen Sie sich diese yohren dev Konferenzvideos an Ich empfehle einen Überblick über die ArcGIS-APIs für JavaScript, bewährte Methoden zum Entwerfen effektiver Karten-Services, Neugestalten von Desktop-Anwendungen für das Web und Verwenden der ArcGIS Server REST-API.

Welche Webplattform würden Sie wählen? Ich würde es ignorieren, auf den WebADF (Java / NET) zu schauen, da dies auslaufen wird.

Wer sind Ihre Kunden? Welche Browser werden sie verwenden? Können sie Silverlight- oder Flash-Plugins installieren? Haben Sie irgendwelche IDEs, in denen Sie sich entwickeln müssen? Zum Beispiel ist Flex in FlashBuilder ($$) am besten geeignet, aber Sie können auch FlashDevelop verwenden, eine Open-Source-Alternative.

Fühlen Sie sich mit etablierten oder aufkommenden Technologien wohler? Risiken abwägen.
- .NET / Java gibt es schon seit Ewigkeiten. - Silverlight & Flex sind ziemlich neu und es wird diskutiert, ob HTML 5 diese Plattformen auslöschen wird

Sowohl Silverlight als auch Flex verfügen über mehr Interaktivität, da Javascript diese Lücke durch die Verwendung von Dojo.Framework ausgleichen kann.

Der große Unterschied in der Funktionalität zwischen Web-ADFs und Web-APIs besteht darin, dass ArcGIS-Web-APIs vollständig clientseitig sind.

Ich überlasse es jemand anderem, eine weniger ESRI-spezifische Antwort zu geben, aber die naheliegende Wahl ist, mit der Google Maps-API zu spielen. Es gibt viele Ressourcen / Tutorials, um dies zu lernen.

Simon
quelle
Beeindruckend. Vielen Dank für den Überblick: DI neigt sich allerdings etwas mehr zu FOSS, da ich in einem Land der Dritten Welt bin und ESRI-Produkte für die meisten Menschen hier unerreichbar sind.
RK
Beachten Sie, dass die ArcGIS-Web-APIs (und viele andere) den größten Teil ihrer Verarbeitung auf der Clientseite ausführen, jedoch alle stark von veröffentlichten Services und / oder der Verarbeitung auf der Serverseite abhängen. Wenn Sie also weit über das Zusammenstellen vorhandener Ressourcen hinausgehen möchten (z. B. Geoverarbeitung), müssen Sie möglicherweise serverseitige Technologien untersuchen oder umfangreiche Nachforschungen anstellen, um herauszufinden, wie dies auf Clientseite geschehen soll.
mwalker
Zur Kenntnis genommen. Untersuchen Sie jetzt den offenen Geo-Stack.
RK
3

Javascript, HTML DOM, CSS, HTTP

Wenn Sie diese beherrschen, können Sie alles im Web tun. Das Hinzufügen von netten APIs wie SVG macht es vielleicht einfacher und Ihre Webanwendungen netter, aber IMO werden Sie nie in der Lage sein, die vier oben aufgeführten zu umgehen.

mkadunc
quelle
Javascript, HTML DOM, CSS, HTTP Gibt es eine bestimmte Reihenfolge, in der ich sie lernen soll? :)
RK
2
Ich würde die folgende Reihenfolge vorschlagen: HTML, CSS, HTTP, DOM, JavaScript, zusätzlich PHP und oder Python / Ruby für serverseitiges Scripting.
Underdunkel
3

Angenommen, Sie haben es geschafft, Ihre räumliche Datenbank und Ihren Kartenserver zu sortieren und Ihre Kenntnisse in HTML, CSS und JavaScript aufzufrischen. Dann könnten Sie anfangen, an Client-Bibliotheken zu basteln, die Kartenkomponenten im Webbrowser des Benutzers verbrauchen und anzeigen.

OpenLayers scheint die mit Abstand am häufigsten referenzierte und genutzte Bibliothek zu sein. Es hat eine ziemlich gute Dokumentation und Beispiele, und Sie können hier zum Beispiel einige Tutorials finden . BostonGIS- Seiten sind auch hier für Sie nützlich, nicht nur für OpenLayers-Inhalte.

Abhängig von Ihrem Wissen / Ihrer Lernbereitschaft ist Python MapFish auch eine sehr anmutige Lösung. Sie können auch in GeoDjango eintauchen , aber ich kann selbst nicht viel zu dieser Lösung sagen .

Alternativ können Sie sich die OSGeo- Web-Mapping-Lösungen ansehen , sich an Flash wenden oder kommerzielle Anwendungen wie ESRI-Web-APIs verwenden .

radek
quelle
3

Ich stimme Adam zu, dass räumliche DB und SQL ein Ausgangspunkt sein sollten.

Danach lohnt es sich möglicherweise, sich die zweite Ebene Ihres zukünftigen Web- Geostacks anzusehen . Sie benötigen etwas, das als Brücke fungiert, über die Ihre Daten von der räumlichen Datenbank zum Client im Browser Ihrer Benutzer übertragen werden.

Stellen Sie sicher, dass Sie die WFS- und WMS- Konzepte verstehen .

Installieren und spielen Sie lokal mit Ihrem eigenen Server. Zwei bekannte Projekte der Open Source Geospatial Foundation sind GeoServer und MapServer . QGIS MapServer könnte auch einen Blick wert sein. Ein ArcGIS-Server wäre hier [kostspielig!].

Sobald Sie diesen Teil aussortiert haben, können Sie möglicherweise mit Client-Bibliotheken spielen.

radek
quelle
2

Mapnik oder ein anderes Karten-Rendering-Tool zum Erstellen von Kartenkacheln.

Fast jeder GIS-Webentwickler müsste Karten-Rendering-Tools verwenden oder zumindest die grundlegenden Konzepte von Layern und Kacheln verstehen.

Adam Matan
quelle
Vielen Dank. Ich denke, ich verstehe Schichten und Fliesen gut. Es ist der Rendering-Teil, mit dem ich Probleme habe.
RK
2

Kennen Sie Ihr Server-Betriebssystem, Ihren Webserver (IIS, Apache, was auch immer) und wissen Sie, wie Sie Ihre Daten schützen können - auch wenn jemand alles für Sie erledigt.

Chad Cooper
quelle
2

Sie können meinen Kurs (https://www.e-education.psu.edu/geog585/) durcharbeiten, der (meiner Meinung nach) eine gute Einführung bietet und Sie zum Laufen bringen sollte.

Ian Turton
quelle
1

Ich kann Georgs vorletzten Kommentar nicht genug betonen. Wählen Sie ein für Sie interessantes Geo- und / oder Webproblem aus und informieren Sie sich bei der Lösung über die erforderlichen Technologien.

Wenn Sie sich die Zeit nehmen, sich in allen der oben aufgeführten Bereiche zu qualifizieren, wird es für immer dauern, bis Sie tatsächlich mit dem Erstellen eines Projekts beginnen, das Sie an Ihrem Juckreiz kratzt.

Ich würde vorschlagen, zunächst eine App mit OpenLayers zu erstellen, um App-Maps-Daten von einigen vorhandenen Datendiensten zu erstellen. Anschließend können Sie Ihre eigenen Datenquellen oder Dienste erstellen. Wenn Sie sich an die FLOSS-Technologien halten, können Sie Ihre Apps überall erstellen und verwenden, ohne dass Lizenzkosten anfallen.

DavidF
quelle