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

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

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

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

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

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

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

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

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

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

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が有効になっています。

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

他にも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

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

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

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

解凍とインストール

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

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

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

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

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

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

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

中身はこんな感じです。

GeoServerを起動

GeoServerを起動します。

こんな感じですね。

動作確認

以下の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/

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

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

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

リポジトリを追加

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

既存のPostgreSQLを無効にする。

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

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

PostgreSQLをインストール

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

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

起動設定

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

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

PostGIS インストール

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

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

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

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

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

今回インストールするバージョンは、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をインストール

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

終わりです。

deck.glのインストール

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

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

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

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

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

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

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

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

終わりです。
環境さえ整っていれば、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つのファイルに対して座標系の確認を行うためのコマンドです。

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

「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コマンドで対象ファイルを特定し、そのファイル名だけを抜き出し、gdalwarpコマンドへ引き渡しています。

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

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

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

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

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

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

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

-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】

 

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

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

 

図2 ラベルの配置設定

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

【数式2】

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

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

【数式3】

 

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

図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

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

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