「GDAL」タグアーカイブ

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

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で仮想ファイルを作成して作業を行う方が効率良いとも思います。

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

OpenSceneGraphをLinuxへインストールする。

今回は、CentOS 7へOpenSceneGraphをインストールする手順について記載する。

ソースの取得

まず、ソースをダウンロードする。
以下のサイトから最新のソースを取得した。

https://www.openscenegraph.org/index.php/download-section/developer-releases

Stable Releaseを使用することも考えたのだが、しばらく更新がないので最新盤を入手した。

Stable Releaseを使用することも考えたのだが、しばらく更新がないので最新盤を入手した。

ダウンロードする方法は、まず適当なディレクトリへ移動して、以下のコマンドを実行する。

svn co https://svn.openscenegraph.org/osg/OpenSceneGraph/tags/OpenSceneGraph-3.5.1 OpenSceneGraph

OpenSceneGraphディレクトリ下にソースがダウンロードされるので、この後コンパイルなどを行う。

ツールの準備

gccなど基本的なツールはインストール済みであることを前提とする。
まず必要となるのが、cmakeである。
以下のコマンドを実行しcmakeをインストールする。

# yum install cmake
Loaded plugins: fastestmirror, langpacks, nvidia
Loading mirror speeds from cached hostfile
 * base: ftp.riken.jp
 * elrepo: ftp.ne.jp
 * extras: ftp.riken.jp
 * updates: ftp.riken.jp
Resolving Dependencies
--> Running transaction check
---> Package cmake.x86_64 0:2.8.12.2-2.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

======================================================================
 Package      Arch          Version                 Repository   Size
======================================================================
Installing:
 cmake        x86_64        2.8.12.2-2.el7          base        7.1 M

Transaction Summary
======================================================================
Install  1 Package

Total download size: 7.1 M
Installed size: 27 M
Is this ok [y/d/N]:

間違いが無いことを確認して「y」を押して次へ進む。(以降説明は省略する。)

必要なのはこれだけです。
その他に必要なライブラリ等はこの後で適宜インストールを行う。

ちょっと待った!!

OpenSceneGraphは色んなパッケージを使うため、標準のリポジトリだけではすべてをインストールすることが出来ない。
そこで、EPELリポジトリを頻繁に使うことになる。
作業に入る前にEPELリポジトリを入れておくと便利だ!

入れ方は色々とあるんだけど、長ったらしい名前は苦手なのでyumで入れちゃいましたw良いのだろうか?

yum install epel-release

これ以外と便利なんだけど、なかなか紹介さていない。

コンパイルの前準備(cmake)

OpenSceneGraphのディレクトリへ移動して、cmakeを実行する。
README.txtに基本的な手順は記載されている。

# cd OpenSceneGraph

