「GIS」カテゴリーアーカイブ

GDAL/OGR インストール:Rocky Linux 8/9

最近、PostGIS環境作ったりすることはあったのですが、オーソドックスにGDALだけ入れたい!ということで、久しぶりにGDAL/OGRのインストールをしようと思ったら、サクッとエラーが。。。

# dnf install gdal gdal-devel
Last metadata expiration check: 0:22:02 ago on Sat 11 Feb 2023 11:49:32 PM JST.
Error:
 Problem 1: conflicting requests
  - nothing provides libdap.so.25()(64bit) needed by gdal-3.0.4-11.el8.x86_64
  - nothing provides libdapclient.so.6()(64bit) needed by gdal-3.0.4-11.el8.x86_64
  - nothing provides libdapserver.so.7()(64bit) needed by gdal-3.0.4-11.el8.x86_64
 Problem 2: package gdal-devel-3.0.4-11.el8.x86_64 requires libgdal.so.26()(64bit), but none of the providers can be installed
  - package gdal-devel-3.0.4-11.el8.x86_64 requires gdal-libs(x86-64) = 3.0.4-11.el8, but none of the providers can be installed
  - conflicting requests
  - nothing provides libdap.so.25()(64bit) needed by gdal-libs-3.0.4-11.el8.x86_64
  - nothing provides libdapclient.so.6()(64bit) needed by gdal-libs-3.0.4-11.el8.x86_64
  - nothing provides libdapserver.so.7()(64bit) needed by gdal-libs-3.0.4-11.el8.x86_64
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)

どっかのサイトでPowerToolsリポジトリを有効にすればって書いてあったので試してみる。。。

# dnf install --enablerepo=PowerTools gdal
Error: Unknown repo: 'PowerTools'

無いって言われるし・・・
リポジトリの設定を確認してみると。。。。あるんだけど。。。
/etc/yum.repos.d/Rocky-PowerTools.repo

# Rocky-PowerTools.repo
#
# The mirrorlist system uses the connecting IP address of the client and the
# update status of each mirror to pick current mirrors that are geographically
# close to the client.  You should use this for Rocky updates unless you are
# manually picking other mirrors.
#
# If the mirrorlist does not work for you, you can try the commented out
# baseurl line instead.

[powertools]
name=Rocky Linux $releasever - PowerTools
mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=PowerTools-$releasever
#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/PowerTools/$basearch/os/
gpgcheck=1
enabled=0
countme=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial

