GPSPruneで背景地図に地理院地図を表示させる

GPSPruneJavaで動くため、WindowsMacLinuxなど、マルチプラットフォームで利用できるGPSログのユーティリティソフトウェアです。
ログの可視化や、exiftoolと合わせて使うことによるデジタル写真へのジオタグの付加などが出来ます。

このソフトウェアは背景に地図を表示することが出来ます。
「ビュー」→「地図を表示」

この地図は、タイルマップサービスを利用することで自由に変更することが出来ます。
「設定」→「背景地図」→「新しく追加」

ここでは地理院地図の標準地図(いわゆる地形図+ズームアップすると基盤地図情報)を表示させる設定を示します。

「ソースの名前」: 任意
「URL of first layer」: http://cyberjapandata.gsi.go.jp/xyz/std/
※「png」にチェックが付いていることを確認してください。
「Optional URL of second layer」: 空欄のまま
「最大ズームレベル」: 18(デフォルトのまま)

これで背景に地理院地図の標準地図を表示することが出来ます。

FOSS4G 2015 Osakaハンズオンの資料

※このエントリーはFOSS4G Advent Calendar 2015 二個目のエントリーとして書いております。

ハンズオンの資料を公開いたしました。詳しくは下記をどうぞ。
http://www.slideshare.net/sayno/foss4g-2015-osaka

今回は他のWebサービスも使ってみました。
Speaker Deckはこちら。
https://speakerdeck.com/sayno/foss4g-2015-osakahanzuonzi-liao

GitHubでも生ファイルを公開しています。
https://github.com/Say-no/FOSS4G2015Osaka_handson/blob/master/FOSS4G_Osaka_2015_seino.pdf

それにしても、QiitaってGitHubアカウントでログイン出来るのかと思ったら、改めてそこから新規登録させるのね。なんだかなぁ…。

Ubuntu13.04 AMD64におけるGRASS GIS 7のコンパイル

CFLAGS="-g -Wall" CXXFLAGS="-g -Wall" ./configure --with-gdal --with-proj --with-glw --with-nls --enable-debug --enable-64bit --with-libs=/usr/lib --with-cxx --with-readline --with-freetype --with-freetype-includes=/usr/include/freetype2/ --with-pthread --enable-largefile --with-proj-share=/usr/share/proj/ --with-geos --with-cairo --with-tcltk-includes=/usr/include/tcl8.4/ --with-tcltk-libs=/usr/lib/ --with-wxwidgets --with-postgres=no --with-sqlite=yes --with-python=/usr/bin/python2.7-config --with-opengl-libs=/usr/include/GL --with-ffmpeg=yes --with-ffmpeg-includes="/usr/include/libavcodec /usr/include/libavformat /usr/include/libswscale" --with-openmp=yes --with-opencl=yes

GRASS is now configured for: x86_64-unknown-linux-gnu

Source directory: ./grass_trunk
Build directory: ./grass_trunk
Installation directory: ${prefix}/grass-7.0.svn
Startup script in directory:${exec_prefix}/bin
C compiler: gcc -g -Wall
C++ compiler: c++ -g -Wall
Building shared libraries: yes
OpenGL platform: X11

MacOSX application: no
MacOSX architectures:
MacOSX SDK:

BLAS support: no
C++ support: yes
Cairo support: yes
DWG support: no
FFMPEG support: yes
FFTW support: yes
FreeType support: yes
GDAL support: yes
GEOS support: yes
LAPACK support: no
Large File support (LFS): yes
libLAS support: no
MySQL support: no
NetCDF support: no
NLS support: yes
ODBC support: no
OGR support: yes
OpenCL support: yes
OpenGL support: yes
OpenMP support: yes
PNG support: yes
POSIX thread support: yes
PostgreSQL support: no
Readline support: yes
Regex support: yes
SQLite support: yes
TIFF support: yes
wxWidgets support: yes
X11 support: yes

proj.4を使って、緯度経度の値をUTM座標の座標値に変換する方法

proj +proj=utm +zone=53 +ellps=WGS84+init=EPSG:3099 -f %.3f