# cmake .
-- The C compiler identification is GNU 4.8.5
-- The CXX compiler identification is GNU 4.8.5
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Looking for include file pthread.h
-- Looking for include file pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE 
-- Looking for XOpenDisplay in /usr/lib64/libX11.so;/usr/lib64/libXext.so
-- Looking for XOpenDisplay in /usr/lib64/libX11.so;/usr/lib64/libXext.so - found
-- Looking for gethostbyname
-- Looking for gethostbyname - found
-- Looking for connect
-- Looking for connect - found
-- Looking for remove
-- Looking for remove - found
-- Looking for shmat
-- Looking for shmat - found
-- Looking for IceConnectionNumber in ICE
-- Looking for IceConnectionNumber in ICE - found
-- Found X11: /usr/lib64/libX11.so
-- Found OpenGL: /usr/lib64/libGL.so 
-- Performing Test GL_HEADER_HAS_GLINT64
-- Performing Test GL_HEADER_HAS_GLINT64 - Success
-- Performing Test GL_HEADER_HAS_GLUINT64
-- Performing Test GL_HEADER_HAS_GLUINT64 - Success
-- Found Freetype: /usr/lib64/libfreetype.so (found version "2.4.11") 
-- Found JPEG: /usr/lib64/libjpeg.so 
-- Could NOT find Jasper (missing: JASPER_LIBRARIES JASPER_INCLUDE_DIR) 
-- Found LibXml2: /usr/lib64/libxml2.so (found version "2.9.1") 
-- Found ZLIB: /usr/lib64/libz.so (found version "1.2.7") 
-- Could NOT find GDAL (missing: GDAL_LIBRARY GDAL_INCLUDE_DIR) 
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.27.1") 
-- checking for module 'gta'
-- package 'gta' not found
-- Could NOT find CURL (missing: CURL_LIBRARY CURL_INCLUDE_DIR) 
-- Could NOT find GStreamer (missing: GSTREAMER_INCLUDE_DIRS GSTREAMER_LIBRARIES GSTREAMER_VERSION GSTREAMER_BASE_INCLUDE_DIRS GSTREAMER_BASE_LIBRARIES GSTREAMER_APP_INCLUDE_DIRS GSTREAMER_APP_LIBRARIES GSTREAMER_PBUTILS_INCLUDE_DIRS GSTREAMER_PBUTILS_LIBRARIES) 
-- Found GLIB: /usr/include/glib-2.0;/usr/lib64/glib-2.0/include (found version "2.46.2") 
-- Could NOT find SDL2 (missing: SDL2_LIBRARY SDL2_INCLUDE_DIR) 
-- Could NOT find SDL (missing: SDL_LIBRARY SDL_INCLUDE_DIR) 
-- checking for module 'cairo'
-- found cairo, version 1.14.2
-- checking for module 'poppler-glib'
-- package 'poppler-glib' not found
-- checking for module 'librsvg-2.0>=2.35'
-- package 'librsvg-2.0>=2.35' not found
-- checking for module 'gtk+-2.0'
-- package 'gtk+-2.0' not found
-- checking for module 'gtkglext-x11-1.0'
-- package 'gtkglext-x11-1.0' not found
-- Looking for Q_WS_X11
-- Looking for Q_WS_X11 - found
-- Looking for Q_WS_WIN
-- Looking for Q_WS_WIN - not found
-- Looking for Q_WS_QWS
-- Looking for Q_WS_QWS - not found
-- Looking for Q_WS_MAC
-- Looking for Q_WS_MAC - not found
-- Found Qt4: /usr/bin/qmake-qt4 (found version "4.8.5") 
-- Found PNG: /usr/lib64/libpng.so (found version "1.5.13") 
-- Could NOT find TIFF (missing: TIFF_LIBRARY TIFF_INCLUDE_DIR) 
-- Performing Test _OPENTHREADS_ATOMIC_USE_GCC_BUILTINS
-- Performing Test _OPENTHREADS_ATOMIC_USE_GCC_BUILTINS - Success
-- Performing Test _OPENTHREADS_ATOMIC_USE_MIPOSPRO_BUILTINS
-- Performing Test _OPENTHREADS_ATOMIC_USE_MIPOSPRO_BUILTINS - Failed
-- Performing Test _OPENTHREADS_ATOMIC_USE_SUN
-- Performing Test _OPENTHREADS_ATOMIC_USE_SUN - Failed
-- Performing Test _OPENTHREADS_ATOMIC_USE_WIN32_INTERLOCKED
-- Performing Test _OPENTHREADS_ATOMIC_USE_WIN32_INTERLOCKED - Failed
-- Performing Test _OPENTHREADS_ATOMIC_USE_BSD_ATOMIC
-- Performing Test _OPENTHREADS_ATOMIC_USE_BSD_ATOMIC - Failed
-- Looking for pthread_yield
-- Looking for pthread_yield - not found
-- Looking for sched_yield
-- Looking for sched_yield - found
-- Looking for pthread_setconcurrency
-- Looking for pthread_setconcurrency - not found
-- Looking for pthread_getconcurrency
-- Looking for pthread_getconcurrency - not found
-- Looking for pthread_setaffinity_np
-- Looking for pthread_setaffinity_np - not found
-- Performing Test HAVE_THREE_PARAM_SCHED_SETAFFINITY
-- Performing Test HAVE_THREE_PARAM_SCHED_SETAFFINITY - Success
-- checking for module 'xrandr'
-- found xrandr, version 1.4.2
-- Looking for gethostbyname in nsl
-- Looking for gethostbyname in nsl - found
-- Looking for socket in socket
-- Looking for socket in socket - not found

