カレンダー
    01 ◇ 2017/02 ◇ 03

    - - - 1 2 3 4
    5 6 7 8 9 10 11
    12 13 14 15 16 17 18
    19 20 21 22 23 24 25
    26 27 28 - - - -

プロフィール

    ぴかぴか

    • Author:ぴかぴか
    • 暑い日が続きますね。
      私は暑いの大好きです。



      姫路で暮らして、大阪で仕事。
      日常の興味のあることや、OSGeoの事とか書いてます。
      競馬もほんの時々。


最近の記事
最近のコメント
最近のトラックバック
月別アーカイブ
カテゴリー
ブロとも申請フォーム

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

スポンサー広告 コメント:- トラックバック:- [Edit]  Top Page.△

FOSS4G 2014

2014年12月23日[09:58:32]
この記事はFOSS4G Advent Calendar 2014の予定です。
諸事情により遅れております。

( ;´Д`)


スポンサーサイト

OSGeo.JP コメント:- トラックバック:- [Edit]  Top Page.△

もしかしてだけどGeopaparazziを選んだほうが得しちゃうんじゃないの~

2013年12月01日[23:16:05]
もしかしてだけど~
(もしかしてだけど~)
もしかしてだけど
(もしかしてだけど~)
Geopaparazziを選んだほうが得しちゃうんじゃないの~

ロゴ

この記事はFOSS4G Advent Calendar 2013 12/1のものです。


デスクトップやサーバーではもはや普通に使われているFOSS4G製品ですが、
スマートフォンではまだまだ「これは!!」っていうソフトが出てきてませんでした。
でも"最近Geopaparazziはかなりイケてるアプリになってきましたよっ"てお話。

Geopaparazziをよく知らないっていう方、インストールしたけどどう使っていいかわからんという方もおられるので概略説明しときます。

Geopaparazzi はオープンソースのフィールド調査用Androidアプリです。Android系のスマートフォン・タブレットを使用して、OpenStreetMapやタイルサービスを背景地図にしたフィールドワークを行えます。
カスタマイズが可能な定型的な調査様式をレポートフォームとして作成しておくことで、写真・音声・地図・GPSトラックデータと一緒に記録します。
記録されたデータは、KMZファイルとして取り出すことができますので、GoogleEarthを使用して簡単に表示することが可能です。
また、geopaparazzi cloudに調査データをアップロードすることも出来ます。

Geopaparazziの開発主要メンバーはuDig,jgrass,pygrassの開発にも携わっている非常に優れたエンジニア達です。
コミュニティ:http://moovida.github.io/geopaparazzi/


インストール
GeopaparazziはGooglePlayからAndroid端末へ簡単にインストールすることが出来ます。
アプリケーションはGPS、SMS、ネットワーク、ストレージ、カメラ、録音、センサーを使用するため、たくさんのアクセス許可が必要です。
個人情報等を他のサーバにユーザーの許可なく送信することはありません。
コンピュータのブラウザでGooglePlayサイトを表示して、スマートホンへインストールすることも可能です。

インストール


機能
Geopaparazziのダッシュボード機能は次のとおりです。
ダッシュボード

・ノート作成
テキスト・写真・音声・スケッチの簡易入力を行います。

・最新ノート削除
最後に入力したノートを削除します。

・GPSトラッキング
GPSの軌跡データを記録します。

・地図表示入力
背景地図を表示し、ユーザー定義ノートの入力を行います。

・データインポート
GPX,geopaparazzi cloud project,ブックマークのインポートを行います。

・データエクスポート
KMZ,GPX,geopaparazzi cloud project,ブックマークのエキスポートを行います。

・設定
GPSトラッキングの条件設定,SMS(ショートメッセージ)の番号設定と受信,OpenStreetMapのツール表示とアカウント設定


システム構成
構成は大体こんな感じです。
システムレイアウト



データベース
データベースの形式はSQLiteです。PupSQLiteなどのソフトで編集することができます。
ノートとして作成されたデータは、noteテーブルのレコードに格納されます。
写真や音声は、/sdcard/geopaparazzi/media/ に保存されます。
写真のファイル名と位置情報はimagesテーブルに格納されます。
GPSトラックデータは、エポック(位置情報データの1回分)毎に、gpslog_dataテーブルに格納され、収録ごとに設定したタイトルはgpslogsテーブルに格納されます。
ブックマークはbookmarkテーブルに保存されます。

入出力ファイル

GPX:入力/出力
GPSのトラッキングデータで使用されるテキスト形式ファイルです。Garmin等のハンディGPSやスマートフォンで保存することができ、OpenStreetMapやGISソフトウェアで位置情報が利用されます。

KMZ:出力
GoogleEarthの位置情報データ形式ファイルです。Geopaparazziから出力するとき、noteテーブルのすべてのレコードと写真が格納されます。

ブックマーク:入力/出力
地図表示で登録を行った☆印のブックマークを示すCSV形式ファイルです。
あらかじめ登録したデータを配布してインポートすることができます。

OSM形式:入力/出力
OpenStreetMapで使用される形式でPOIデータを編集します。データのプロセッシングにはWPS(Web Processing Service)「ZOO」が使用されています。
http://www.zoo-project.org/

geopaparazzi cloud project:入力/出力
geopaparazziのデータを共有化するためのクラウドサーバです。
Geopaparazziのメンバーで開発が進められています。
下記のURLからサンプルプログラムを入手することが出来ます。
https://bitbucket.org/moovida/geopap-browser
http://jgrasstechtips.blogspot.it/2012/03/geopap-browser-si-on-its-way.html


起動と終了
起動は端末のホーム画面から、アイコンをクリックします。
終了には、2通りの方法があります。
geopaparazziはAndroid端末の「戻る」ボタンで画面が消えて待ち受け画面に戻った場合、アプリは常駐しています。GPSログを開始した場合にGPS測位を継続して行うために、このような仕様になっています。
常駐したままだと、GPS測位も常時行われるため、バッテリの消耗が速くなります。geopaparazzi v3ではバッテリの消費をv2よりも抑える工夫はしていますが、消費電力は端末機種によって大きく差があります。
アプリを完全に終了するためには、端末のメニューボタンを押し、「終了」アイコンを選択します

初期設定とプロジェクト
インストール直後、初めて起動した際は、次のフォルダが作成されます。
/sdcard/geopaparazzi
ユーザーのデータはすべてここに保存されます。
geopaparazziでは、このフォルダの単位を「プロジェクト」と呼びます。メニューから新しいプロジェクトを作ったり、別のプロジェクトを呼び出し、フォルダを切り替えることができます。
プロジェクト


ノート
ノートアイコンをクリックすると、4つのアイコンが並んだポップアップウィンドウが現れます。
左から、ノート、カメラ、録音、スケッチの機能アイコンになります。
GPSないしはNETWORKが測位終了していない状態の場合は、位置情報が付加できないため、これらのアイコンを選ぶことができません。
スケッチ


GPSステータスアイコン

ダッシュボード画面上部の右側にGPSと書かれたアイコンがあります。
GPSステータスアイコンの意味は次の通りです。

赤色: GPSの電源が入っていない状態
燈色: GPSがONで測位がFIXしていない状態
緑色: GPSがON,で測位がFIXしており、ロギングが行われていない状態
青色: GPSのロギングが行われている状態
GPSステータス


ノート機能
ノートを選択すると、テキストの入力を行うことができます。
入力されたテキストは。位置情報が付加され、データベースに格納されます。
ノート作成


カメラ機能
アイコンを押すとカメラが起動されます。
写真を撮影保存すると、/sdcard/geopaparazzi/media フォルダに写真ファイルが保存されます。

録音機能
アイコンを押すとレコーダが起動し録音が即座に開始されます。
停止ボタンを押すと、/sdcard/geopaparazzi/media フォルダに音声ファイルが保存されます。
※録音機能は最新版では廃止されました。

スケッチ機能
アイコンを押すと手書きによる線画入力を行うことが出来ます。線色、線幅を選択することが出来ます。入力した線画は「元に戻す」・「繰り返し」することが可能です。一旦保存されたスケッチは変更することはできません。
※現在、スケッチの背景にMAPを表示する機能が開発されています。
ノート機能


ノート削除
最後に記録したノートのみ削除を行います。まとめて削除する場合は、後で説明する地図表示で行います。基本的に、画面操作はバッテリの消費が大きいため、フィールドではどんどん記録して、後で整理をするようにデザインされています。


GPSログ
測位がFIXしている場合、GPSのトラッキング(ロギング)を開始します。
既にトラッキング中の場合は、トラッキングを終了します。

トラッキングの開始時に、ログの名前を入れるためのダイアログが表示されます。初期値は現在の日時です。
必要であれば、テキストを入力します。
この名称は、エクスポート機能でGPX出力を選んだ場合の出力ファイル名になります。


地図表示
ノートの機能では、基本的なレポート作成操作を行うことができます。
地図表示では、ユーザー定義のノート入力機能や、GPSトラックの表示、ブックマークによる効率的な目的地移動、概算距離測定、目的地ルート検索、OpenStreemMapのPOIの編集を行うことができます。
地図は、OpenStreetMapの背景地図、ローカルとリモートのTMSタイル、mapsforgeベクターファイルの表示をサポートしています。

http://code.google.com/p/mapsforge/
http://download.mapsforge.org/maps/

地図


初めて地図表示を起動した場合、一面水色の地図が表示されます。中心は緯度経度(0 ,0)になっています。
右上の+-は、地図のズームです。-をクリックしてズームレベルを02程度にすると、アフリカの西部の海であることが分かります。
緯度経度零

地図は指でスクロールすことができます。
表示場所を東へスクロールさせてゆくと日本が現れます。地図を最後に表示した場所とズームレベルはGeopaparazziの環境設定値として保存されます。
次回起動した場合は、最後に表示が行われた場所から地図表示が行われます。

ノートリスト機能

位置 クリックでノートの位置に地図移動します。
再編集クリックでノートを再編集できます。
削除クリックでノートの消去を行います。


ブックマーク機能
ブックマーク機能はフィールドの調査ポイント等の位置をマークするものです。
初期表示から対象フィールドまで地図をスクロールする際、Android端末から地図サーバないしはローカルタイルのデータ読み出しが行われます。Android端末のネットワーク通信を使用したデータ読み出しは特に時間がかかり、消費電力も大きい処理です。
効率の良い地図操作を行うため、ブックマークを利用した地点移動機能が搭載されています。

ブックマーク機能


ブックマーク追加
ブックマークの追加は、画面左の ☆ をクリックします。
新しいブックマークダイアログが表示されますので、ブックマークのラベルを入力します。
ラベルの入力はオプションですが、いくつかブックマークを作成した際の、各点の区別をするために入力をお勧めします。
OKを押すと地図に新しい☆が追加されます。

ブックマークリスト
ブックマークの一覧と移動を行うには2つ目の ☆ をクリックします。
このリストには3つの機能があります。
位置 クリックでブックマークの位置に地図移動します。
再編集 クリックで、ブックマーク付近に近づいた時のアラートを表示する距離(m)を入れることができます。
再編集 クリックでブックマークの名称を変更できます。
削除 クリックでブックマークの消去を行います。

ブックマーク画面


距離測定機能
アイコンをクリックして、地図を指でなぞると、地図上の距離を測定することができます。
機能を使用中は、地図のスクロールはロックされます。距離は指でなぞったピッキング精度の近似距離で、標高差は考慮されていません。(機能改良中のようです)

距離画面


OpenStreetMapツール
Geopaparazzi V3から、OpenStreetMapのポイント情報が入力編集できるようになりました。OSMのアカウントをお持ちの場合、ダッシュボードの設定でユーザーアカウント情報を設定します。Username、Passwordを入力し、設定画面を閉じダッシュボードに戻ると、OSMタグをダウンロードしますかというダイアログがでますので、okをおして、タグ情報のダウンロードを実施します。
地図表示をクリックして地図に戻ります。
地図画面に新たに、OSMアイコンが表示されます。

アイコンをクリックすると、OSMのポイント情報を入力するメニューが現れますので、目的のジャンルから、ポイント情報に合致したアイコンをクリックして、OpenStreetMapに必要な追加情報を入力します。
[Sync OSM notes with server]をクリックして、コメントを入力します。
okを押すと、OSMへポイント情報のアップロードが開始されます。

OSM機能


アップロードが終了すると、アップロードしたノートをデバイスから削除するかどうか問い合わせがあります。ポイント情報がOpenStreetMapでレンダリングされ、反映されるまでは時間がかかります。ポイント情報を表示しておく必要がなければokを押します。

OpeStreetMap上のレコードのコメントタグは、入力したコメント以外に「auto import of features using geopaparazzi and zoosmarazzi:」が記載されています。
もし、Geopaparazziで入力送信後に変更が必要であれば、PCのブラウザからPotlach2で修正します。
OSM変更履歴

GPSデータリスト
GPSデータリストは、調査されたデータのポイントとトラックの両方を表示するものです。
GPSデータトラックについては、地図上に表示する線の幅と色を設定することができます。
また、この画面からすでに記録されているトラック名の変更ができます。


インポート
Geopaparazziは、次のデータインポートを行うことができます。

GPX:ハンディGPSやスマートフォンアプリでGPSのトラック記録をした際保存に用いられることの多い形式です。Geopaparazziで記録したGPSトラックもこの形式で出力することができます。「Open Route Service」というルート検索サービスから、検索した結果をGPX出力することが可能です。Geopaparazziのサイトではこの方法を紹介していますが、残念ながらこのサイトのサービスはヨーロッパ圏内のみです。
アイコンをクリックすると、GPXファイルを選択する画面が表示されます。地図画面に表示させたいGPXファイルを選択します。

CLOUD: geopaparazzi cloud projectsからのデータダウンロードを行います。
調査データを共有して互いにデータ交換をしたり、バックアップからデータを断ロードするなど、さまざまな利用シーンが考えられます。このサービスは現在開発中で、オープンなサーバを準備している段階です。
http://jgrasstechtips.blogspot.it/2012/03/geopap-browser-si-on-its-way.html
に簡単な紹介があります。

ブックマーク:地図表示のブックマーク機能で説明した、ブックマークの読み込みを行います。ブックマークは単純なCSV形式のファイル「bookmarks.csv」で、Geopaparazziでエクスポートしたものです。インポートする際は、/sdcard/ 直下に置いておく必要があります。OS 1.x系のAndroid では/sdcard/は外部SDカードを示していました。2.0系以降のAdroid 機種では、外部SDカードは/sdcard/ex_sdcard/になります。外部SDカードからのブックマークの読み込みには、コピーが必要になります。
ファイルフォーマットおよび例は下記の通りです。
フィールド内容:名称, 緯度, 経度


エクスポート
Geopaparazziは、次のデータエクスポートを行うことができます。

GPX: アイコンをクリックすると、GPSトラックを選択する画面が表示されます。保存したいGPSトラックファイルを選択します。

CLOUD: geopaparazzi cloud projectsへデータアップロードを行います。
このサービスは現在開発中で、オープンなサーバを準備している段階です。
http://jgrasstechtips.blogspot.it/2012/03/geopap-browser-si-on-its-way.html
に簡単な紹介があります。

ブックマーク:地図表示で入力したブックマークの保存を行います。エクスポートされたファイルは、/sdcard/ 直下に保存されます。


KMZ:Geopaparazziで入力した、ノート、写真、定型フォーム、GPSトラックはプロジェクト単位に1つのKMZファイルに出力されます。
Google Earthに読み込むと、すべてのデータを表示することができます。

アクションバー
アクションバーは、ダッシュボードの上部にあります。
GPSの状態表示、コンパス表示、現在のGPSインフォメーションを表示するバーです。

GPSの状態表示については、先に説明した通りです。
GPSインフォメーションはGPSの受信パケットの現在の値を表示します。

コンパス表示は、「GPS Status」という別アプリを起動します。このアプリケーションはGPSの衛星受信情報の表示と、A-GPSデータ(GPS衛星の補正情報をネットワークで配信するもの)のダウンロードを行います。A-GPSのダウンロードにより、GPSのFIXまでの時間が著しく向上します。GPS衛星の状態が知りたい場合、コンパス表示を行うとよいでしょう。
GPS Statusは無料版と有料版があり、その差はAD広告が表示されるかどうかです。
ネットワーク状況もあまりよくない場合は、AD広告の表示が負荷を与えることもあるでしょうから、業務で使用する場合は、有料版を購入されたほうが良いでしょう。

通知バー
通知バーは、フィールド調査でパーティを組んでいる場合にお互いに現在位置を伝える機能とパニック時に通知を行う機能です。SMSで現在位置のメッセージ通知を行います。
設定画面で設定された通知電話番号に、OpenStreetMapの座標値を送ります。
通知電話番号はxxxxxxx,xxxxxxxxx,xxxxxxxx,のようにカンマで区切って複数登録できます。



Geopaparazziのイイところ(1)

地図表示-タグノート追加
タグノートはGeopaparazzziのもっとも重要な機能です。Geopaparazziでは、あらかじめ定型のノートフォームを準備しておき、これを利用してフィールド調査での定型フォーマットへの入力を行います。

地図表示の アイコンをクリックすると下図の画面が表示されます。

スケッチ

上部のMAP CENTER NOTES は Geopaparazziの固定ノートメニューです。ダッシュボードのノート機能のうち、ノートと写真とスケッチの入力を行えます。
note placed in gps position は地図の中心位置にノートデータを入力します。

下部のフォームノートは、先に説明した定型のノートフォームによる入力ボタンの例です。

ソースコードにタッチすることなく、ユーザー定義のノートをカスタマイズ出来ます。
インストールされたGeopaparazzziにはサンプルのノートフォームが用意されていますが、アプリ内ではカスタマイズの方法は特に説明されてません。初めて使用された方は、ここで「?」となってしまって、「どう使っていいかわからーん」となってしまうようです。

カスタマイズ方法
Geopaparazziでは、あらかじめ定型のノートフォームを準備しておき、これを利用してフィールド調査での定型フォーマットへの入力を行います。Geopaparazziの下記のドキュメントページを参考にフォームのカスタマイズ方法を説明します。
https://code.google.com/p/geopaparazzi/wiki/AddNoteByTag3
タグノートの書式はJSONを使用して書かれています。

Geopaparazziで使用するJSONの構造例は次の通りです。

[
{
"sectionname": "セクションの名前",
"sectiondescription": "セクションの説明",
"forms": [
{
"formname": "フォームの名前",
"formitems": [
{
"key": "キー名称1",
"value": "初期値",
"type": "型",
"mandatory": "yes"
},
{
"key": "キー名称2",
"value": "初期値",
"type": "型",
"mandatory": "yes"
}
]
}
]
}
]

このフォームをGeopaparazziに読み込ませた場合、「セクションの名前」というボタンが地図表示のタグノート追加画面に表示されます。

このボタンを押すと、次の画面が表示されます。 

サンプル

キー名称1を選択すると、設定された型に応じた入力画面が表示されます。

使用可能なタグは、
「text」「numeric text」「date」「time」「labels」「boolean」「combos」「pictures」「map」
です。

詳しいタグの記載については、https://code.google.com/p/geopaparazzi/wiki/AddNoteByTag3を参照してください。


例題

次の定型フォームを作成しましょう。
テキストエディタを使用して、UTF8の文字コードで、「tags.json」という名称で保存します。

帳票のセクション名:Geopaparazzi調査票サンプル
タイトル:Geopaparazzi調査票サンプル
調査場所:date
日時:date
設備項目:ラベル
設備分類:コンボボックス
   電気設備
   水道設備
   ガス設備
使用可:チェックボックス
設備名称:テキスト
型式備考:テキスト
設備写真:ピクチャ

「tags.json」が出来上がったら、次のサイトで構造が正しく読み取れるかどうか、チェックしてください。
http://www.artemis.ac/contents/javascript/sorc/jscopy20ex.htm


答え

[
    {
        "sectionname": "Geopaparazzi調査票",
        "sectiondescription": "Geopaparazzi調査票ハンズオン作成",
        "forms": [
            {
                "formname": "ハンズオン会場調査",
                "formitems": [
                    {
                        "key": "調査場所",
                        "value": "",
                        "type": "string",
                        "mandatory": "yes"
                    },
                    {
                        "key": "日時",
                        "value": "",
                        "type": "date",
                        "mandatory": "yes"
                    },
                    {
                        "key": "設備項目",
                        "value": "",
                        "type": "label"
                    },
                    {
                        "key": "設備分類",
                        "values": {
                            "items": [
                                {"item": ""},
                                {"item": "電気設備"},
                                {"item": "水道設備"},
                                {"item": "ガス設備"}
                            ]
                        },
                        "value": "",
                        "type": "stringcombo"
                    },
                    {
                         "key": "使用可",
                         "value": "",
                         "type": "boolean"
                    },
                    {
                        "key": "設備名称",
                        "value": "",
                        "type": "string"
                    },
                    {
                        "key": "型式備考",
                        "value": "",
                        "type": "string"
                    },
                    {
                        "key": "写真",
                        "value": "",
                        "type": "pictures"
                    }
                ]
            }
        ]
    }
]


これで定型フォームの準備は整いました。


ユーザー定義の定型フォームのインストール
Android端末の/sdcard/Geopaparazzi/のフォルダに同名の「tags.json」というファイルがあります。このファイルを先ほど作成したファイルに置き換えます。
置き換えにはESエクスプローラ等のファイルマネージャを利用しましょう。
このときもしGeopaparazziが起動していたら、先に終了させてください。

Geopaparazziを起動して、地図表示からタグノート追加を行います。

FORM BASED NOTESの下に「Geopaparazzi調査票」というボタンが表示されたら正しいタグ記述がされています。
もし表示されない場合は、タグ記述が間違っているので、再度修正してください。

ところで、この定型フォームは「新しいプロジェクト」を選ぶと消えてしまいます。
なぜかというと、Geopaparazziのインストールモジュールは初期の「tags.json」ファイルを持っており、最初に起動されたときと「新しいプロジェクト」を選択した場合にこの初期ファイルを/sdcard/Geopaparazzi/のフォルダにコピーします。

端末で常に例題で作成したフォームを使用するように設定するには、インストールに使用するapkファイルの中身を変更します。
変更するといっても、実際にはプログラムを作成しなおす必要はありません。
Androidのアプリケーションインストールファイル「.apk」は実はZIP形式の圧縮ファイルです。拡張子を.zipに変更すると、解凍ができます。
解凍されたフォルダ内に、/asset/tags/tags.json というファイルが存在します。このファイルを上書きして、再度フォルダ全体をzip圧縮します。拡張子を.apkに変更すると、Android端末にインストールできるようになります。


Geopaparazziのイイところ(2)
Geopaparazziはオフライン地図を使用することが出来ます。
http://download.mapsforge.org/maps/
からダウンロードして使うことが出来ます。
なんと、実はQGISからGeopaparazzi用のオフライン地図を作ることが出来るのです。
http://plugins.qgis.org/plugins/?page=4
からインストールしてください。
QGIS Plugin

プラグインのインストールが完了したら、Geopaparazziアイコンをクリックしてタイルを生成します。
タイル生成画面
※地図は国土地理院 基盤地図情報を使用し、カラーをGoogleMap(旧)風にしてみました。

ベースタイルの大きさで、各サイズのタイルの綺麗さが決まります。
WIDTH[pixel]の値を大きくします。
Geopaparazziで使用するズームレベルを入力します。詳細なフィールド調査では16では小さいようです。
20位まで出力したほうが良いでしょう。
Output Directoryで出力先のフォルダを指定したら、OKボタンを押します。
Logにタイルの作成進行状況が出力されます。
エラーが発生しなければ正しく終了したということになります。

画面の例では次のとおりに出力がされました。
タイルを出力したフォルダ
タイルリスト
tile_sourceフォルダ
タイルリスト

出力したディレクトリ全体を、スマホの sdcard/mapsにコピーします。
Geopaparazziはsdcard/maps内のサブディレクトリからサポートしているファイルタイプすべてを検索します。サポートしているファイルタイプは次の通りです。

ファイルタイプ:
Offline Maps
.map [mapsforge,openandmaps]
.mbtiles [mapbox | https://github.com/mapbox/mbtiles-spec]
.sqlite or .db [geopackage databases]

Geometries
.sqlite or .db [spatialite Geometries]

Custom tiles based maps (local and remote) and wms-servern
.mapurl [geopaparazzi specific description file}

定型フォームタグの変換
さらに、Tagをコンバートすることも出来ます。
こちらはQGIS2.0から利用可能です。
また、Grass GIS用のTagコンバータもあります。



Geopaparazzi V3はリリースしたばかりで、機能はどんどん改良されてゆきます。
今後の機能改良では、更に簡便なカスタマイズ機能が搭載されるかもしれません。特にgeopap-browserはどのようになってリリースされるのか大変楽しみです。

https://code.google.com/p/geopaparazzi/wiki/ProjectsUsingIt にユーザー事例が掲載されています。
日本の事例では、「Disaster Management Information System」というタイトルで、大阪市立大学・大阪水道総合サービス・応用技術株式会社が製作したシステムが紹介されています。Geopaparazziの基本機能に、KMZをWebサーバへアップロードしてWebGISでマッピングする仕組みを構築しました。
http://dmis4owgs.info:8008/trans/web/login.php
でデモンストレーションをみることができます。

OSGeo.JP コメント:- トラックバック:- [Edit]  Top Page.△

明日は明日の風が吹く

2013年11月30日[21:57:58]
えー('A`)
久しぶりに自分のブログを覗いたら、前回のアップが去年のFOSS4G Advent Calendar 2012だったってことがわかって、驚愕しました。
いかにFacebookとTwitterが簡単で便利とはいえ、自分のブログを放置しちゃあいけないねということで、これからはちょくちょく書き込みしようかなと反省しました。
明日はFOSS4G Advent Calendar 2013、まだぼんやりとしかネタを考えてません。まあ、掘り起こしたら何とかなるでしょう(´・ω・`)
ってことで、明日もよろしくお願いします。

OSGeo.JP コメント:0 トラックバック:0 [Edit]  Top Page.△

春が来た(・∀・)

2013年03月09日[08:37:23]
春はあけぼの。
やうやう白くなりゆく山際、少しあかりて、紫だちたる雲の細くたなびきたる。

という枕草子の書き出しを思い出した。
昨日は新大阪のお客さんのところで頑張ってたが、夜23時に新大阪駅のホームで電車待つのが全く苦にならなかった。電車の中で周りの人のくしゃみや鼻水の音とともに春の訪れを実感した。
だんだん愉しくなってきた。

近頃は・・・ コメント:0 トラックバック:0 [Edit]  Top Page.△

MGOSとタイルの奇妙な冒険

2012年12月05日[23:59:07]
FOSS4G Advent Calendar 2012

クリスマスまであと20日切りました今日この頃、皆さんいかがお過ごしでしょうか。
わたくしめは、11月末にクラッシュしたソースサーバのRAID復旧やら、業務重複やらで、内心苦しみまくっている年末です。
そして今年最大のプレゼントがこれ、「MGOSとタイルキャッシュ」です。
正直、これだけは手を出したくなかったという話なのですが、どーしても何とかしてほしいという方々からの依頼でトライすることになりました。
( ;∀;)

タイルサービスのおさらい

開発者向けに一般的にタイルサービスというと、GoogleMapsやらBingMapやらOpenStreetMapで提供されていて、OpenLayersを介して利用可能です。
農業環境研究所の「歴史的農業環境閲覧システム」や最近では国土地理院の「電子国土Web.NEXT」もOpenLayersからタイルサービスを利用してますね。
これらのタイルは完成物としての1枚物の超巨大地図画像を分割したようなイメージになっております(細かいところは説明ぶっとばしてます)。
デザインの腕の差はありますが、静的な地図データをリーズナブルにかつ高速にサービスすることが出来ます。
なんでそんなもの使ってるかというと、地図を作るバックグラウンドのデータはかなり大きなサイズだったり、複雑な条件構造をしているため、1枚の地図画像を作り出すのには非常に時間が掛かるからです。地図画像を生成するオーバヘッドが大きいため、WebGISサービスは遅いというクレーム対応が必ずついて回ります。
また近年は航空写真や衛星写真データをWebGISで利用するニーズが増えてきました。
これらは1画像ファイルが200MB位になっていて、表示したい地域全体をカバーする枚数必要になります。仕様によっては、あっという間に100GB、1TB位になってしまうわけです。
サーバーサイドの話をしましょう。
一般的なデスクトップPCで、ディスクの実際の転送速度は50MB/秒~100MB/秒です。
サーバ用途のハードディスクで、転送速度は100MB/秒から1GB/秒くらいでしょうか。
最近流行のSSDでRAID0で高速なストレージ領域を作った場合でも、搭載されているHDDインタフェースが接続されているバスのスピードに限りがあるので、大体1GB/秒で頭打ちです。
よって、GoogleやBingみたいな巨大設備でもない限り、1台のサーバでは利用者全員のデータリクエスト総計が1GB/秒になったところで、物理的な頭打ちが発生します。
お金がたくさんあれば、高速なサーバを多数使用して、Googleのように見かけの値をよくすることはできます。

一方、OpenLayers等のクライアント側の表示系では、狭い画面に4~9枚のタイル画像が読み込まれています。1枚当たり250KB程度として、1利用者あたり1MB/秒くらいのリクエスト量があれば、難なくお仕事がこなせる計算になります。
これを逆算すると、サーバでは1000リクエスト/秒をこなせることになります。
勿論、これは絵空事で、ネットワーク回線のスピード、ファイアウォールのスピード、GISエンジンのオーバーヘッドが割り引かれるため、200リクエスト/秒でも厳しいと思います。
けれども、タイルを使用しない場合は、GISエンジンは背景画像となる地図データ200MB×数枚を読み込んで、必要な領域を切り出して、表示スケールに応じた縮小を行い、ネットワークにレスポンスを流すという処理を延々行うことになります。
タイルを導入すれば、利用者の要求により近づいたレスポンスを実現することが出来るということは間違いありません。
というわけで、タイルサービスはモテキに突入してるわけです。
tilesize.jpg

MGOSのタイル

GISを使った方なら理解されておられると思いますが、地図システムでは、道路や鉄道、川や構造物、航空写真や衛星写真のレイヤーを、表示スケールに応じて自動的に組み合わせて、さらにスケール毎にレイヤーの表示・非表示を変更したいという仕様がよくあります。タイルサービスでこれらの組み合わせを作るには、予め各レイヤー毎にタイルを作成し、ON/OFFに伴うタイルと動的レイヤーの合成をウェブアプリ側で行います。

先の一般的なタイルと、MGOSのタイルキャッシュとは構造が少し異なります。
スケールとレイヤーのON/OFFはMGOSによってサーバ側で制御され、タイルと動的なレイヤーが合成された画像がレスポンスとして生成されます。
レンダリングサービスの理想像はかなりのものです。

MapGuideでこれらの設定を行うには、MapGuideStudioまたはMapGuide Maestroを使用し、次のように操作します。

1)データ接続サービスで、GeoTiffファイルの接続設定を行います。
GeoTiffファイルをまとめて入れたフォルダを指定することが出来ます。
フォルダ内に不要なファイルを入れるとエラーになりますので注意してください。
データ接続サービスでは、元データの座標系と投影変換の座標系が設定できます。
2)レイヤーを作成し、データ接続サービスで作成した「Feature Source」を指定します。ここで表示するスケールの設定を行います。
3)MapDefinitionを作成し、地図レイヤーの重なりと全体の投影系を指定します。マップの最大表示範囲を設定することが出来ます。
4)Layoutを作成し、ブラウザの表示に使用するフレームワークを指定します。
ベーシックなAjaxViewerとアプリケーション風のFusionが設定可能です。表示する地図は3)で作成したMapDefinitionを指定します。

ここで、作成されたレイアウトで一旦パフォーマンスを見てみましょう。
・・・5分くらいたったのですが、まだこんな感じです。
tiles_continue.png

(-。-)y-゜゜゜

で、一旦MapDefinitionに戻り、タイルキャッシュを設定することにしましょう。

設定が終わったら、もう一回同じレイアウトを表示してみます。
一回目はタイルキャッシュが生成されるので遅いですが、2回目に同じところを表示すると、タイルキャッシュを返すようになるため、高速に表示されるようになります。

さて、これでタイルキャッシュ終わったかと思うでしょうが、そうではありません。
WebGISサービスで必要な1回目から高速ってところがクリアされてないじゃないですか。


奇妙な冒険の始まり

MapGuide OpenSourceのタイルキャッシュの自動作成は、Maestroに付属している「MgCooker」を使用して行います。
MgCookerはMaGuideのMapDefinitionの設定を解析し、地図の領域設定値と表示スケール設定を使って、自動的に小縮尺から大縮尺のタイルを生成するためのリクエストをMapGuideに送ります。MapGuideはリクエストに応じてレンダリングした地図画像を生成し、タイルキャッシュサービスが所定のフォルダにデータを格納します。

...そしてこれが、果てしなく時間が掛かるのです。
ちらっと見たところ、10000時間とか表示されることも。そんなにMGOS安定してるか?
と涙目になりました。

納期に間に合わせるためには何とかしてクリアしなければなりません。
あれこれ調べて見つけたのが、でっかいTIFF画像作って、カットすればいいじゃないか。俺が作ったよ。っていうコメントもの。これは普通にgdalを使ってタイルづくりをしている人は使ってますから、ちょっと期待したのですが、ソースが無くなってました。
残念。
しかし、FdoToolsを作成しているJackie NgがMgcookerの高速版を作ったとのこと。
クライアント側FDOがネットワークベースのリクエストを出力するところを、そのリクエストを受けたことにして、MapGuideのAPIを直接コールするものです。

悪い予感がしますがさっそく使ってみましょうw

MGOSとMgcookerを使用した高速タイル生成ですが、次の通りです。

1)VisualStudio2010をインストール(お試しなら評価版でどうぞ)
2)MaestroSDKをダウンロードしてc:\MaestroSDKに解凍
ドライバ作成中
3)C:\MaestroSDK\LocalNativeProviderのreadmeに従って、LocalNativeProviderをメイク。生成用のプログラム「ProviderTemplate.exe」にはMaestroの各バージョンに対応してそうなUIがありますが、2.4にしか対応してないです。
コンパイル終了

4)出来上がったBin、Libディレクトリの中身をC:\Program Files (x86)\OSGeo\MapGuide Maestro 5.0b5\AddIns\Localに上書きコピー
5)ConnectionProviders.xmlに下記を追加

Maestro.LocalNative
Connection using the MapGuide Native API for MGOS 2.4.0
OSGeo.MapGuide.MaestroAPI.Native-2.4.0.dll
OSGeo.MapGuide.MaestroAPI.LocalNativeConnection


6)Mgcookerでuse different connection を設定
Administrator/ admin 等にする。
connect using native APIをチェック

7)タイル生成を実行する。
タイル生成スタート


通常版の約2倍のスピードが出てることになります。
速度比較


おおっ!あっという間にタイルが出来上がったじゃないか!すごいっ
と思って、タイルキャッシュフォルダをのぞいてみたところ、

tiles.png

出来てるじゃないか!w

しかしよくよく見ると・・・
、、、こんな感じに。

nodata-tile.png

「でっ、出来てねぇえ。あれほどの手間をかけて・・・」

「こいつはくせえーッ!ゲロ以下の匂いがプンプンするぜーッ!!こんな悪(ワル)には出会ったことがねえほどなァーッ!環境で悪人になっただと?ちがうねッ!!こいつは生まれついての悪(ワル)だッ!」(スピードワゴン)第2巻

「お前は今まで食ったパンの枚数を覚えているのか?」(ディオ)第3巻

「神がいるとして運命を操作しているとしたら!俺たちほどよく計算された関係はあるまいッ!」(ディオ)第5巻

「き…切れた。ぼくの体の中で何かが切れた…決定的な何かが…」(ジョナサン)第5巻

「ジョジョ!ジョジョ…!?こ…こいつ…死んでいる…!」(ディオ)第5巻


はっ!ジョジョ風に煽っている時ではなかったぁ!!


「たったひとつだけ策はある!とっておきのやつだ!いいか!息が止まるまでとことんやるぜ!フフフフフフ。逃げるんだよォォォーッ!」(ジョセフ)第12巻

納期ってなに?ウフフッ

OSGeo.JP コメント:0 トラックバック:0 [Edit]  Top Page.△

今年の春

2012年02月18日[18:36:51]
今年も我が家は受験シーズンなわけです。

お姉ちゃんに続いて妹も同じ方面に進むことになりました。
まるでカーネーションのようだ。

2名を遠くに進学させるのは財政的に不可能なため、地元でなんとか頑張ってもらいます。

まだ、国公立大の試験が控えてます。後少し面倒をみなければなりません。
とりあえず小論文を添削してますが、なかなかの出来栄え(汗

とにかく最近の若い人は文庫本や雑誌などほとんど出版物を読まないので、文章が稚拙です。
書きたいことはともかく、文章表現も大事ですから、スゲー、イケル、ヤバイみたいな表現だけでは小論文にはなりません。
また、学校生活全体で目立たぬよう自己表現を押さえて生きるよう訓練されているので、文章に自分の意見を堂々と書くことが出来ないようです。

こまったこまったw

受験勉強のぼさぼさ髪をとかすのにはこういうブラシも良いですね。




◆続きを読む・・


近頃は・・・ コメント:0 トラックバック:0 [Edit]  Top Page.△

MapGuide Open Source入門

2011年12月13日[21:53:03]
今回は Advent Calendar 特別企画だ 昨日のコピペですべりだし。


http://atnd.org/events/23085 参照。
http://d.hatena.ne.jp/waigani/20111210、 http://d.hatena.ne.jp/wata909/20111211、 http://d.hatena.ne.jp/yellow_73/20111212 がハードルを高くしてくれたおかげで、いささかテンションが下がりながら進行しましょう。


元々「MapGuide Open Source」の支援のため、OSGeo.JPに入会して活動を行っていた私ですが、いつの間にかその初心も忘れ、「ZOO-Project」や「goGPS-Project」に力を入れておりました。
私が手を抜いている間も孤軍奮闘されている井上さんの努力のおかげで何とか日本でもプロダクトが消滅せずにバージョンアップを続けている「MapGuide Open Source」ですが、今日はその知られざるポテンシャルと知られざるバグについて書いときますね。

□MapGuideって何ナノとおもっている方
相当おられます。「MapGuide Open Source」はオートデスク社の商用製品であった「MapGuide」がオープンソースプロダクトとして商用コードを公開したものです。
元の「MapGuide」はオートデスク社のCAD「AutoCAD」のDWGデータをWEB公開できるエンジンとして発表され、最終バージョンでは高負荷環境でも結構なパフォーマンス性能がありました。
大手ベンダーが製品のソースコードをオープンにするのは異例で、公開プロセスは後になって解りましたが、当時すごく驚いた記憶があります。
「MapGuide Open Source」はCADデータも扱えるオープンソースWeb-GISエンジンとして進化したFOSS4Gプロダクトです。

詳しくは、このハンドブックを参照ください。

MapGuide Open Sourceプロダクトホーム:http://mapguide.osgeo.org/



□MapGuide Open Sourceの特徴

・簡単なインストレーション
・オールインワンマッピングサービス
・オーサリングツールがある(マップファイルしこしこ書かなくてもおk)
・標準ビュアーフレームワークがついてる。
・Windows、Linux、スマートフォンに対応している
・PHP、.net、JAVAでコード作成ができる
・多くの地図データ形式に対応する
・ブラウザはIE、FireFox、Chrome、Safariに対応する
・分散処理対応

という特徴があります。
素人からマニアまで広く対応しています。

あまりに機能が多いので、コミュニティのコアメンバーが苦しんでいるプロダクトの一つでもあります。


□MapGuide Open Sourceでできない事

・ラスターのバンドカラーデータの取り扱い
 現バージョンではグラデーション等の扱いが出来ません。グレースケールで出力することはできます。
 内部でGDALをコールしているので、本気になれば対応可能でしょう。ラスター系のコア(オタ)メンバーが少ないことに依ります。
・DWGの直接ドライブ
 近い将来に出来るようになるでしょうw
・グラフ
 今のところ誰も搭載しようと言い出していないようです。
・解析処理
 GRASSやZOOに任せたほうが良いので、これも搭載しようとは思っていないようです。

グラフや解析処理は、WFS/WMS/WPS のサービスを通じて別のコミュニティプロダクトのエンジンが出力する方がハンドリングが良いです。
MapGuide Open Sourceコミュニティで面倒を見る必要はないでしょう。


□MapGuide Open Sourceの良いところ

・何でも取り込めるFDOインタフェースによる地図データハンドリング
 データ形式によって制限があるものもありますが、多くのデータ形式をR/Wすることができます。
・結構早い
 結構デカイデータ群をドライブしても、何とか表示してくれる。
・オーサリング
 ツールが付属してるので、画面で確認しながら色、フォント、透過、座標系、投影系などを調整できる。


□MapGuide Open Sourceの悪いところ

・Undocumentedが結構多い。
・安定性に欠ける場合がある。
・コミュニティにハブられる。


□知られざるバグ(FDOかも)

・「status」という名前の属性が使えない
・データベースのViewをレイヤーリンクできない
・PostGISプロバイダーで、「少量、通行不可能」というUTF8文字列のフィールドを読み込むとMapGuideのレンダリングサービスがクラッシュする
・PostGISプロバイダーで、「少量、通行不可能」というUTF8文字列を書き込めない(FDO)
・Fusion WebLayoutで、主題図を設定したレイヤーで同一点に多数データがあるポイントをセレクトすると、AJAXエラーが発生する。

直したよっていう人、コメントください。
他にもあるよっていう人、コメントしてください。


□日本語化してないじゃん

オートデスクさんが日本語化したものを製品販売しているので、商売の邪魔になるかなと思い発表してませんが、日本語化ファイルはあります。
FOSS4G2011 TOKYO/OSAKAで行われた「MapGuide Open Source入門」ハンズオンで講習した日本語化方法について、説明しておきます。

AJAX VIEWERの日本語化
・www/localized/ の 「en」ファイルを「ja」という名前でコピーする。
・「ja」の内容を編集し、英語文字列を日本語文字列に置換える。
・license_en.htm を license_ja.htm にコピーする。
・PoweredBy_en.gif を PoweredBy_ja.gif にコピーする
・help/en/* を help/ja/* にコピーする。
・help/ja/のhtmlファイルを編集し、英語文字列を日本語文字列に置換える。
・www/mapagent/Resources/mapguide_en.res を mapguide_ja.resにコピーする。
・mapguide_ja.res の内容を編集し、英語文字列を日本語文字列に置換える。


Fusionの日本語化
・www/fusion/text/en を ja にコピー
・jaの内容を編集し、英語文字列を日本語文字列に置換える。
・www/fusion/text/en.json を ja.json にコピー。 ja.jsonの内容を編集し、英語文字列を日本語文字列に置換える。
・www/fusion/lib/fusionSF.js を編集し、 Fusion.Strings.en = { } の後にja.jsonの中身をペーストする。
・fusionSF.js を 「YUI Compressor」 で圧縮し、fusionSF-compressed.js に上書きコピーする。
・www/fusion/widgets/widgetinfo/ の各 xml ファイルの内容を編集し、英語文字列を日本語文字列に置換える。


ファイルを日本語化しなくても、メニューやデータは日本語で表示されます。
上記はエラーメッセージや細かなダイアログ部分の表示メッセージについてのローカライズになります。

OSGeo.JP コメント:0 トラックバック:0 [Edit]  Top Page.△

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。