8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

YAMAP エンジニアAdvent Calendar 2021

Day 8

Re:Earth をローカル環境で動かしてみた

Last updated at Posted at 2021-12-07

YAMAP エンジニア Advent Calendar 2021 の第8日目の記事です。

ときどき「この地理データを地図上にサクッといい感じに表示したいな」というケースに出くわします。
Mapbox GL JS や leaflet.js を使って表示するのも良いのですが、もっとかんたんにノーコードで実現できないかなと思っていました。

カシミール3D や QGIS を使ってもいいのですが、動作が重いのと操作性が煩雑なのでどうしようかと思っていたところに以下の記事を見つけました。
東京大学が「デジタルツイン」構築向けWebGISプラットフォーム「Re:Earth」をオープンソースとして公開

今回は Re:Earth をお試ししてみたという内容です。ほぼ チュートリアル と同じ内容になりますが備忘録として投稿します...

環境

今回はローカルの Mac の Docker 上で Re:Earth を動かします

Auth0の設定

チュートリアル どおりに Auth0 の設定を行います。ここが最も面倒かもしれませんが、最初の1回だけなので大丈夫です。

まずは Application を作成します。バックエンド側の設定をポチポチと進めます
image.png

image.png

つぎはフロントエンド側の設定をポチポチと進めます
image.png

image.png
image.png

こういう状態になりました
スクリーンショット 2021-12-07 22.58.58.png

API を作成します
image.png

こういう状態になりました
スクリーンショット 2021-12-07 23.05.51.png

Post User Registration を選択します
image.png

Sign up Re:Earth を作成します
image.png

text box に以下のコードを記載します

const axios = require("axios");

const url = "http://localhost:8080";

exports.onExecutePostUserRegistration = async (event) => {
  const res = await axios.post(url + "/api/signup", {
    email: event.user.email,
    sub: event.user.user_id,
    name: event.user.username || event.user.nickname || event.user.email,
  });
  console.log("Re:Earth OK", res);
};

Modules を表示して axios を追加します。
image.png
image.png

User のところで新しいユーザを追加しておきます
事前準備はいったん完了です

Dockerで起動

docker-compose.yml をダウンロードします

curl -OL https://raw.githubusercontent.com/reearth/reearth/main/docker-compose.yml

Auth0 の設定内容を参照して .env ファイルを作成します

REEARTH_AUTH0_AUDIENCE=http://localhost:8080
REEARTH_AUTH0_CLIENTID=YOUR_CLIENTID
REEARTH_AUTH0_CLIENTSECRET=YOUR_CLIENTSECRET
REEARTH_AUTH0_DOMAIN=YOUR_DOMAIN.jp.auth0.com
REEARTH_AUTH0_WEBCLIENTID=YOUR_WEBCLIENTID

起動します

docker-compose up -d

コマンドでユーザ登録

以下のコマンドで Auth0 に作成しておいたユーザを登録します

curl -H 'Content-Type: application/json' http://localhost:8080/api/signup -d @- << EOF
{
"sub": "google-oauth2|XXXXXXXXXXXXXXXXXX",
"email": "your_name@example.com",
"name": "Kohei Higuchi"
}
EOF

上記の sub には Auth0 の user_id を設定します
スクリーンショット 2021-12-07 23.25.53.png

ブラウザで表示

http://localhost:8080/ が表示されました
image.png

サインインすると Re:Earth が使えるようになりました
image.png

サンプルプロジェクトを作成する

さんぷるプロジェクトを作成します
image.png

プロジェクト編集画面に行くと地球儀が表示されます
image.png

geojson を表示してみる

試しに適当な geojson を表示してみます
ここのファイルアイコンを地図上の D&D します
image.png

ファイルというレイヤーが作成されるので選択します
image.png

右サイドバーのファイル URL から geojson ファイルをアップロードします
image.png

簡単に表示されます
image.png

geojson.io でファイル編集

ちなみに geojson ファイルは geojson.io で簡単に編集できます

地理院の衛星写真を表示する

タイルを URL に変更して、URL 欄に https://cyberjapandata.gsi.go.jp/xyz/seamlessphoto/{z}/{x}/{y}.jpg と設定すると衛星写真が表示されます
image.png

3D 表示してみる

地形をオンにして、 Ctrl を押しながらドラッグすると 3D 表示されます。

image.png

まとめ

このように Re:Earth を使うと簡単にコードを書かずに地図上に地理情報を表示できました。他にも写真を地図上に貼ったり、3D オブジェクトを配置したりと色々な表現ができます。お気軽に使うには便利です。
また OSS として公開されており、プラグイン開発なども今後盛んに行われるようです。
もう少し使い倒して自分でプラグインが作れるようにがんばります。

8
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?