Entwerfen einer API für räumliche Daten

10

Ich denke darüber nach, eine API zu erstellen, damit ich Kollegen einige räumliche Datensätze zur Analyse zur Verfügung stellen kann.

Ein Teil meiner Arbeit bestand darin, Daten zu analysieren und vorzubereiten, die dann von anderen zur weiteren Analyse verwendet werden können. Die Arbeit (obwohl sie derzeit kleiner und weniger anspruchsvoll ist) ähnelt Walkscore , beinhaltet jedoch einige enorme Datensätze. Es gibt zunehmende Einschränkungen, wie ich die Originaldaten freigeben kann, aber meine abgeleiteten Arbeiten können gemeinsam genutzt werden. Ich habe darüber nachgedacht, wie ich die Ergebnisse meiner Analyse am besten teilen kann (außerhalb der Weitergabe großer Datenmengen), und dachte, dass eine API ein Ansatz wäre. Woran sollte ich beim Erstellen einer API denken? Gibt es Designspezifikationen, denen ich folgen kann?

Meine Vision klingt etwas grandioser als derzeit, aber ich denke, es wäre ein nützlicher Rahmen, den man zu Beginn dieser Arbeit berücksichtigen sollte.

djq
quelle
1
Suchen Sie eine sofort einsatzbereite API wie den ArcGIS Flex Viewer oder etwas, das Sie weiter anpassen möchten?
Artwork21
Ich möchte versuchen, etwas (oder Dinge) anzupassen. Ich verwende derzeit PostGIS für die Datenspeicherung und -analyse sowie Mapserver (aber keineswegs einen Experten, der dies verwendet). Ich frage mich, was der nächste Schritt wäre, um dies anderen zugänglich zu machen und herauszufinden, was ich lernen sollte.
DJQ

Antworten:

7

Mit API meinen Sie vermutlich eine Art Netzwerkzugriff auf Ihre Daten über eine HTTP-POST / GET-Affäre wie die Google Maps-API. Werden es Raster- oder Vektordaten sein? Ich werde für die Zwecke dieser Diskussion einen Vektor annehmen. Dies ist eigentlich nur ein Kommunikationsprotokoll und keine Anwendungsprogrammierschnittstelle.

Sie müssen nichts von Grund auf neu entwerfen, da es viele Standardprotokolle gibt (anstatt APIs an sich habe ich ein bisschen Probleme damit, Dinge APIs aufzurufen, wenn sie nicht sind, aber ich werde Sie nicht langweilen! ). Wenn Sie nur schreibgeschützte Vektordaten für Ihre Clients bereitstellen möchten , benötigen Sie lediglich einen WFS-Server , der sich vor Ihrer Datenbank befindet. Ich habe in der Vergangenheit GeoServer verwendet , aber ich bevorzuge die Leichtigkeit von TinyOWS . Beide erledigen den gleichen Job: Konfigurieren Sie sie für den Zugriff auf Ihre Datenbank mit abgeleiteten Daten und legen Sie fest, dass sie als Teil eines Webservers ausgeführt werden ( Apache ist üblich, aber ich bevorzuge lighttpd) und da hast du es. QGIS kann Daten von einem WFS-Server laden, und Arc zweifellos auch. OpenLayers verfügt auch über WFS-Rendering-Funktionen für eine browserbasierte Lösung. Auf der unteren Ebene kann GDAL verwendet werden, um die Daten von WFS in jedes von OGR unterstützte Vektorformat zu konvertieren.

Wenn Sie Bearbeitungsfunktionen wünschen, unterstützen sowohl GeoServer als auch TinyOWS WFS-T, sodass Ihre Benutzer ihre Analysen wieder auf Ihren Server hochladen können.

Das Erstellen einer eigenen API macht den Zweck, diese Standards zu haben, in erster Linie zunichte, es sei denn, Sie sind unglaublich spezialisiert und haben spezifische Anforderungen wie Leistung und ähm ... das ist ungefähr alles, was ich mir vorstellen kann. Diesen Weg ohne eine angemessene Menge an Ressourcen zu gehen, ist eine schwierige - wenn auch nicht unmögliche - Aufgabe.

MerseyViking
quelle
Vielen Dank für Ihre Gedanken - vielleicht habe ich API in meiner Frage falsch verwendet. Ich interessiere mich sowohl für einen WMS- als auch für einen WFS-Dienst (sowohl Raster als auch Vektor). Ihre Erklärung ist sehr nützlich, da ich mehr darüber nachdenke.
DJQ
6

Sie haben mehrere Möglichkeiten; Die Auswahl hängt von Ihrem Datenmodell, der Art der zu liefernden Daten, dem beabsichtigten Nutzungsmodell, der Zugriffskontrolle sowie der Bereitstellungsplattform (Web, HTML, Java Server, IIS, statischer Datensatz) ab.

  1. Erweitern Sie ein vorhandenes Produkt, um Ihren Datensatz zu verbrauchen. Sie können eine GeoServer- Instanz auf Ihrem (oder einem dedizierten?) Computer hosten und Ihre Daten auf diese Weise bereitstellen. Wenn Ihre Daten kein Format haben, das GeoServer verstehen kann, haben Sie die Möglichkeit, ein Java-Paket zu schreiben, um diese Funktion bereitzustellen. Der Vorteil besteht darin, dass Sie einen genau definierten Standard für die Bereitstellung von räumlichen Informationen sowohl für die Visualisierung (WMS) als auch für die Manipulation / den Download von Funktionen (WFS) sowie für andere Vorteile wie Geocaching und Kacheln haben.
  2. Nehmen Sie Ihre API-Option und Sie haben die volle Kontrolle darüber, wie Benutzer mit ihr interagieren. Definieren Sie , wie Benutzer mit Ihren Daten interagieren sollen. Diese Schnittstelle zu Ihren Daten ist der Schlüssel zwischen Erfolg oder Misserfolg. Wenn Ihre Benutzeroberfläche zu offen ist, kann sie komplex und unbrauchbar werden, zu einfach und restriktiv, langsam oder ohne Übernahme. In beiden Fällen ist es wichtig zu definieren, wie Benutzer auf Ihre Daten zugreifen sollen und wie Benutzer Ihre Daten voraussichtlich verwenden möchten.

Viel Glück, eine API ist kein kleines Unterfangen, da Sie die Freigabemethode und -zyklen, Fehlerbehebungen und Tests berücksichtigen müssen. All dies trägt zur Benutzerfreundlichkeit bei. Ich sage nicht, tu es nicht, es wäre eine großartige Erfahrung. Der Aufbau auf einem vorhandenen Produkt könnte jedoch auch eine positive Erfahrung sein.

OptimizePrime
quelle