The build system is configured to install libraries to /usr/local/lib64
Your applications may not be able to find your installed libraries unless you:
 set your LD_LIBRARY_PATH (user specific) or
 update your ld.so configuration (system wide)
You have an ld.so.conf.d directory on your system, so if you wish to ensure that
applications find the installed osg libraries, system wide, you could install an
OpenSceneGraph specific ld.so configuration with:
 sudo make install_ld_conf

-- Configuring done
-- Generating done
-- Build files have been written to: /home/packages/OpenSceneGraph
#

最初の方で、「not found」とか「Failed」とかいっぱい出ている。
これから、それらを取り除いていく作業を行う。

出来れば、2つ以上のコマンドライン操作が出来る状態にして、上記のコメントを観ながらインストール作業を続ける。

手始めに以下のエラーを取り除く!

-- Could NOT find CURL (missing:  CURL_LIBRARY CURL_INCLUDE_DIR)

コマンドラインでcurlコマンドは操作可能だと思うのだが???という時には、こんな感じで探してみると見付かる。

# yum list | grep curl
curl.x86_64                                7.29.0-35.el7.centos        @base    
libcurl.x86_64                             7.29.0-35.el7.centos        @base    
python-pycurl.x86_64                       7.19.0-19.el7               @base    
libcurl.i686                               7.29.0-35.el7.centos        base     
libcurl-devel.i686                         7.29.0-35.el7.centos        base     
libcurl-devel.x86_64                       7.29.0-35.el7.centos        base     

上の例では、curl.x86_64とlibcurl.x86_64とpython-pycurl.x86_64はインストールされている。
libcurl-devel.x86_64はまだインストールされていない。

概ねこれらのメッセージで表示さている内容は、「-devel」が付いたパッケージがインストールされていないことが多い。

いつもの様にyumでインストールを行う。

# yum -y install libcurl-devel
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: www.ftp.ne.jp
 * extras: www.ftp.ne.jp
 * updates: www.ftp.ne.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ libcurl-devel.x86_64 0:7.29.0-35.el7.centos を インストール
--> 依存性解決を終了しました。

依存性を解決しました

=================================================================================================
 Package                 アーキテクチャー バージョン                        リポジトリー    容量
=================================================================================================
インストール中:
 libcurl-devel           x86_64           7.29.0-35.el7.centos              base           299 k

トランザクションの要約
=================================================================================================
インストール  1 パッケージ

総ダウンロード容量: 299 k
インストール容量: 623 k
Downloading packages:
libcurl-devel-7.29.0-35.el7.centos.x86_64.rpm                             | 299 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : libcurl-devel-7.29.0-35.el7.centos.x86_64                        1/1 
  検証中                  : libcurl-devel-7.29.0-35.el7.centos.x86_64                        1/1 

インストール:
  libcurl-devel.x86_64 0:7.29.0-35.el7.centos                                                    

完了しました!

こんな感じの作業が暫く続く。。。。。

==============
2017-09-09追記:
下記URLにyumでインストールするパッケージをまとめました。
少し楽になるはずです。
https://tech.godpress.net/?p=778
==============

次は、Jasperが無いと言われているので、

# yum -y install jasper jasper-devel
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: www.ftp.ne.jp
 * extras: www.ftp.ne.jp
 * updates: www.ftp.ne.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ jasper.x86_64 0:1.900.1-29.el7 を インストール
---> パッケージ jasper-devel.x86_64 0:1.900.1-29.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

=================================================================================================
 Package                  アーキテクチャー   バージョン                   リポジトリー      容量
=================================================================================================
インストール中:
 jasper                   x86_64             1.900.1-29.el7               base              24 k
 jasper-devel             x86_64             1.900.1-29.el7               base             375 k

トランザクションの要約
=================================================================================================
インストール  2 パッケージ

