[DOCKER] Afficher les données SIG dans Elastic Search dans QGIS via GeoServer

Aperçu

J'ai essayé de distribuer les données GeoJSON mises dans ElasticSearch sur GeoServer et de les afficher sur QGIS.

Nous allons configurer les applications suivantes à l'aide de Docker.

Configuration de Docker

Si Docker n'est pas installé, installez-le d'abord conformément au Site officiel.

Lancez GeoServer, Elastic Search, Kibana

méthode de départ

Tout d'abord, la série de fichiers traités dans cet article se trouve dans JinIgarashi / docker-geoserver-elasticgeo.

Si vous procédez comme suit, une série d'applications telles que GeoServer sera lancée.

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

À propos des applications lancées avec Docker

Lorsqu'il est démarré avec docker-compose, GeoServer démarre sur le port 8600, ElasticSearch sur le port 9200 et Kibana sur le port 5601.

Les paramètres GeoServer sont les paramètres par défaut de kartoza / docker-geoserver Il est détourné de .env et docker-compose.yml de, et le paramètre de recherche élastique est le même que celui officiel, mais le nombre de nœuds n'est qu'un.

Cependant, comme il est nécessaire de mettre une extension appelée ElasticGeo dans GeoServer, j'ai créé mon propre Dockerfile comme suit.

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

Placez simplement le fichier jar ElasticGeo dans le dossier WEB-INF du GeoServer et l'installation est terminée. Notez qu'ElasticGeo ne fonctionne pas avec le dernier GeoServer 2.18 pour le moment, utilisez donc 2.16.2.

Vérifier la recherche élastique

Si vous exécutez ce qui suit dans le terminal et que le résultat est renvoyé, Elastic Search est correctement installé.

$ 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"
}

Importer GeoJSON avec Kibana

Ouvrez Kibana dans votre navigateur

Accédez à http: // localhost: 5601. C'est OK si un écran comme celui ci-dessous apparaît.

image.png

Importer GeoJSON dans Elastic Search

Ici, je vais télécharger plus de 50 000 données ponctuelles du compteur d'eau de la Rwanda Waterworks Corporation, avec laquelle je travaille en tant que bénévole.

Ouvrez le menu supérieur gauche et ouvrez Carte. image.png

Cliquez sur "Ajouter une couche".

image.png

Cliquez sur Télécharger Geo JSON. image.png

Si vous faites glisser et déposez votre GeoJSON dans l'espace de Sélectionnez un fichier à télécharger, il sera chargé automatiquement, donc cliquez sur Importer le fichier en continu pour démarrer l'indexation.

Lorsqu'il se transforme en bouton Ajouter une couche, cliquez dessus en continu. Entrez les informations appropriées dans les paramètres de calque et enregistrez. Je viens de le nommer rw_connections et j'ai laissé le reste par défaut

image.png

Ensuite, j'ai pu l'afficher à Kibana comme suit. image.png

La taille maximale GeoJSON de Kibana est jusqu'à 50 Mo

Si la taille maximale de Kibana dépasse 50 Mo, vous pouvez l'importer en utilisant la commande ci-dessous avec ogr2ogr. Cependant, si vous importez avec ogr2ogr, vous devez créer vous-même le modèle d'index avec Kibana.

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

Paramètres GeoServer

Maintenant que les données sont prêtes, configurons GeoServer.

Allez sur http: // localhost: 8600 / geoserver. Un écran familier apparaîtra. image.png

Connectez-vous avec l'ID utilisateur et le mot de passe par défaut suivants.

Créez un espace de travail. image.png

Créez un magasin. Puisque ElasticGeo est défini, il existe une option appelée Elasticsearch dans Sources de données vectorielles, alors sélectionnez-la. image.png

Entrez les informations d'index téléchargées par Kibana.

Sinon, laissez les valeurs par défaut et cliquez sur Enregistrer.

image.png

Ensuite, ajoutez une couche de recherche élastique. Si le magasin est configuré correctement, l'écran suivant s'affiche: Cliquez sur «Publier». image.png

Ce sera un écran d'édition de calque, mais cette fois, nous allons créer un calque après avoir défini uniquement BBOX avec toutes les valeurs par défaut.

image.png

Vous avez une couche. image.png

Jetons un coup d'œil à la couche GeoServer créée par Layer Previw. image.png

Cliquez sur Ouvrir les couches et une carte apparaîtra. image.png

Afficher les données dans QGIS

Maintenant que GeoServer peut fournir des données Elastic Search, affichons-les dans QGIS.

Cette fois, j'utiliserai le dernier QGIS 3.16 pour le moment.

Après avoir lancé QGIS, cliquez avec le bouton droit sur «WFS / OGC API» dans le panneau du navigateur et cliquez sur «Nouvelle connexion». image.png

--Le nom est elasticsearch --URL est http: // localhost: 8600 / geoserver / elasticsearch / wfs --Version vers 1.0.0

image.png

Si vous ne connaissez pas l'URL WFS, ouvrez l'URL ci-dessous dans votre navigateur et vous pouvez voir l'URL que vous spécifiez dans OnlineResource. 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>

La couche connections est affichée dans le panneau du navigateur. Double-cliquez sur connections pour ajouter une couche. image.png

J'ai pu afficher correctement la couche WFS dans QGIS 3.16. Dans Kibana, vous ne pouvez pas voir les informations sur les fonctionnalités affichées dans les pop-ups, mais si vous les affichez dans QGIS via GeoServer, vous pouvez voir correctement les informations d'attribut. image.png

Sommaire

Les données SIG soumises à Elastic Search peuvent être distribuées par WFS / WMS en installant l'extension Elastic Geo dans Geo Server. --Peut être affiché dans QGIS en utilisant la méthode de distribution WFS / WMS --En plus de QGIS, Leaflet, OpenLayers, Mapbox GL JS, etc. peuvent gérer les données Elastic Search via GeoServer (non couvert par cet article).

J'ai senti que la gestion des données SIG dans ElasticSearch était devenue plus familière en utilisant GeoServer.

Recommended Posts

Afficher les données SIG dans Elastic Search dans QGIS via GeoServer