Ich plane, eine Online-Karte mit Openlayern (2 oder 3) oder einer Broschüre zu erstellen. Ich muss einige Punkte / Markierungen (~ 30.000), Polygone (~ 500) und Linien auf einer OSM-Karte in mehreren Ebenen anzeigen. Diese Punkte und Polygone sollten Metadaten (mindestens eine ID) enthalten, um dem Benutzer zusätzliche Informationen zum Überfahren, Klicken oder Berühren von Ereignissen anzuzeigen. Jetzt suche ich nach dem besten Weg, diese Daten an den Client zu senden. Der gesamte Bereich, in dem diese Funktionen platziert sind, ist in mehrere Abschnitte unterteilt. In den meisten Fällen arbeitet ein Benutzer in einem Abschnitt (Lesen von Informationen - Schreiben ist ein sehr seltener Fall, der derzeit nicht implementiert wird). Diese Abschnitte sind jedoch nebeneinander angeordnet und meistens sind mindestens 3 Abschnitte sichtbar. Die Punkte können auch in einer höheren Zoomstufe gruppiert oder ausgeblendet werden.
Ich habe von WFS gehört, kann aber die Vorteile gegenüber GeoJSON oder KML nicht erkennen. Wäre es möglich, die Features innerhalb des Begrenzungsrahmens der aktuellen Ansicht mit WFS abzurufen? Wir haben eine MSSQL-Datenbank und einen Webservice zwischen der Datenbank und der Webanwendung. Wenn dies keine wirklichen Vorteile bietet, möchten wir keinen GeoServer und keine Postgres-Datenbank einrichten. Es wäre auch kein Problem, dem Webservice mitzuteilen: Geben Sie mir alle Funktionen der Schicht L zwischen X1, Y1 und X2, Y2 (als GeoJSON, KML oder was auch immer). Was sind die Vorteile von WFS? Wie würden Sie vorgehen oder welche weiteren Informationen sind für diese Entscheidung relevant?
What are the advantages of WFS?
Es ist eine Standardschnittstelle (Service), die Sie erhalten könnenall features of layer L between X1,Y1 and X2,Y2 (as GeoJSON, KML or whatever)
.Antworten:
Beachten Sie, dass WFS bereits ein Dienst ist, der sein Datenformat zurückgibt (Mischung aus OGC-Standards). GeoJSON und KML sind nur ein Datenformat. Sie müssen den Dienst erstellen, um die Daten zurückzugeben.
In WFS sind daher bereits erweiterte Filterfunktionen wie zeitliche Filter, räumliche Filter (Schnittpunkte, Berührungen, Überlappungen ...) sowie logische und Vergleichsoperatoren ... enthalten. Ja, Sie können festlegen, dass die Ergebnisse für eine BBox neu geladen werden sollen, und der Benutzer navigiert durch die Karte. Dies ist alles out of the box . Dann ist es natürlich ein weit verbreiteter Standard, den viele Server, Clients und Anwendungen lesen können, indem sie diese Daten wie gesagt automatisch abfragen können.
Die Frage, die Sie sich stellen sollten, ist, ob Sie diese Daten anderen Clients, Anwendungen und Servern zugänglich machen möchten. Wird Ihr Dienst "Gib mir alle Funktionen der Schicht L zwischen X1, Y1 und X2, Y2" ausreichen? Ist das alles was du brauchst? Wenn es alles ist, was Sie brauchen, dann gibt es keinen Grund, sich für WFS zu entscheiden. Die GeoJSON- oder KML-Option wird wahrscheinlich ohne den gesamten Overhead schneller sein. Wenn Sie jedoch im zukünftigen SOA-Stil eine erweiterte Filterung durchführen möchten, ist WFS der richtige Weg.
quelle
Zunächst empfehle ich Ihnen, die Spezifikation zu lesen . Der größte Vorteil von WFS ist, dass es eine offizielle und standardisierte Möglichkeit ist, auf Vektordaten zuzugreifen. Das heißt, wenn Sie WFS verwenden, müssen Sie das Rad nicht neu erfinden (z. B. was sollte passieren, wenn zwei Personen gleichzeitig dieselbe Funktion bearbeiten?). Es ist auch viel einfacher, Daten über WFS gemeinsam zu nutzen, als GeoJSON oder KML zu verwenden (auch hier müssen Sie keine Funktion schreiben, die den angeforderten Datenbenutzer zurückgibt, da dieser bereits Teil der WFS-Spezifikation ist).
Wenn Sie Ebenen für den schreibgeschützten Zugriff bereitstellen möchten, warum entscheiden Sie sich nicht für WMS? Es sollte für Ihre Zwecke völlig in Ordnung sein.
Wenn Sie weitere Fragen haben, können Sie diese gerne stellen. Ich bin gerade dabei, dieses Dilemma selbst zu entscheiden, und es ist immer angenehm, die Meinung anderer zu lesen.
quelle
WFS bietet Ihrem Client (OpenLayers) die Möglichkeit, seine Anrufe mit verschiedenen Strategien für die WFS-Anrufe auszuführen :
Die BBOX-Strategie wird häufig verwendet. Die Vektorebene fordert nur Features von WFS an, die sich im Ansichtsfenster befinden. Wenn das Ansichtsfenster geändert wird, werden zusätzliche Features automatisch transparent geladen.
Wie CaptDragon und ich in Ihrer vorherigen Frage erwähnt haben, wird die Anzahl der Funktionen OpenLayers höchstwahrscheinlich töten oder die Benutzererfahrung unhaltbar machen.
Sie können Ihre Daten in eine MSSQL-Datenbank einfügen und dann eine serverseitige Routine schreiben, um Daten über Ajax-Aufrufe zurückzugeben und die Ebenen selbst zu aktualisieren. Ihr Client stellt die Viewport-Grenzen im Ajax-Aufruf bereit. Die Datenbank muss räumlich bekannt sein, damit dies funktioniert.
WMS würde Kacheln aus derselben Datenquelle generieren. Der Vorteil ist eine sehr schnelle Implementierung, ein serverseitiges Design und kein Herunterladen von Daten zur Anzeige auf den Client, mit Ausnahme der Kacheln. Sie können WFS auch mit WMS verwenden, um Funktionsinformationen abzurufen, wenn Benutzer auf einen Punkt klicken.
In all diesen Szenarien wäre es auch möglich, die Daten aus einer Formdatei anstelle einer Datenbank bereitzustellen.
quelle