総ダウンロード容量: 398 k
インストール容量: 676 k
Is this ok [y/d/N]: y
Downloading packages:
(1/2): jasper-1.900.1-29.el7.x86_64.rpm                                   |  24 kB  00:00:00     
(2/2): jasper-devel-1.900.1-29.el7.x86_64.rpm                             | 375 kB  00:00:00     
-------------------------------------------------------------------------------------------------
合計                                                             1.5 MB/s | 398 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : jasper-1.900.1-29.el7.x86_64                                     1/2 
  インストール中          : jasper-devel-1.900.1-29.el7.x86_64                               2/2 
  検証中                  : jasper-devel-1.900.1-29.el7.x86_64                               1/2 
  検証中                  : jasper-1.900.1-29.el7.x86_64                                     2/2 

インストール:
  jasper.x86_64 0:1.900.1-29.el7               jasper-devel.x86_64 0:1.900.1-29.el7              

完了しました!

コメントでは、「Jasper」となっているが、探してみると小文字だったりすることもあったり、幾度か以下のコマンドを実行して探していく。

yum list | grep -i xxxxx
(「xxxxx」には対象となるパッケージ名称を指定する。)

実際に入れたパッケージは以下の通り。

yum -y  install gstreamer1*

よく見ると、GDALも入っている。
GDALはEPELリポジトリが必要なので、先に説明をしていますがリポジトリの登録をお忘れなく。

GDALのインストールは、他でも使用する可能性があるので真面目にインストールすることにする。(何時もまじめじゃないのか?)
そんなことはどうでも良いんだけど、以前にGDALをCentOS 7にインストールした記録があるのでそちらを参考にする。