意味は、最初の「+proj=」の後に、utmと入れることで、utm座標系の値が欲しい、と宣言する。
次の「+zone=」がUTMゾーンの数字を入れるところ。
次の「+ellps=」が準拠楕円体を指定するところ。
「+init=EPSG:」の後にEPSGコードを入れればよかった(なーんだ)。
「EPSG:3099」は「JGD2000 / UTM zone 53N」という意味。
最後の-fオプションが小数点以下の桁数指定で、%.3fとすることで小数点以下3桁になる。
ここで一旦リターンキーを押す。
すると入力待ち状態になるので、

135.000 40.000

とか入力してエンターキーを押すと、

500000.000	4427757.219

こんな感じで値が出てくる。
続いて入力待ちになっているので、また緯度経度の値を入力するとまた計算結果を返してくれる。
終了したいときはControl+Cで終了した。

2018-05-23追記

最近は以下のように書かないとダメらしい。projのバージョンは4.9.2でUbuntu16.04 64bitで検証。

echo 135.000 40.000 | cs2cs +init=epsg:4326 +to +init=epsg:3099 -f %.3f
500000.000	4427757.219 0.000

OSGeo/FOSS4G周辺における「自由」「オープン」「Free」

※このエントリーはFOSS4G Advent Calendar 2012のエントリーとして書いております。他のエントリーもとても面白く、勉強になりますので、ぜひご一読下さい。

はじめに

本当は何か具体的なツールの使い方などを紹介した方がいいのかもしれませんが、
最近OSGeo財団日本支部関係やFOSS4G関係のイベントなどで言葉が曖昧なまま使われている例や間違った意味で使われている例を最近よく目にし、
発信する側が言葉を間違って使っているのはいかがなものか、と思いましたので
ちょっと堅いですがこんなエントリーにしてみました。
決してこんなイベントをやるからこういうネタで書くわけじゃありませんよ(ステマ)。
あと、今週はぶっ飛んだ面白いエントリーが多かったのに、ここに来てこんな堅い話になって水を差すことになってしまって申し訳ございません…。

「OSGeo」および「FOSS4G」について

