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.
Wenn Docker nicht installiert ist, installieren Sie es zuerst gemäß der offiziellen Website.
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
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.
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"
}
Gehen Sie zu "http: // localhost: 5601". Es ist in Ordnung, wenn ein Bildschirm wie der folgende angezeigt wird.
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".
Klicken Sie auf "Ebene hinzufügen".
Klicken Sie auf "Geo JSON hochladen".
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
Dann konnte ich es in Kibana mit folgendem Gefühl zeigen.
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
Nachdem die Daten fertig sind, richten wir GeoServer ein.
Gehen Sie zu "http: // localhost: 8600 / geoserver". Ein vertrauter Bildschirm wird angezeigt.
Melden Sie sich mit der folgenden Standardbenutzer-ID und dem folgenden Kennwort an.
Erstellen Sie einen Arbeitsbereich.
Erstellen Sie ein Geschäft. Da ElasticGeo festgelegt ist, gibt es unter "Vektordatenquellen" eine Option namens "Elasticsearch". Wählen Sie sie daher aus.
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.
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".
Es wird ein Ebenenbearbeitungsbildschirm sein, aber dieses Mal erstellen wir eine Ebene, nachdem wir nur BBOX mit allen Standardeinstellungen festgelegt haben.
Du hast eine Schicht.
Werfen wir einen Blick auf die von Layer Previw erstellte GeoServer-Ebene.
Klicken Sie auf Ebenen öffnen und eine Karte wird angezeigt.
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".
--Name ist elasticsearch
--URL ist "http: // localhost: 8600 / geoserver / elasticsearch / wfs"
--Version zu 1.0.0
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.
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.
Ich hatte das Gefühl, dass der Umgang mit GIS-Daten in Elastic Search durch die Verwendung von GeoServer vertrauter wurde.
Recommended Posts