[DOCKER] Anzeigen von GIS-Daten in Elastic Search in QGIS über GeoServer

Überblick

Ich habe versucht, die in ElasticSearch auf GeoServer gespeicherten GeoJSON-Daten zu verteilen und in QGIS anzuzeigen.

Wir werden die folgenden Apps mit Docker einrichten.

Docker-Setup

Wenn Docker nicht installiert ist, installieren Sie es zuerst gemäß der offiziellen Website.

Starten Sie GeoServer, Elastic Search, Kibana

Startmethode

Erstens befindet sich die in diesem Artikel behandelte Dateiserie in JinIgarashi / docker-geoserver-elasticgeo.

Wenn Sie Folgendes tun, wird eine Reihe von Apps wie GeoServer gestartet.

git clone [email protected]:JinIgarashi/docker-geoserver-elasticgeo.git
cd docker-geoserver-elasticgeo
docker-compose up

Informationen zu Apps, die mit Docker gestartet wurden

Beim Start mit Docker-Compose wird GeoServer auf Port 8600, ElasticSearch auf Port 9200 und Kibana auf Port 5601 gestartet.

GeoServer-Einstellungen sind die Standardeinstellungen von kartoza / docker-geoserver Es wird von .env und docker-compose.yml von umgeleitet, und die Einstellung von Elastic Search ist dieselbe wie die offizielle, aber die Anzahl der Knoten ist nur eine.

Da es jedoch erforderlich ist, eine Erweiterung mit dem Namen ElasticGeo in GeoServer einzufügen, habe ich meine eigene Docker-Datei wie folgt erstellt.

FROM kartoza/geoserver:2.16.2

RUN wget https://github.com/ngageoint/elasticgeo/releases/download/2.16.0-RC1/elasticgeo-2.16.0.zip -O elasticgeo.zip
RUN unzip -o elasticgeo.zip -d /usr/local/tomcat/webapps/geoserver/WEB-INF/lib/

EXPOSE 8080

Legen Sie einfach die ElasticGeo-JAR-Datei in den Ordner "WEB-INF" des GeoServers und die Installation ist abgeschlossen. Beachten Sie, dass ElasticGeo derzeit nicht mit dem neuesten GeoServer 2.18 funktioniert. Verwenden Sie daher 2.16.2.

Überprüfen Sie die elastische Suche

Wenn Sie im Terminal Folgendes ausführen und das Ergebnis zurückgegeben wird, wurde Elastic Search erfolgreich installiert.