CentOS 7にGDALとprojを入れる。(https://tech.godpress.net/?p=569)

簡単にコマンドだけ

yum -y install proj proj-devel proj-epsg
yum -y install gdal gdal-devel

と、ここまでは比較的順調なのです。
ここから面倒なffmpegのインストールが待ち受けいます。。。

でどこからともなく、

# rpm -Uvh https://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
# yum list | grep ffmpeg
ffmpeg.x86_64                            2.6.8-3.el7.nux              nux-dextop
ffmpeg-compat.x86_64                     0.6.7-9.el7.nux              nux-dextop
ffmpeg-compat-debuginfo.x86_64           0.6.7-9.el7.nux              nux-dextop
ffmpeg-compat-devel.x86_64               0.6.7-9.el7.nux              nux-dextop
ffmpeg-debuginfo.x86_64                  2.6.8-3.el7.nux              nux-dextop
ffmpeg-devel.x86_64                      2.6.8-3.el7.nux              nux-dextop
ffmpeg-libs.x86_64                       2.6.8-3.el7.nux              nux-dextop
ffmpeg2theora.x86_64                     0.30-1.el7.nux               nux-dextop
ffmpeg2theora-debuginfo.x86_64           0.30-1.el7.nux               nux-dextop
ffmpegthumbnailer.x86_64                 2.0.9-1.el7.nux              nux-dextop
ffmpegthumbnailer-debuginfo.x86_64       2.0.9-1.el7.nux              nux-dextop
ffmpegthumbnailer-devel.x86_64           2.0.9-1.el7.nux              nux-dextop
gstreamer-ffmpeg.x86_64                  0.10.13-15.el7.nux           nux-dextop
gstreamer-ffmpeg-debuginfo.x86_64        0.10.13-15.el7.nux           nux-dextop
mlt-ffmpeg.x86_64                        6.4.1-4.el7.nux              nux-dextop
mythffmpeg.x86_64                        0.28-4.el7.nux               nux-dextop

こんな感じになっているので、取り敢えず全部入れちゃえ!ということで

# yum install ffmpeg*
# yum install -y gstreamer-ffmpeg*

とやってみました。

試しにcmakeを再度やってみるとこんな感じかな?

# cmake .
-- Found GDAL: /usr/lib64/libgdal.so  
-- checking for module 'gta'
--   package 'gta' not found
-- Found GStreamer: /usr/include/gstreamer-1.0;/usr/include/glib-2.0;/usr/lib64/glib-2.0/include (found version "1.4.5") 
-- Could NOT find SDL2 (missing:  SDL2_LIBRARY SDL2_INCLUDE_DIR) 
-- Could NOT find SDL (missing:  SDL_LIBRARY SDL_INCLUDE_DIR) 
-- checking for module 'poppler-glib'
--   package 'poppler-glib' not found
-- checking for module 'librsvg-2.0>=2.35'
--   package 'librsvg-2.0>=2.35' not found
-- checking for module 'gtk+-2.0'
--   package 'gtk+-2.0' not found
-- checking for module 'gtkglext-x11-1.0'
--   package 'gtkglext-x11-1.0' not found
-- Could NOT find TIFF (missing:  TIFF_LIBRARY TIFF_INCLUDE_DIR) 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/packages/OpenSceneGraph

大分減りました!

しかしここで悩ましい「gta」ってなんだ?
解らない時にはyum先生に聞いてみる。

# yum list | grep gta
langtable.noarch                         0.0.31-3.el7                 @anaconda 
langtable-data.noarch                    0.0.31-3.el7                 @anaconda 
langtable-python.noarch                  0.0.31-3.el7                 @anaconda 
libgta.x86_64                            1.0.4-1.el7                  @epel     
liblangtag.x86_64                        0.5.4-8.el7                  @anaconda 
argtable.x86_64                          2.13-7.el7                   epel      
argtable-devel.x86_64                    2.13-7.el7                   epel      
dogtail.noarch                           0.9.0-3.el7                  epel      
libgta-devel.x86_64                      1.0.4-1.el7                  epel      
libgta-doc.noarch                        1.0.4-1.el7                  epel      
liblangtag.i686                          0.5.4-8.el7                  base      
liblangtag-devel.i686                    0.5.4-8.el7                  base      
liblangtag-devel.x86_64                  0.5.4-8.el7                  base      
liblangtag-doc.noarch                    0.5.4-8.el7                  base      
liblangtag-gobject.i686                  0.5.4-8.el7                  base      
liblangtag-gobject.x86_64                0.5.4-8.el7                  base

libgtaは入っているから、多分libgta-devel辺りが怪しい。

# yum -y install libgta*

ついでに再度cmakeやってみると。。。

# cmake .
-- checking for module 'gta'
--   found gta, version 1.0.4
-- Could NOT find SDL2 (missing:  SDL2_LIBRARY SDL2_INCLUDE_DIR) 
-- Could NOT find SDL (missing:  SDL_LIBRARY SDL_INCLUDE_DIR) 
-- checking for module 'poppler-glib'
--   package 'poppler-glib' not found
-- checking for module 'librsvg-2.0>=2.35'
--   package 'librsvg-2.0>=2.35' not found
-- checking for module 'gtk+-2.0'
--   package 'gtk+-2.0' not found
-- checking for module 'gtkglext-x11-1.0'
--   package 'gtkglext-x11-1.0' not found
-- Could NOT find TIFF (missing:  TIFF_LIBRARY TIFF_INCLUDE_DIR) 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/packages/OpenSceneGraph

gtaが見つかったみたいだからOK!
#半ばヤケクソです!!

次ぎもSDL2とSDLが。。。
同じようにこんな感じであたりをつけます。

# yum list | grep -i sdl 
SDL.x86_64                               1.2.15-14.el7                @anaconda 
SDL.i686                                 1.2.15-14.el7                base      
SDL-devel.i686                           1.2.15-14.el7                base      
SDL-devel.x86_64                         1.2.15-14.el7                base      
SDL-static.i686                          1.2.15-14.el7                base      
SDL-static.x86_64                        1.2.15-14.el7                base      
SDL2.x86_64                              2.0.3-9.el7                  epel      
SDL2-devel.x86_64                        2.0.3-9.el7                  epel      
SDL2_image.x86_64                        2.0.1-2.el7                  epel      
SDL2_image-devel.x86_64                  2.0.1-2.el7                  epel      
SDL2_mixer.x86_64                        2.0.1-2.el7                  epel      
SDL2_mixer-devel.x86_64                  2.0.1-2.el7                  epel      
SDL2_net.x86_64                          2.0.1-2.el7                  epel      
SDL2_net-devel.x86_64                    2.0.1-2.el7                  epel      
SDL2_ttf.x86_64                          2.0.14-2.el7                 epel      
SDL2_ttf-devel.x86_64                    2.0.14-2.el7                 epel      
SDL_Pango.x86_64                         0.1.2-21.el7                 epel      
SDL_Pango-debuginfo.x86_64               0.1.2-20.el7.nux             nux-dextop
SDL_Pango-devel.x86_64                   0.1.2-21.el7                 epel      
SDL_gfx.x86_64                           2.0.25-3.el7                 epel      
SDL_gfx-debuginfo.x86_64                 2.0.22-5.el7.nux             nux-dextop
SDL_gfx-devel.x86_64                     2.0.25-3.el7                 epel      
SDL_image.x86_64                         1.2.12-11.el7                epel      
SDL_image-debuginfo.x86_64               1.2.12-7.el7.nux             nux-dextop
SDL_image-devel.x86_64                   1.2.12-11.el7                epel      
SDL_mixer.x86_64                         1.2.12-4.el7                 epel      
SDL_mixer-devel.x86_64                   1.2.12-4.el7                 epel      
SDL_net.x86_64                           1.2.8-6.el7.nux              nux-dextop
SDL_net-debuginfo.x86_64                 1.2.8-6.el7.nux              nux-dextop
SDL_net-devel.x86_64                     1.2.8-6.el7.nux              nux-dextop
SDL_ttf.x86_64                           2.0.11-6.el7                 epel      
SDL_ttf-debuginfo.x86_64                 2.0.11-4.el7.nux             nux-dextop
SDL_ttf-devel.x86_64                     2.0.11-6.el7                 epel      
mingw32-SDL.noarch                       1.2.15-3.el7                 epel      
mingw32-SDL_image.noarch                 1.2.12-8.el7                 epel      
mingw32-SDL_mixer.noarch                 1.2.12-3.el7                 epel      
mingw64-SDL.noarch                       1.2.15-3.el7                 epel      
mingw64-SDL_image.noarch                 1.2.12-8.el7                 epel      
mingw64-SDL_mixer.noarch                 1.2.12-3.el7                 epel      
msv-xsdlib.noarch                        1:2013.5.1-7.el7             base      
perl-Alien-SDL.noarch                    1.446-1.el7.nux              nux-dextop
perl-SDL.x86_64                          2.544-5.el7.nux              nux-dextop
perl-SDL-debuginfo.x86_64                2.544-5.el7.nux              nux-dextop
perl-SOAP-WSDL.noarch                    3.003-6.el7                  epel      
perl-SOAP-WSDL-Apache.noarch             3.003-6.el7                  epel      
perl-SOAP-WSDL-examples.noarch           3.003-6.el7                  epel      
wsdl4j.noarch                            1.6.3-3.el7                  base      
wsdl4j-javadoc.noarch                    1.6.3-3.el7                  base      

そんでもって要らないパッケージがインストールされることが無いようにちゅいしながら。。。だけど解らないw
と言うことで、ググって&Wiki見てみる。

https://ja.wikipedia.org/wiki/SDL

なんとなく全部必要そうだから。。。。

# yum -y install SDL* SDL2*

後少し!と思っている現在。

経緯は省略して以下のコマンドをひたすらに調べつつ打ち込む!

# yum -y install poppler*
# yum -y install librsvg2*
# yum -y install gtk+*
# yum -y install gtkglext*
# yum -y install libtiff*

一区切りが付いたところで、cmakeをもう一度走らせてみると。。。。

# cmake .
-- Found SDL2: /usr/lib64/libSDL2.so;-lpthread  
-- Found SDL: /usr/lib64/libSDLmain.a;/usr/lib64/libSDL.so;-lpthread (found version "1.2.15") 
-- checking for module 'poppler-glib'
--   found poppler-glib, version 0.26.5
-- Performing Test POPPLER_HAS_CAIRO
-- Performing Test POPPLER_HAS_CAIRO - Success
-- checking for module 'librsvg-2.0>=2.35'
--   found librsvg-2.0, version 2.39.0
-- checking for module 'gtk+-2.0'
--   found gtk+-2.0, version 2.24.28
-- checking for module 'gtkglext-x11-1.0'
--   found gtkglext-x11-1.0, version 1.2.0
-- Found TIFF: /usr/lib64/libtiff.so (found version "4.0.3") 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/packages/OpenSceneGraph

こんな感じになっている。

もう一回cmakeを実行するとこんな感じ。

# cmake .
-- Configuring done
-- Generating done
-- Build files have been written to: /home/packages/OpenSceneGraph

ここまでが通常の手順どおりだと思います。
でも、cmakeって何度かやり直すと以前に出て行たメッセージが出力されなくなったりして、実際にすべてが準備されているかどうかが不安になります。

そこで、便利なツールのご紹介です。

ここまで真面目に読んだ方には御免なさいm(__)m
cmake-guiを使います。

インストールは至って簡単です。

# yum -y intall cmake-gui

これだけです。

cmake-guiを実行すると、こんな感じで見ることができます。

次回はこちらの使い方を説明します。

 

 

CentOS 7にGDALとprojを入れる。

CentOS 7にGDALを入れます。

メンテナンス性を考えると、yumで入れたい。

ということで、EPELのリポジトリを登録してGDALをインストールする。

1)EPELリポジトリの登録