全部小文字ですね(^^ゞ
※下記のコマンドでPowerToolsリポジトリを有効にしても良いのですが、これからも必要そうなら、enable=1にしておくと楽だと思います。

参考にしたサイトでは、大文字使ってたんですけど。。。仕方が無いですね。
ついでに、proj-develも入れておきます。
GDALを入れると、projは入ってくれるのですがproj-develまでは入ってくれません。
今回、ちょっと必要になりそうなのでついでに入れておきました。

# dnf install --enablerepo=powertools gdal gdal-devel proj proj-devel
Last metadata expiration check: 0:21:21 ago on Sun 12 Feb 2023 12:01:25 AM JST.
Dependencies resolved.
===============================================================================================================
 Package                    Architecture  Version                                      Repository         Size
===============================================================================================================
Installing:
 gdal                       x86_64        3.0.4-11.el8                                 epel              269 k
 gdal-devel                 x86_64        3.0.4-11.el8                                 epel              203 k
 proj                       x86_64        6.3.2-4.el8                                  epel              2.0 M
 proj-devel                 x86_64        6.3.2-4.el8                                  epel               89 k
Installing dependencies:
 SuperLU                    x86_64        5.2.0-7.el8                                  powertools        190 k
 armadillo                  x86_64        10.8.2-1.el8                                 epel               44 k
 arpack                     x86_64        3.7.0-1.el8                                  epel              194 k
 atlas                      x86_64        3.10.3-8.el8.1                               baseos            6.5 M
 blas                       x86_64        3.8.0-8.el8                                  appstream         426 k
 cfitsio                    x86_64        3.47-1.el8                                   epel              577 k
 cmake-filesystem           x86_64        3.20.2-4.el8                                 appstream          43 k
 freexl                     x86_64        1.0.6-4.el8                                  epel               34 k
 gdal-libs                  x86_64        3.0.4-11.el8                                 epel              7.5 M
 geos                       x86_64        3.7.2-1.el8                                  epel              630 k
 giflib                     x86_64        5.1.4-3.el8                                  appstream          50 k
 gpsbabel                   x86_64        1.6.0-3.el8                                  epel              964 k
 hdf                        x86_64        4.2.14-5.el8                                 epel              651 k
 hdf5                       x86_64        1.10.5-4.el8                                 epel              2.1 M
 lapack                     x86_64        3.8.0-8.el8                                  appstream         8.6 M
 libaec                     x86_64        1.0.2-3.el8                                  powertools         38 k
 libbsd                     x86_64        0.11.7-2.el8                                 epel              120 k
 libdap                     x86_64        3.19.1-2.el8                                 powertools        680 k
 libgeotiff                 x86_64        1.5.1-1.el8                                  epel               99 k
 libgfortran                x86_64        8.5.0-16.el8_7                               baseos            643 k
 libgta                     x86_64        1.2.1-1.el8                                  epel               34 k
 libkml                     x86_64        1.3.0-24.el8                                 epel              379 k
 libmd                      x86_64        1.0.4-2.el8                                  epel               37 k
 libpq                      x86_64        13.5-1.el8                                   appstream         197 k
 libquadmath                x86_64        8.5.0-16.el8_7                               baseos            171 k
 libspatialite              x86_64        5.0.0-1.el8                                  epel              3.3 M
 libusb                     x86_64        1:0.1.5-12.el8                               baseos             41 k
 minizip                    x86_64        2.8.9-2.el8                                  epel              124 k
 netcdf                     x86_64        4.7.0-2.el8                                  epel              647 k
 ogdi                       x86_64        4.1.0-1.el8                                  epel              241 k
 openblas                   x86_64        0.3.15-4.el8                                 appstream         4.7 M
 openblas-openmp            x86_64        0.3.15-4.el8                                 powertools        4.9 M
 openblas-threads           x86_64        0.3.15-4.el8                                 appstream         4.9 M
 openblas-threads64_        x86_64        0.3.15-4.el8                                 powertools        4.8 M
 pcre2-utf16                x86_64        10.32-3.el8_6                                baseos            228 k
 poppler                    x86_64        20.11.0-5.el8                                appstream         1.1 M
 poppler-data               noarch        0.4.9-1.el8                                  appstream         2.1 M
 proj-datumgrid             noarch        1.8-6.3.2.4.el8                              epel              5.4 M
 python3-pip                noarch        9.0.3-22.el8.rocky.0                         appstream          19 k
 python3-setuptools         noarch        39.2.0-6.el8                                 baseos            162 k
 python36                   x86_64        3.6.8-38.module+el8.5.0+671+195e4563         appstream          18 k
 qt5-qtbase                 x86_64        5.15.3-1.el8                                 appstream         3.6 M
 qt5-qtbase-common          noarch        5.15.3-1.el8                                 appstream          40 k
 shapelib                   x86_64        1.5.0-1.el8                                  epel               80 k
 unixODBC                   x86_64        2.3.7-1.el8                                  appstream         453 k
 uriparser                  x86_64        0.9.7-1.el8                                  epel               70 k
 xerces-c                   x86_64        3.2.3-5.el8                                  epel              982 k
Enabling module streams:
 python36                                 3.6

Transaction Summary
===============================================================================================================
Install  51 Packages

Total download size: 71 M
Installed size: 309 M
Is this ok [y/N]:

後は、Yesということでインストール出来ると思います。

しかし、PowerToolsを常に許可しておいた方が良さそうですね。

ちなみに、インストール確認は以下で行えます。

# gdalinfo --version
GDAL 3.0.4, released 2020/01/28

GeoServerにVector Tile Extensionをインストールします。

前回インストールしたGeoServerに、Vector Tile ExtensionをインストールしてVector Tileに対応させようと思います。

※全部英語で探すのが面倒なので、メモを残しているだけです。

GeoServerのバージョンを確認する。

GeoServerのバージョンを確認します。

メニューから「GeoServerについて」をクリックします。

こんな感じで表示されます。
「バージョン 2.22-SNAPSHOT」と表示されているのが判るかと思います。
ということで、この環境は2.22なんですね。
まあ、確認方法って普通にこれなんですけどね。
初めてだと気が付かないんですよね(^^ゞ

Vector Tile Extensionを追加

プラグインですね。
ダウンロードします。

下記URLからバージョンなどを元に探します。

https://build.geoserver.org/geoserver/

私の目的とする対象は下記にありました。
https://build.geoserver.org/geoserver/main/ext-latest/

ここで、「geoserver-2.22-SNAPSHOT-vectortiles-plugin.zip」をダウンロードします。

解凍して、以下のフォルダへインストールします。
/usr/share/geoserver/webapps/geoserver/WEB-INF/lib

ということがこちらに書かれています。

https://docs.geoserver.org/latest/en/user/extensions/vectortiles/install.html

GeoServerを再起動したら、Extensionが有効になっています。

# systemctl restart geoserver

再度ログインし直すことになりますが、これで終わりです。

他にもExtensionがたくさんあるみたいです。

https://docs.geoserver.org/latest/en/user/extensions/index.html

面白そうなのがあったら適当にインストールしてみると良さそうですね。

確認方法ですが。。。。
Data→Layers→<適当なレイヤ>→Tile Cachingを開いてみると、Tile cache configurationのThe Image Formatsに以下が追加されています。

これで確認になります。

Install GeoServer on Rocky Linux 9

GeoServerをRocky Linux 9へインストールしようと思います。

インストール自体は非常に簡単ですが、たまたま事故ったのでメモを残しておきます。

事故と言いましても、たまたま最初にインストールしようしたバージョンが上手く動かなかっただけです。
バージョンを変更すると動いたので、多分、リリースでミスっていたんでしょう。

では早速始めます。

最新版を探してダウンロード

最新版は下記のURLで探すことになります。

基本的にはこちらのサイトに置かれていると思います。
https://sourceforge.net/projects/geoserver/files/GeoServer/

今回、上記のサイトから最新版をダウンロードしてインストールしたのですが、運悪くダメだったので、以下のサイトで確認しました。
https://build.geoserver.org/geoserver

結論としては、以下が最新版になると思います。
https://build.geoserver.org/geoserver/main/geoserver-main-latest-bin.zip

①はコピーが置かれているのかな?
②は本家の最新版が置かれているみたいですね。
③は最新版に紐付けされた状態が置かれている様です。

③の最新版で問題がある場合には、①や②を探して少し前のバージョンなどを探してみるのも良さそうだと感じました。

適当なディレクトリへ移動してダウンロードします。
私はこんな感じでやっています。

# mkdir /home/Packages/GeoServer
# cd /home/Packages/GeoServer
# wget https://build.geoserver.org/geoserver/main/geoserver-main-latest-bin.zip

解凍とインストール

まずはインストール先ディレクトリを作成します。

# mkdir /usr/share/geoserver

作成したディレクトリへ先ほどダウンロードしたファイルを解凍します。

# unzip -d /usr/share/geoserver/ geoserver-main-latest-bin.zip

GeoServerを動かすためのユーザを作成します。

# useradd -m -U -d /usr/share/geoserver -s /bin/false geoserver

更に、解凍したディレクトリの所有権を変更します。

# chown -R geoserver:geoserver /usr/share/geoserver

ファイアウォールとサービスの設定

GeoServerを公開するために、ファイアウォールの設定を行います。

# firewall-cmd --add-port=8080/tcp --permanent
# firewall-cmd --reload

サービスを登録します。
まず、サービスファイルを作成します。

# vi /usr/lib/systemd/system/geoserver.service

中身はこんな感じです。

# more /usr/lib/systemd/system/geoserver.service
Description=GeoServer Service
After=network.target

[Service]
Type=simple

User=geoserver
Group=geoserver

Environment="GEOSERVER_HOME=/usr/share/geoserver"

ExecStart=/usr/share/geoserver/bin/startup.sh
ExecStop=/usr/share/geoserver/bin/shutdown.sh

[Install]
WantedBy=multi-user.target

GeoServerを起動

GeoServerを起動します。

# systemctl daemon-reload
# systemctl enable --now geoserver.service
もしくは。。。
# systemctl start geoserver.service
# systemctl enable geoserver.service

こんな感じですね。

動作確認

以下のURLへアクセスしてみましょう。
http://<ドメイン>:8080/geoserver
※<ドメイン>には対象サーバのドメインを指定してください。

こんな感じの画面が表示されれば、GeoServerは正常に動作しています。

デフォルトのログインIDとパスワードは以下の通りです。
ログインID:admin
パスワード:geoserver

公開された状態だと、デフォルトのIDとパスワードは危険なので、早々に変更されると良いでしょう。

基本的なインストールは以上です。
Geo Lifeをお楽しみください。

次回は、GeoServerをVector Tileに対応させます。

CentOS 9にpostgreSQL 14を入れる!postGIS 3.2も入れる!

以前に自分でインストールしたやり方を参考に、インストールを試みようとしてみたのですが、やはり少し変わったパッケージをLinuxへインストールするには何かが引っ掛かります(^^;

ということで、以下の環境にインストールを行っていきます。

OS:Rocky Linux 9
インストール対象:postgreSQL 14 + postGIS 3.2

PostgreSQL インストール

前回学んだ本家サイトからインストール方法を確認します。

https://www.postgresql.org/download/linux/redhat/

こちらのサイトにあるインストール方法を真似するだけです。

以下に提示されたコマンドを記します。

sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo dnf -qy module disable postgresql
sudo dnf install -y postgresql14-server
sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
sudo systemctl enable postgresql-14
sudo systemctl start postgresql-14

順番に説明しておきます。

リポジトリを追加

リポジトリを追加します。

dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm

既存のPostgreSQLを無効にする。

インストールしていない時には不要の作業となります。
過去にPostgreSQLをインストールしている場合のも必要な作業になります。

ある意味、トランザクション対象のパッケージを維持したまま、本体だけを無効にするという感じなんでしょうかね。
#違うところで参考になりそうです。

dnf -qy module disable postgresql

PostgreSQLをインストール

PostgreSQLをインストールします。

dnf install -y postgresql14-server

インストールはこれで完了です。

起動設定

自動で起動するように設定します。

/usr/pgsql-14/bin/postgresql-14-setup initdb
systemctl enable postgresql-14
systemctl start postgresql-14

インストールとPostgreSQLの起動は完了しました。

PostGIS インストール

ここからが課題のPostGISインストール作業です。

まず、インストールしたPostgreSQLのバージョンに対応するPostGISのバージョンを下記のサイトで確認します。

https://trac.osgeo.org/postgis/wiki/UsersWikiPostgreSQLPostGIS

対応表からインストール対象のPostGISを確認します。
今回は、PostGIS 3.2を選択することにしました。

システムのリポジトリに含まれるPostGISのバージョンを確認します。

dnf list | grep -i postgis
postgis32_13.x86_64                                       3.2.2-1.rhel9                                     pgdg13
postgis32_13-client.x86_64                                3.2.2-1.rhel9                                     pgdg13
postgis32_13-devel.x86_64                                 3.2.2-1.rhel9                                     pgdg13
postgis32_13-docs.x86_64                                  3.2.2-1.rhel9                                     pgdg13
postgis32_13-gui.x86_64                                   3.2.2-1.rhel9                                     pgdg13
postgis32_13-utils.x86_64                                 3.2.2-1.rhel9                                     pgdg13
postgis32_14.x86_64                                       3.2.2-1.rhel9                                     pgdg14
postgis32_14-client.x86_64                                3.2.2-1.rhel9                                     pgdg14
postgis32_14-devel.x86_64                                 3.2.2-1.rhel9                                     pgdg14
postgis32_14-docs.x86_64                                  3.2.2-1.rhel9                                     pgdg14
postgis32_14-gui.x86_64                                   3.2.2-1.rhel9                                     pgdg14
postgis32_14-utils.x86_64                                 3.2.2-1.rhel9                                     pgdg14

今回インストールするバージョンは、postgis32_14であることが確認出来ますので、以下のコマンドでインストールを試みます。

dnf install postgis32_14

トランザクション関連のエラーが大量。。。ということで、問題の解決を行います。

dnf install epel-release
dnf --enablerepo=crb install flexiblas-netlib64
dnf install postgis32_14

これでインストール出来ました!

環境によって若干の違いがあるかと思いますが、参考になるかな?

以下のサイトが役に立ちました。
https://rockylinux.pkgs.org/9/rockylinux-crb-aarch64/flexiblas-netlib64-3.0.4-8.el9.aarch64.rpm.html

深くまで見ないといけないので、面倒ですが。。。

deck.glをCentOSで動かしてみる。

はじめに

野暮用でビックデータを可視化することになってしまい、今迄はOpenLayersをゴリゴリっとしてたのですが、MVT使っても厳しかろうというところから、WebGL関連で可視化を目指すことにしました。

※最終的には、deck.glとMVTの合わせ技に行き着きました。
※お金があるならというか、従量課金制が許されればMapbox GL JSとMVTの組み合わせなんでしょうね。

何にしようかと考えていたところ、UBER社が提供しているdeck.glが気になり、チョロッとお試しをdeck.glがベースとなっているkepler.glでやってみたところ、ええ感じで動くじゃないですか!

そんじゃあ、deck.glで実装決定!ということから、まずはdeck.glの環境構築に取りかかりました。

kepler.glについては、何かの機会にお話するとして(某ローカルコミュニティで発表予定)、今回はdeck.glの実装のみのお話を簡単に記録します。

対象サーバはWindowsじゃなく今回もCentOS 7です。
CentOS 8が2〜3日前に公開されたので、そこからCentOS 8で実相も考えたのですが、先の某ローカルコミュニティでの発表が来週に控えているので、既に稼働中のCentOS 7上で実装することにしました。

ちなみに、こんなこと書いていますが、実際にCentOS 7で実装してみて思ったのですが、CentOS 8で実装したとしても何も異る点は無いはずです。
理由は、実相はnode.js上で行うため、node.jsの実装方法自体が変わらない限り変更は無いということです。

参考にさせて頂いたサイトはこちらになります。

https://qiita.com/keijipoon/items/92d9551930fe52d6c90a

そろそろ、この手の記事をQiitaに書いた方が楽なんじゃないか?とか、そっちの方が見てもらえるんじゃないかとか思ってはいるのですが、趣味なんです(^^;

node.jsのインストール

node.jsのインストールは先日こちらの記事に記していますので、そのまんま実装しました。
と言うことで、参照してください。

node.jsを既にインストールされている方は、無視して次の作業を行ってください。

luma.glをインストール

コマンドライン上で以下のコマンドを実行します。

# npm install --save luma.gl

終わりです。

deck.glのインストール

こちらのサイトからダウンロードしてきます。

deck.glのインストールと言っても、取り敢えずダウンロードして、展開するだけです。

https://github.com/uber/deck.gl

適当なフォルダへ解凍します。

サンプルプログラムを動かしてみる。

なんか既にインストール終わっているみたいです。
サンプルプログラムを幾つか試しに動かしてみようと思ったのですが(2分程)、実際に動くのは参考にさせて頂いたサイトでも紹介されていたサンプルだけでした。

ということで、ほぼ同じ感じの内容ですが、以下のフォルダへ移動します。
(解凍したdeck.glの中にあります。)

# cd /xxxxx/deck.gl/deck.gl-master/examples/website/3d-heatmap

後は、そのまんま実行するだけ。

# npm start

終わりです。
環境さえ整っていれば、Windowsで実装するのと何も変わりませんでした。
という結果です。逆に、Linuxの方が楽じゃね?

GeoTiff 座標系変換と結合

前提

国土地理院の地理院地図やGoogle Mapで提供されている航空写真を用いずに、独自に入手した衛星画像や航空写真を用いて広範囲の画像を表示させようとした時、座標系の変換と画像の結合が必要となります。

一般に入手される航空写真などで提供されている画像の座標系はJGD2011など、Web上では使い難い座標系を用いている場合が多く見受けられます。
その為、多くの場合には、座標系を変換する必要が生じるのです。
本資料では、この作業を行うための環境について説明し、衛星画像や航空写真などを用いて、座標系変換を行ってから画像を結合する以下の手順について説明します。

  1. 環境準備
  2. 画像の座標系を確認する。
  3. 座標系を変換する。

では順番に進めましょう。

環境準備

環境準備と言いましても、インストール方法については割愛します。
既に、本サイトでも紹介をしているOSGeo4Wをベースにお話しを進めます。
ただし、衛星画像や航空写真を結合する作業を行うには、正直申し上げてWindows環境はあまり適している環境とは言えません。
その理由としては以下が考えられるでしょう。

  • コマンドライン(シェル)が使い難い
  • 元々メモリの消費が激しく、大量のメモリを消費する作業では使い勝手が悪い。

数枚の画像を扱う程度であれば、GISツール(QGISなど)を用いて、ちまちま行うという方法もあるでしょう。パッチ処理などでまとめて出来るよ!という方もいらっしゃるとは思いますが。。。無視!

ということで少し作業がやり易いように1つツールを入れて作業を行っています。
また、一部の操作に関しては、Linux上で作業を行うかも知れません。

環境としては、以下の環境を準備しました。

Windows 10
OSGeo4W (GDALが入っていればOK!)
 参考情報:https://trac.osgeo.org/osgeo4w/wiki/OSGeo4W_jp
 過去の参考情報:https://tech.godpress.net/?p=368
Gow
 参考情報:https://ja.wikipedia.org/wiki/Gow

実際の作業ではGDALを使用します。
GDALのみをインストールした環境を準備されている方は、その環境を用いてもOKです。(って、そんな環境造っている人が、このサイトを参考にされるとは思いませんが。。。)

画像の座標系を確認する

OSGeo4Wをインストールしている場合、QGISで確認しちゃおう!という方は、GUI上でプロパティ確認で終わっちゃいますね。
でも今回は、コマンドライン操作が基本となりますので、コマンドで対処します。

Gowをインストールしていると、Linuxと同じような感覚でコマンドラインの操作が行える様になります。

なんでコマンドラインで作業を行うかと言いますと、入手した画像が全て同じ座標系であれば、あまり大したことではないのですが、時折、異なる座標系の画像を提供されて結合する場合があり、全ての画像を同じ座標系に統一しないと画像を結合した時にズレが生じて隙間が発生するのです。
間違って座標変換を行わないためには、事前に元画像の座標系を確認しておく必要があるためです。
では、実際のコマンド操作に関して説明します。

以下のコマンドは1つのファイルに対して座標系の確認を行うためのコマンドです。

# gdalinfo <対象ファイル> | grep EPSG
Files: <対象ファイル>
        AUTHORITY["EPSG","9001"]]]

複数のファイルに対し一括して確認を行う場合は、対象ファイルがあるフォルダーへ移動してから、以下のコマンドを実行します。

# gfind . -name *.tif | xargs  -n 1 gdalinfo  | grep EPSG

「gfind」コマンドは、Linuxの「find」コマンドをGowが実装したコマンドになります。

最初の引数「.」は対象となるフォルダーを指定しています。
対象フォルダーへ移動せずに、直接フォルダーを指定しても構いません。

-name *.tif :対象となるファイル名を指定します。ここではワイルドカードを用いた指定を行いました。全てのtifファイルが対象となります。

「|」で次のxargsコマンドへ出力結果を引き渡しています。
xargsコマンドでは-n 1とすることで、ファイル名を一つづつ処理します。
gdalinfo <ターゲットファイル>がファイル数分処理されます。

最後に、grepで必要な行だけを取得しています。

座標系を変換する

今回は、以下のフォルダー構成を想定して作業を進めます。
<作業フォルダー>—<EPSG102617>
         |
                                   +<EPSG4326>
コマンド操作は、<作業フォルダー>で行います。
<EPSG102617>は元の画像が保存されているフォルダーです。
先程の確認で座標系がEPSG:9001となっていましたが、内部ではEPSG:102617が正式な座標系となるためこの様にしています。

<EPSG4326>は座標変換後の画像ファイルを出力するためのフォルダーです。

既にお分かりのことと思いますが、本資料では、EPSG:102617(9001)→EPSG:4326の座標系変換を行います。

少し長くなりますが、以下のコマンドを実行してみましょう。

# gfind EPSG102617 -name *.tif -printf "%f\n" | xargs -Ixxx -n 1 gdalwarp -s_srs "EPSG:102617" -t_srs "EPSG:4326" -srcnodata "255 255 255" -dstnodata "255 255 255" EPSG102617\xxx EPSG4326\xxx

gfindコマンドで対象ファイルを特定し、そのファイル名だけを抜き出し、gdalwarpコマンドへ引き渡しています。

gdalwarpコマンドでは、-s_srsで元の座標系(102617)を-t_srsで指定される座標系(4326)へ変換を行うことを指定しています。
-srcnodataでは、元画像の中にある不要なデータのカラーコードを指定しています。同様に-dstnodataで出力時のノーデータを指定しています。

-srcnodataや-dstnodataを指定しなかった場合、画像の繋ぎ目に隙間が生じ、黒く筋が入ってしまうと思います。
座標変換に伴う歪により生じた隙間が黒色で塗潰され、それが隙間となってなって見えている状態になります。

これを除外するために、-srcnodataと-dstnodataを用いて不要なデータ部分を見えなくしているのです

余談・・・画像結合に関して

これだけの画像を準備したのですから、画像結合の話を少しだけ。。。
実は、画像結合してタイル画像を作成する予定だったのですが、マシンの不調とその必要性が無くなってしまったので、余談として記載します。

画像の結合にはgdal_mergeを使用します。

コマンドはこんな感じです。

-o OUTPUT.tif -ot Float32 -co COMPRESS=LZW -co BIGTIFF=YES 対象ファイル1 対象ファイル2・・・・

-a_nodata “255 255 255″を追加した方が良さそうに思います。
環境変数GDAL_CHACHEMAXの値を出来るだけ大きくすると良さそうです。
ちなみに、gdalbuildvrtで仮想ファイルを作成して作業を行う方が効率良いとも思います。

こんな感じでしょうか?
タイル化などにご興味のある方は、別途ご連絡ください。

QGIS でラインに対して平行なラベルを付けるには

QGISでラインに平行なラベルを付ける

QGIS 3.4が発表されているのに、今更2.18について何で書いてるのか・・・?という疑問は無視して、QGIS 2.xでラインに平行なラベルを書くための設定を説明します。

 

デフォルトの表示

QGISでラインに対し平行なラベルを表示させようとすると、回転角が上手く計算できずに困ったことはありませんか?
私は、いつも悩みます。
2点で構成された直線aに水平なラベルを描くのですが、回転角によって表示にバラツキが生じます。

デフォルトでは、こんな感じに表示されます。


図1 デフォルト表示

図1に示した表示はデフォルトでの表示例です。
一見、回転角に合わせて表示されている様にも見えますが、線分を360度回転させた時に必ず上もしくは左に表示されています。
今回の目的は、線分の始点(P1)と終点(P2)が反転した場合には、反転して表示して欲しいので、目的とは合いません。

この現象は、QGIS 3.xでも同じようになります。

ちなみに、図1の線分に平行して表示されている数値はP1→P2に向けた線分の回転角になります。

線分の回転角は以下の計算で算出しています。

【数式1】

degrees( azimuth( point_n($geometry,1),point_n($geometry,2)))

 

線分の回転に合わせてラベルを回転させる

ここから、線分の回転角に合わせてラベルを回転させる設定を施します。

 

図2 ラベルの配置設定

ラベルの配置設定で以下の項目を設定します。
①「配置」→「許容される位置」→「ラインの方向に依存した位置」を指定します。
②回転の角度を指定します。
回転の角度は以下に示す数式を指定します。

【数式2】

360-degrees(azimuth( point_n(  $geometry ,1), point_n(  $geometry ,2)))+90

数式1で示した計算で表示出来れば良いのですが、どうも線分の回転角とラベルの回転角は、回転方向が異なっている様です。
その為、「360-」とすることで、回転角を逆方向にしています。
更に、このままですと線分に対して垂直にラベルが表示されてしまうため、最後に「+90」をすることで水平な角度へ変換しています。

QGIS 3.xでは、この計算が異なります。
「360-」を除いた以下の数式になります。

【数式3】

degrees(azimuth( point_n(  $geometry ,1), point_n(  $geometry ,2)))+90

 

次に、レンダリングの設定を変更します。

図3 ラベルのレンダリング設定

ラベルの「レンダリング」で「ラベルを逆さまに表示する」を「回転が指定されている場合」に設定します。

設定は以上になります。

結果は以下の通りです。

図4 結果表示

P1とP2が逆の場合は、応用問題ですから適当に数式を変更するなどの対処が必要となるかも知れませんが、概ねこれで参考情報にはなるでしょう。

QGIS2.18と3.0.1のインストールした環境設定一覧

QGIS3.0.1と2.18を共存させた結果のインストーラのパッケージ選択画面を公開しておきます。
私の個人環境なので、他の人が必ずしも同じになるとは限りません。参考情報です。

トライされる方は、前の記事は以下です。

QGIS 3.xをインストールしてみた。QGIS 2.18と共存。

通常不要なものも含まれていると思いますので、ご自身でご判断下さい。

 

QGIS 3.xをインストールしてみた。QGIS 2.18と共存。

背景

QGIS 3.0がリリースされて、OSGeo4Wがインストールされていない綺麗な環境にインストールするのは、何も気にせずにインストール出来たのですが、QGIS 2.18がインストールされている環境にインストールしようとしたら、ちょっとだけ引っかかったので、記録に残します。

既に、QGIS 2.18.xがインストールされている環境を前提に進めます。
インストールを行った環境はWindows 10です。

追記:どうも、QGIS 2.18.xからだと上手く3.0.1をインストール出来たのですが、2.12からだとNGでした。そこで、私の環境設定内容を下記に貼り付けておきます。

QGIS2.18と3.0.1のインストールした環境設定一覧

はじめに

私は、QGIS 2.18.xを使用しており、いきなりQGIS 3.xへ更新するには抵抗がありました。使えなくなるプラグインなどがあり、仕事で使うにはちょっと困ります。
そこで、QGIS 2.18.xを残しつつ、QGIS 3.xをインストールしたいと思いました。

と言うことで、以下ではQGIS 2.18.xを残しながら、QGIS 3.xをインストールしてどちらも使用できる環境を構築します。
ただし、OSGeo4Wを使用していることを前提とします。

準備

準備と言いましても、特に何をダウンロードしてとか必要ありません。
新規でインストールされる方は、下記URLより環境に応じたインストーラをダウンロードしてください。

https://qgis.org/ja/site/forusers/download.html

 

OSGeo4WのSetupを起動します。

ここで、「アドバンスインストール」を選択します。

「インターネットからのインストール」で次へ

次も特に気にせず次へ

更に、次へ。

まだまだ次へ。

 

こいつも次へ・・・・楽々インストール?

やっと来ました!ここから本番です\(^o^)/

「Desktop」の前にある「+」ボタンをクリックして展開します。

ここでは既に3.xがインストールされた状態の画面を示していますが、上記の状態になる様に、インストール対象を選択します。

具体的には、以下の内容になります。

qgis:QGIS Desktop
qgis-dev
qgis-dev-pdb   <==必要ないかも?
qgis-full
qgis-full-dev
qgis-ltr            <==これは2.18を残すためです。それ以前のバージョンを使っている方は、更新されてしまいます。
qgis-ltr-full
qgis-rel-dev
qgis-rel-dev-pdb

これ以外は気にしないで大丈夫です。
上記の中にも不要なものが含まれているかも知れませんが、私の環境ではこんな感じでした。
間違って、3.0.0-4をインストールすると、上手く動作しませんでした。

これで、設定が終わりましたので、次へ進みます。

後は勝手にインストールが進みます。

!!!!!!!!!!!
ここで問題が!!!!!!!
!!!!!!!!!!!

OSGeo4WのSetupでインストールすると、qgis(Desktop)が最初は3.0.0-4しかインストール出来ません。
それが原因でQGIS 3.0を起動してもエラーで落ちる現象が確認できました。

解決方法は、再度、上記のインストール方法を繰り返すと、今度は3.0.1-1がインストール出来る様になります。
これでインストールし直すと、正常に起動出来る様になるみたいです。

Windowsメニューから両方のバージョンのQGISが起動することを確認してみてください。
一つの環境だけしか試していないので、大丈夫かな?

地図タイルの404エラーで文句を言われた時の対策

地図タイルを扱っていると、セキュリティ関係の方から、こんなことを言われることがある。

「大量のアクセスが発生していて、エラーがたくさん出ています。」
「攻撃されているんじゃないか?」

待て!
アクセスしている方向は、内部から外部への閲覧であり、そのエラーは外部のサーバへアクセスして、外部のサーバに存在しないファイルがたくさんあるということであり、方向が逆だろう!

と、まあこんなことです。

Web地図では、タイル配信されている場合に必要な領域だけタイル画像を作成ます。
例えば、日本の領域だけに限った地図タイルを作成した場合、日本以外の地域におけるタイル画像は存在しない為エラーが発生します。

地理院地図の西之島関係のレイヤを表示してみると、ほとんど404エラーが出っぱなしですw

プログラム上で404エラーは無視する設定を行っていますので、ブラウザで見る限りにおいてエラーは見掛け上発生していませんが、デバッガーで見てみると404エラーが大量発生しているのが解ります。

本題に戻ります。
セキュリティ担当者の勘違いも甚だしいと怒りを感じつつ、「このどド素人が!」と憤慨しても相手は遠い存在であり、面倒ですよね。

こんなこと遣りたくないんですよ。
理解してもらえる人はやらない方が良いのですが・・・・
でも、止むを得ず対策を講じなければならない時があったら、以下を参考にしてください。

画像が無いところは、透過状態な訳ですよね。
透過状態のファイルを無い時に送ってあげれば良いんですよね。

ということで、まずは透過画像を作成しました。
以下の画像を作成しました。

←ここに画像があります。

解らない人のために、ここからダウンロードできます。

そして、公開しているデータの存在しない番号に名前を変えてコピーしまくる・・・・・・嘘です(-_-メ)

次に、以下のファイルを作成します。

.htaccess

ErrorDocument 404 https://hogehoge.net/webmap_dir/alpha_plane.png

webmap_dirは、実際にalpha_plane.pngを保存した場所を指定してください。
ドメインは必ず指定してください。ドメインを指定しないと、代替画像へのリダイレクトを行いますが、404エラーは発生してしまいます。
ドメインを指定すると404エラーは発生しなくなります。

この.htaccessファイルを地図タイルのあるディレクトリの最上部においてあげることで404エラーを回避することが出来ます。