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.
Si Docker n'est pas installé, installez-le d'abord conformément au Site officiel.
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
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.
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"
}
Accédez à http: // localhost: 5601
. C'est OK si un écran comme celui ci-dessous apparaît.
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
.
Cliquez sur "Ajouter une couche".
Cliquez sur Télécharger Geo JSON
.
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
Ensuite, j'ai pu l'afficher à Kibana comme suit.
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
Maintenant que les données sont prêtes, configurons GeoServer.
Allez sur http: // localhost: 8600 / geoserver
. Un écran familier apparaîtra.
Connectez-vous avec l'ID utilisateur et le mot de passe par défaut suivants.
Créez un espace de travail.
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.
Entrez les informations d'index téléchargées par Kibana.
es01
--elasticsearch_port: insérer 9200
--index_name: connexionsSinon, laissez les valeurs par défaut et cliquez sur Enregistrer.
Ensuite, ajoutez une couche de recherche élastique. Si le magasin est configuré correctement, l'écran suivant s'affiche: Cliquez sur «Publier».
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.
Vous avez une couche.
Jetons un coup d'œil à la couche GeoServer créée par Layer Previw.
Cliquez sur Ouvrir les couches et une carte apparaîtra.
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».
--Le nom est elasticsearch
--URL est http: // localhost: 8600 / geoserver / elasticsearch / wfs
--Version vers 1.0.0
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.
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.
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