まずはyumを使ってepel-releaseのリポジトリをインストールします。

# yum install epel-release
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
Resolving Dependencies
--> Running transaction check
---> Package epel-release.noarch 0:7-9 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package                Arch             Version         Repository        Size
================================================================================
Installing:
 epel-release           noarch           7-9             extras            14 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 14 k
Installed size: 24 k
Is this ok [y/d/N]: y
Downloading packages:
epel-release-7-9.noarch.rpm                                |  14 kB   00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : epel-release-7-9.noarch                                      1/1
  Verifying  : epel-release-7-9.noarch                                      1/1

Installed:
  epel-release.noarch 0:7-9

Complete!

こんな感じでインストール完了!

epel-releaseリポジトリを明示的に使用する(通常は使用しないで、必要な時だけ使用する)場合は、以下の設定を行う。

# vi /etc/yum.repos.d/epel.repo

[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
#baseurl=https://download.fedoraproject.org/pub/epel/7/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1                        <=== ここを「0」にする。
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

この設定を行った場合には、yumのオプションに–enablerepo=epelを指定していないとEPEL-Releaseリポジトリは参照されません。

試しに、enabled=0の時と1にした時とでインストール対象が変わることを示します。

<EPEL-Releaseが参照されない(enabled=0)場合>

# yum list | grep proj
httpcomponents-project.noarch              6-4.el7                     base
jetty-project.noarch                       9.0.3-8.el7                 base
maven-project.noarch                       2.2.1-47.el7                base
maven-project-info-reports-plugin.noarch   2.6-8.el7                   base
maven-project-info-reports-plugin-javadoc.noarch

 

<EPEL-Releaseを参照する(enabled=1)場合>

# yum list | grep proj
fedora-gnat-project-common.noarch         3.9-1.el7                      epel
geany-plugins-projectorganizer.x86_64     1.28-1.el7                     epel
httpcomponents-project.noarch             6-4.el7                        base
jetty-project.noarch                      9.0.3-8.el7                    base
libprojectM.x86_64                        2.1.0-2.el7                    epel
libprojectM-devel.x86_64                  2.1.0-2.el7                    epel
libprojectM-qt.x86_64                     2.1.0-2.el7                    epel
libprojectM-qt-devel.x86_64               2.1.0-2.el7                    epel
maven-project.noarch                      2.2.1-47.el7                   base
maven-project-info-reports-plugin.noarch  2.6-8.el7                      base
maven-project-info-reports-plugin-javadoc.noarch
mingw32-angleproject.noarch               0-0.13.git.30d6c2.20141113.el7 epel
mingw32-angleproject-static.noarch        0-0.13.git.30d6c2.20141113.el7 epel
mingw64-angleproject.noarch               0-0.13.git.30d6c2.20141113.el7 epel
mingw64-angleproject-static.noarch        0-0.13.git.30d6c2.20141113.el7 epel
pjproject.x86_64                          2.3-6.el7                      epel
pjproject-devel.x86_64                    2.3-6.el7                      epel
proj.x86_64                               4.8.0-4.el7                    epel
proj-devel.x86_64                         4.8.0-4.el7                    epel
proj-epsg.x86_64                          4.8.0-4.el7                    epel
proj-nad.x86_64                           4.8.0-4.el7                    epel
proj-static.x86_64                        4.8.0-4.el7                    epel
projectM-jack.x86_64                      2.1.0-2.el7                    epel
projectM-pulseaudio.x86_64                2.1.0-2.el7                    epel
pyproj.x86_64                             1.9.2-6.20120712svn300.el7     epel

19-23行目でprojが参照されていることを確認できます。
この状態になると、projをyumでインストールすることが出来ます。

以下では、enabled=1(明示的に指定しないで使用する)で作業を進めます。

2)projのインストール