「OSGeo」とはOSGeo財団(The Open Source Geospatial Foundation)のことで、
「高品質のオープンソース地理空間ソフトウェアの支援と構築のために設立されました。この財団の目的は、コミュニティーが先導して、オープンソースプロジェクトの利用と開発を促進することです。」
(http://www.osgeo.jp/ より引用)
「FOSS4G」とは「Free Open Source Software for(4) Geospatial」の略で、
英語としては不自然な表現だと指摘されることもありますが、
一応、「自由でオープンなGISソフトウェア」と言う意味です。
ただし、この言葉には、OSGeo財団が主催するカンファレンス/イベントのタイトルとしても用いられることがあります。
ここでややこしいのは、FOSS4Gのカバー範囲はどこまでか、という事です。
僕自身は狭義にはOSGeo財団が開発を支援しているプロジェクトの成果物に対する名称だと考えております。
現在OSGeo財団が支援しているプロジェクトは、財団の公式Webサイト http://www.osgeo.org/ ここの右側のペインにリストが挙げられています。
著名なソフトウェアはこちらに沢山挙げられていますが、
自由でオープンなGISソフトウェアはこれ以外にも沢山あります。
例えば有名なところではSAGA GISGMTといったソフトウェアはOSGeo財団の支援は受けておりません。
これらもライセンスはGPLなどを採用しており、立派な自由でオープンなソフトウェアなのですが、FOSS4Gと言えるかというと微妙です。
単純に英単語の意味としては確かにFOSS4Gなのですが…。
なお、ドイツではFOSSGIS e.V.という非営利社団法人があり、OSGeo財団の支援を受けていない自由でオープンなGISソフトウェアや、
更にはオープンなジオデータをも扱う、「FOSSGIS」というカンファレンスを開いています。
http://www.fossgis.de/
そして、このFOSSGIS e.V.が設置している http://freegis.org/ というサイトには、OSGeo財団の支援を受けていないGISソフトウェアが数多く登録されています。
これらを包括した呼び方は現状では定義されていないの状態です。

「FOSS」って?

ところで、そもそも「FOSS4G」の「FOSS」の部分についても実は説明が必要なことが多いようです。
なお、「FOSS」という言葉は、近年は「Free/Libre Open Source Software: FLOSS」と呼ばれることも多くなってきています。
本当はこれらの言葉の背後には長い歴史があり、
こんなざっくり書いたらいろんな人から怒られてしまうのですが、
とりあえずさらっと書きたいと思います。
詳しい説明はWikipediaなどでも解説されていますから、
踏み込んで勉強したい方はそうした関連ドキュメントに目を通して下さい。

「Free Software」と「Open Source Software

まず、「Free Software」と言う言葉と「Open Source Software」と言う言葉ですが、
厳密にはイコールの概念ではありません。
歴史的には「Free Software」という言葉が先に存在し、その言葉の定義に不満を持った人たちが、それを避けて新しい概念として立てたのが「Open Source Software」という言葉です。

「Free Software」

「Free Software」という言葉はフリーソフトウェア財団(Free Software Foundation: FSF)が提唱する言葉で、厳密な提議があります。
そして、この邦訳としては「自由なソフトウェア」と呼ぶことを、この言葉を定義したRichard Stallman氏が推奨しています。
http://ja.wikipedia.org/wiki/%E3%83%95%E3%83%AA%E3%83%BC%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2#cite_note-1
ここでの「Free」は決して「無料」のことを指すのでは無く、「自由」を意味しています。
ですので、「有料な『Free Software』」というものも存在すること自体は可能です(実質的な意味があるかは別問題です)。

Open Source Software

一方、「Open Source Software」については「Free Software」に不満があった人々によって定義された部分もある言葉なので、その性質には若干の相違があります。
例えばFree Softwareではソフトウェアのソースを改変したものを再配布する場合には、利用者が改変部分を入手できるようにする必要があります。
しかし、オープンソースの場合は、その義務が伴わないものも認められています。
ただ、方向性として、自由に使えるソフトウェアにしたい、という思いは両者とも同じなので、このように併記して用いられることが多いのです。
詳しくは関連ドキュメントを参照して下さい。

「自由≠無料」、「Free」「フリー」って?

日本ではよく、「無料のソフトウェア」のことを指して「フリーソフト」という言葉が用いられることがあります。
しかしこの「フリーソフト」という言葉は非常に曖昧です。
また「フリーウェア」という言葉もあります。こちらは、ほとんど自由でオープンという点を強調せず、
無料である点のみを強調している場合が多いように見受けられます。
個人的な意見としては、きちんと「フリーソフトウェア」なら「フリーソフトウェア」もしくは「自由なソフトウェア」と言うべきで、
無料のソフトウェアに対しては「無料ソフトウェア」や「フリーウェア」などの言葉を使うべきだと思います。
「フリー」という言葉も安易に使うのではなく、できるだけきちんと文脈に即して「自由」あるいは「無料」と言う言葉を使って表現すべきでしょう。
無料でも自由ではないソフトウェアは沢山あります。多くの場合はソースコードは入手できず、実行形式のファイル(バイナリファイル)のみが提供されています。
例えば有名なところでは、Adobe Readerや、GISソフトウェアではGoogleEarthやカシミール3Dなどです。

なぜ「自由」が大事なのか?

自由の担保は非常に重要です。
「タダより高いものはない」とはよく言いますが、
無料だからといってそれに頼っていると、ある日突然それが使えなくなったりした際に、困るのはその利用者です。
特定の企業や個人の思惑に左右されることは避けられません。
仮に、過去にダウンロードしたものがあったとしても、多くの無料だが自由ではないソフトウェアの場合、
利用規約でそうしたファイルの再配布は認めてられていなかったりします。
こうなるともうお手上げです。
僕が自由でオープンなソフトウェアをことさら強調するのは永続性の確保や特定の企業などによる囲い込み(ベンダーロックイン)を避けることなどを重視しているからです。
また、自分が身を置く学問の世界においては特に、研究の成果は広く人類に還元されるべきであり、
そのためには誰もがアクセスできる方法で研究が行われることが望ましいと考えています。
分析をする際に用いられるソフトウェアも同様でしょう。
また、研究の世界というのはその世界のカッティングエッジであるため、細かく自分の要求に応じて処理が修正できる必要があります。
そのためにも処理がブラックボックス化されたソフトウェアは具合が悪いのです。

みんながハッピーな未来に向けて

無料も悪いことではないのですが、
自由でオープンなソフトウェアを積極的に使っていきましょう。
その先にはみんながハッピーになれる未来があると思います。
またそうしたソフトウェアの開発コミュニティにも積極的に参加して、
自分達が使っているソフトウェアを自分達で育てていきましょう。
タダ乗り(フリーライド)することも悪いことではありませんが、
与えられるのを待ち、満足いかなかったからといって不満を述べているだけでは、
いつまで経ってもそのソフトウェアが良くなることはありません。
せっかく自由でオープンなのです。
みんなで良くしていく事で、自分も、また自分の後に続く人たちにも幸せが訪れるようになるといいですよね!


Happy Hacking!!


明日はnao.tさんです。


※本当はライセンスのことも書こうと思っていたのですが、量が多くなってきたので、エントリーを分けて議論したいと思います。

GRASS-GIS開発版をUbuntu 12.04 AMD64でコンパイル

CFLAGS="-g" ./configure --enable-debug --enable-64bit --with-libs=/usr/lib --with-cxx --with-readline --with-freetype=yes --with-freetype-includes="/usr/include/freetype2/" --enable-largefile=yes --with-proj-share=/usr/share/proj/ --with-geos --with-cairo --with-tcltk-includes=/usr/include/tcl8.4/ --with-tcltk-libs=/usr/lib/ --with-wxwidgets --with-postgres=no --with-sqlite=yes --with-python=/usr/bin/python2.7-config --with-opengl-libs=/usr/include/GL --with-ffmpeg=yes --with-ffmpeg-includes="/usr/include/libavcodec /usr/include/libavformat /usr/include/libswscale" --with-openmp=yes

の結果が、

GRASS is now configured for:  x86_64-unknown-linux-gnu

  Source directory:            /home/seino/grass7/grass_trunk
  Build directory:             /home/seino/grass7/grass_trunk
  Installation directory:      ${prefix}/grass-7.0.svn
  Startup script in directory: ${exec_prefix}/bin
  C compiler:                  gcc -g 
  C++ compiler:                c++ -g -O2
  Building shared libraries:   yes
  OpenGL platform:             X11

  MacOSX application:         no
  MacOSX architectures:       
  MacOSX SDK:                 

  Tcl/Tk NVIZ:                yes

  BLAS support:               no
  C++ support:                yes
  Cairo support:              yes
  DWG support:                no
  FFMPEG support:             yes
  FFTW support:               yes
  FreeType support:           yes
  GDAL support:               yes
  NETCDF support:             no
  GEOS support:               yes
  LAPACK support:             no
  Large File support (LFS):   yes
  libLAS support:             no
  MySQL support:              no
  NLS support:                no
  ODBC support:               no
  OGR support:                yes
  OpenGL support:             yes
  OpenMP support:             yes
  PNG support:                yes
  POSIX thread support:       no
  PostgreSQL support:         no
  Readline support:           yes
  Regex support:              yes
  SQLite support:             yes
  TIFF support:               yes
  Tcl/Tk support:             yes
  wxWidgets support:          yes
  X11 support:                yes

GRASS-GISでr.mapcalcを使ってベースマップから計算しない範囲を除く方法

r.mapcalc "新しく作る地図名 =if(isnull(マスクしたいラスタ地図のマスク以外の範囲。null値の部分。),標高値を引き継ぎたいベースマップ,null()←マスク部分をnull値にする)"

r.mapcalc 'new = if(isnull(null_source_map),base_DEM_map,null())'