2017-11-05 3 views
0

Ich zeichne Polygon auf Karte mit Openlayer und Speichern von Geojson in SQL-Server-DB und von Geojson gespeichert Ich möchte Polygon-Layer auf GeoServer erstellen und wieder mit wms-Anfrage Polygonbild Kachel auf widerspiegeln Karte.Erstellen Polygon-Layer auf GeoServer mit SQL-View-Abfrage

Also auf Karte zeichnen und in db speichern funktioniert gut.

Tabellenspalte EntityJson aussehen

{ 
    "LatLong": { 
     "Type": "string", 
     "Value": "{ \"type\": \"Polygon\", \"coordinates\": [ [ [ -76.2890625, 58.07787626787517 ], [ -95.625, 50.28933925329178 ], [ -84.72656249999999, 41.244772343082076 ], [ -62.22656249999999, 43.32517767999296 ], [ -56.6015625, 48.45835188280866 ], [ -53.78906249999999, 56.9449741808516 ], [ -63.28125, 62.91523303947614 ], [ -76.2890625, 58.07787626787517 ] ] ] }" 
    } 
} 

und EntityType ist "Area".

Aber für den nächsten Fluss zu WMS-Anfrage auf Client-Seite aufrufen, dass ich versuche, Polygon-Layer mit SQL-Abfrage auf GeoServer zu erstellen, so dass dynamisch Geojson von db basierend auf wo EntityType = "Area" nehmen.

Aber ich habe nicht bekommen, wie SQL-View-Abfrage für Polygon-Layer zu geojson Daten aus SqlDB Tabellenspalte EntityJson zu bekommen.

Bitte kann mir jemand sagen. Wie man Polygongeojson von der Tabellenspalte holt und Polygonschicht auf GeoServer verursacht, indem man sqlview Abfrage verwendet.

Danke.

Antwort

0

Die einzige Möglichkeit, dies zu tun, ist String-Ersetzung zu verwenden, um eine WKT-Polygon-Definition aus dem JSON zu konstruieren, die langsam und fehleranfällig sein wird.

Ein besserer Weg ist, GeoJSON nicht in der Datenbank zu speichern, sondern stattdessen Polygone zu speichern. Der einfachste Weg dazu besteht darin, die OpenLayers WFS-T-Unterstützung zu verwenden, um die Funktionen an GeoServer zu senden, der sie dann korrekt in die Datenbank schreibt (wenn später Datenbanken geändert werden) und über diese zugreifen kann die WMS-Schnittstelle ohne zusätzlichen Aufwand.

Alternativ, wenn Sie GeoJson als Transportformat verwenden müssen, sollten Sie sich wahrscheinlich eine NoSQL-Datenbank wie mongoDB ansehen, die auch als Datenspeicher in GeoServer verwendet werden kann.

Verwandte Themen