$ curl http://localhost:9200
{
  "name" : "es01",
  "cluster_name" : "es-docker-cluster",
  "cluster_uuid" : "W_ho6j3NSZWQvuL7CfNnXg",
  "version" : {
    "number" : "7.9.3",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "c4138e51121ef06a6404866cddc601906fe5c868",
    "build_date" : "2020-10-16T10:36:16.141335Z",
    "build_snapshot" : false,
    "lucene_version" : "8.6.2",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

Importieren Sie GeoJSON mit Kibana

Öffnen Sie Kibana in Ihrem Browser

Gehen Sie zu "http: // localhost: 5601". Es ist in Ordnung, wenn ein Bildschirm wie der folgende angezeigt wird.

image.png

Laden Sie GeoJSON in Elastic Search hoch

Hier werde ich mehr als 50.000 Punktdaten des Wasserzählers der Rwanda Waterworks Corporation hochladen, mit denen ich als Freiwilliger zusammenarbeite.

Öffnen Sie das Menü oben links und öffnen Sie "Karte". image.png

Klicken Sie auf "Ebene hinzufügen".

image.png

Klicken Sie auf "Geo JSON hochladen". image.png

Wenn Sie Ihr GeoJSON per Drag & Drop in den Bereich "Wählen Sie eine Datei zum Hochladen aus" ziehen, wird es automatisch geladen. Klicken Sie daher kontinuierlich auf "Datei importieren", um die Indizierung zu starten.

Wenn die Schaltfläche "Ebene hinzufügen" geändert wird, klicken Sie fortlaufend darauf. Geben Sie die entsprechenden Informationen in die Ebeneneinstellungen ein und speichern Sie sie. Ich habe es einfach "rw_connections" genannt und den Rest als Standard belassen

image.png

Dann konnte ich es in Kibana mit folgendem Gefühl zeigen. image.png

Die maximale GeoJSON-Größe von Kibana beträgt bis zu 50 MB

Wenn die maximale Größenbeschränkung von Kibana 50 MB überschreitet, können Sie sie mit dem folgenden Befehl mit ogr2ogr importieren. Wenn Sie jedoch mit ogr2ogr importieren, müssen Sie das Indexmuster selbst mit Kibana erstellen.

ogr2ogr -progress -lco BULK_SIZE=5000000 -f "Elasticsearch" http://localhost:9200 connections.geojson -skipfailures

GeoServer-Einstellungen

Nachdem die Daten fertig sind, richten wir GeoServer ein.

Gehen Sie zu "http: // localhost: 8600 / geoserver". Ein vertrauter Bildschirm wird angezeigt. image.png

Melden Sie sich mit der folgenden Standardbenutzer-ID und dem folgenden Kennwort an.

Erstellen Sie einen Arbeitsbereich. image.png

Erstellen Sie ein Geschäft. Da ElasticGeo festgelegt ist, gibt es unter "Vektordatenquellen" eine Option namens "Elasticsearch". Wählen Sie sie daher aus. image.png

Geben Sie die von Kibana hochgeladenen Indexinformationen ein.

--Datenquellenname: Geben Sie einen beliebigen Namen ein --elasticsearch_host: Geben Sie den Docker-Containernamen "es01" ein --elasticsearch_port: 9200 einfügen --index_name: Verbindungen

Behalten Sie die Standardeinstellungen bei und klicken Sie auf Speichern.

image.png

Fügen Sie als Nächstes eine Ebene für die elastische Suche hinzu. Wenn das Geschäft ordnungsgemäß eingerichtet ist, wird der folgende Bildschirm angezeigt: Klicken Sie auf "Veröffentlichen". image.png

Es wird ein Ebenenbearbeitungsbildschirm sein, aber dieses Mal erstellen wir eine Ebene, nachdem wir nur BBOX mit allen Standardeinstellungen festgelegt haben.

image.png

Du hast eine Schicht. image.png

Werfen wir einen Blick auf die von Layer Previw erstellte GeoServer-Ebene. image.png

Klicken Sie auf Ebenen öffnen und eine Karte wird angezeigt. image.png

Daten in QGIS anzeigen

Nachdem GeoServer nun Elastic Search-Daten bereitstellen kann, zeigen wir sie in QGIS an.

Dieses Mal werde ich momentan das neueste QGIS 3.16 verwenden.

Klicken Sie nach dem Start von QGIS mit der rechten Maustaste auf "WFS / OGC-API" im Browserfenster und klicken Sie auf "Neue Verbindung". image.png

--Name ist elasticsearch --URL ist "http: // localhost: 8600 / geoserver / elasticsearch / wfs" --Version zu 1.0.0

image.png

Wenn Sie die WFS-URL nicht kennen, öffnen Sie die unten stehende URL in Ihrem Browser und Sie können die URL sehen, die Sie unter "OnlineResource" angegeben haben. http://localhost:8600/geoserver/elasticsearch/ows?service=WFS&version=1.0.0&request=getcapabilities

<Service>
<Name>WFS</Name>
<Title/>
<Abstract/>
<Keywords/>
<OnlineResource>http://localhost:8600/geoserver/elasticsearch/wfs</OnlineResource>

Die Ebene "Verbindungen" wird im Browserfenster angezeigt. Doppelklicken Sie auf "Verbindungen", um eine Ebene hinzuzufügen. image.png

Ich konnte die WFS-Ebene in QGIS 3.16 korrekt anzeigen. In Kibana können Sie die angezeigten Feature-Informationen nicht in Popups anzeigen. Wenn Sie sie jedoch in QGIS über GeoServer anzeigen, können Sie die Attributinformationen ordnungsgemäß anzeigen. image.png

Zusammenfassung

Ich hatte das Gefühl, dass der Umgang mit GIS-Daten in Elastic Search durch die Verwendung von GeoServer vertrauter wurde.

Recommended Posts

Anzeigen von GIS-Daten in Elastic Search in QGIS über GeoServer