ここまで来たら簡単です!
projをインストールします。

# yum install proj proj-devel proj-epsg
Loaded plugins: fastestmirror
epel/x86_64/metalink                                     | 5.8 kB     00:00
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * epel: ftp.riken.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
Resolving Dependencies
--> Running transaction check
---> Package proj.x86_64 0:4.8.0-4.el7 will be installed
---> Package proj-devel.x86_64 0:4.8.0-4.el7 will be installed
---> Package proj-epsg.x86_64 0:4.8.0-4.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package             Arch            Version                Repository     Size
================================================================================
Installing:
 proj                x86_64          4.8.0-4.el7            epel          181 k
 proj-devel          x86_64          4.8.0-4.el7            epel           16 k
 proj-epsg           x86_64          4.8.0-4.el7            epel           58 k

Transaction Summary
================================================================================
Install  3 Packages

Total download size: 256 k
Installed size: 1.1 M
Is this ok [y/d/N]: y
Downloading packages:
warning: /var/cache/yum/x86_64/7/epel/packages/proj-epsg-4.8.0-4.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY
Public key for proj-epsg-4.8.0-4.el7.x86_64.rpm is not installed
(1/3): proj-epsg-4.8.0-4.el7.x86_64.rpm                    |  58 kB   00:00
(2/3): proj-4.8.0-4.el7.x86_64.rpm                         | 181 kB   00:00
(3/3): proj-devel-4.8.0-4.el7.x86_64.rpm                   |  16 kB   00:00
--------------------------------------------------------------------------------
Total                                              280 kB/s | 256 kB  00:00
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
Importing GPG key 0x352C64E5:
 Userid     : "Fedora EPEL (7) <epel@fedoraproject.org>"
 Fingerprint: 91e9 7d7c 4a5e 96f1 7f3e 888f 6a2f aea2 352c 64e5
 Package    : epel-release-7-9.noarch (@extras)
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
Is this ok [y/N]: y
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : proj-4.8.0-4.el7.x86_64                                      1/3
  Installing : proj-epsg-4.8.0-4.el7.x86_64                                 2/3
  Installing : proj-devel-4.8.0-4.el7.x86_64                                3/3
  Verifying  : proj-epsg-4.8.0-4.el7.x86_64                                 1/3
  Verifying  : proj-4.8.0-4.el7.x86_64                                      2/3
  Verifying  : proj-devel-4.8.0-4.el7.x86_64                                3/3

Installed:
  proj.x86_64 0:4.8.0-4.el7              proj-devel.x86_64 0:4.8.0-4.el7
  proj-epsg.x86_64 0:4.8.0-4.el7

Complete!

おしまし!。。。じゃない、まだGDAL入れてないしw

3)GDALのインストール

GDALのインストール手順を書きすれていました(^^;

こんな感じです。

# yum -y install gdal gdal-devel

出力されているコメントを見るとOGRの名前が見当たりませんが、OGRもしっかりと入っています!

試しにこんな感じで確認できます。

# ogrinfo 
Usage: ogrinfo [--help-general] [-ro] [-q] [-where restricted_where]
               [-spat xmin ymin xmax ymax] [-geomfield field] [-fid fid]
               [-sql statement] [-dialect sql_dialect] [-al] [-so] [-fields={YES/NO}]
               [-geom={YES/NO/SUMMARY}][--formats]
               datasource_name [layer [layer ...]]

FAILURE: No datasource specified.

ということで、今度こそおしまい!