OruxMapsでGoogle Map Hybridを使う

Google Map Hybridを使う方法。

/mnt/sdcard/oruxmaps/mapfiles/onlinemapsources.xml

に以下の分を追加する。

<onlinemapsource uid="1">
	<name>Google Maps Hybrid</name>
	<url><![CDATA[http://mt{$s}.google.com/vt/lyrs=y&hl=ja&x={$x}&y={$y}&z={$z}]]></url>
	<minzoom>0</minzoom>
	<maxzoom>19</maxzoom>
	<projection>MERCATORESFERICA</projection>
	<servers>0,1,2,3</servers>
	<httpparam name=""></httpparam>
	<cacheable>1</cacheable>
	<downloadable>1</downloadable>
	<maxtilesday>0</maxtilesday>
	<maxthreads>0</maxthreads>
	<xop></xop>
	<yop></yop>
	<zop></zop>
	<qop></qop>
</onlinemapsource>

OruxMapsでGoogle Earthを使う

OruxMapsでgoogle mapを使う - tattii's blogの第2弾。

OruxMapsでGoogle Earthを表示する方法。

/mnt/sdcard/oruxmaps/mapfiles/onlinemapsources.xml

に以下の分を追加する。

<onlinemapsource uid="2">
    <name>Google Earth</name>
    <url><![CDATA[http://khms0.google.com/kh/v=149&src=app&x={$x}&y={$y}&z={$z}]]></url>
    <minzoom>0</minzoom>
    <maxzoom>18</maxzoom>
    <projection>MERCATORESFERICA</projection>
    <servers>0,1,2,3</servers>
    <httpparam name=""></httpparam>
    <cacheable>1</cacheable>
    <downloadable>1</downloadable>
    <maxtilesday>0</maxtilesday>
    <maxthreads>0</maxthreads>
    <xop></xop>
    <yop></yop>
    <zop></zop>
    <qop></qop>
    <sop></sop>
</onlinemapsource>


Android端末内のファイルを編集するには、AirDroidを使って一度パソコンにファイルをダウンロードして、編集したファイルを同じ場所にアップロードするのが簡単。

CentOSでPostgreSQLのデータベースの格納場所を変更する

CentOSPostgreSQLをインストールしてデータベースの格納場所を変更するときにSELinuxではまったので、やったことのメモ。

環境

CentOS 6.4
PostgreSQL 9.3.4
SELinux Enforcing

データベース格納場所

デフォルト: /var/lib/pgsql
変更先: /home/pgsql

1. ディレクトリ作成

# mkdir /home/pgsql/data

2. 所有者、パーミッション変更

# chown -R postgres:postgres /home/pgsql
# chmod -R 700 /home/pgsql

3. PostgreSQLの設定ファイル編集

# vim /etc/sysconfig/pgsql/postgres
PGDATA=/home/pgsql/data
PGLOG=/home/pgsql/data/pgstartup.log

4. データベース初期化

# su postgres -c "initdb -D /home/pgsql/data"

5. SELinuxのコンテキスト設定

PostgreSQLのデータベースには postgresql_db_t ラベルが必要。

# semanage fcontext -a -t postgresql_db_t "/home/pgsql(/.*)?"
# restorecon -R /home/pgsql

6. SELinuxポリシー設定

postmaster(postgresqlの実行プロセス)が/homeにアクセスできるよう設定する。
(違う場所にデータベースを格納する場合も、/から格納場所までのすべてのディレクトリに以下のような設定が必要)

postmasterのドメインpostgresql_t
/homeのタイプは home_root_t

6.1. ポリシー・ソースファイル作成

適当な場所にpostgres_local.teを作成

# vim postgres_local.te

module postgresql_local 1.0;

require {
    type postgresql_t, home_root_t;
    class dir { search getattr };
}

allow postgresql_t home_root_t:dir { search getattr };
6.2. モジュールのコンパイル、インストール
# checkmodule -M -m -o postgres_local.mod postgres_local.te
# semodule_package -o postgres_local.pp -m postgres_local.mod
# semodule -i postgres_local.pp

7. 起動

# service postgresql start
Starting postgreSQL service:                 [  OK  ]

OKと出れば起動成功。



参考
11.4. 設定例

OruxMapsでGoogle Mapを使う

OruxMapsがめっちゃ高機能ですごい。

でも、そのままではgoogle mapを見れないので追加する方法を調べた。

/mnt/sdcard/oruxmaps/mapfiles/onlinemapsources.xml

というファイルを開いて、以下の分を追加するだけ。

<onlinemapsource uid="0">
	<name>Google Maps</name>
	<url><![CDATA[http://mt{$s}.google.com/vt/lyrs=m@121&hl=ja&x={$x}&y={$y}&z={$z}]]></url>
	<minzoom>0</minzoom>
	<maxzoom>19</maxzoom>
	<projection>MERCATORESFERICA</projection>
	<servers>0,1,2,3</servers>
	<httpparam name=""></httpparam>
	<cacheable>1</cacheable>
	<downloadable>1</downloadable>
	<maxtilesday>0</maxtilesday>
	<maxthreads>0</maxthreads>
	<xop></xop>
	<yop></yop>
	<zop></zop>
	<qop></qop>
</onlinemapsource>

これでオフラインの地図も保存できるようになる。

参考: 2013-11-10 - 左利きの憂鬱

追記: Google Mapの他の地図を使う方法について

Google Earth (航空写真) - OruxMapsでGoogle Earthを使う - To The Sky!
Google Map Hybrid (航空写真+道路地図) - OruxMapsでGoogle Map Hybridを使う - To The Sky!

Hybridがおすすめ。

JavaScriptでsvgをpngに変換して保存する

d3.jsで作ったsvgpngに変換して保存する方法。

1.svgcanvasに描画。

GitHub - canvg/canvg: Javascript SVG parser and renderer on Canvas

canvg("canvas", "<svg>...</svg>" );

2.canvasをtoDataURL()で、Base64エンコードした文字列に変換。

toDataURL() メソッド - Canvasリファレンス - HTML5.JP

var png = document.getElementById("canvas").toDataURL();

3.pngとして保存。

いろいろ方法があるみたい。
chrome, firefoxではa要素にdownload属性をつけるとうまく1clickで保存できるので、無理やりリンクを生成してclickイベントを発生させている。

dot mapで使ったコード

$("#save-png").click(function(){
	$("#map").hide();
	$("#map-container").append(
	    '<canvas id="canvas" width="' + width + 'px" height="' + height + 'px"></canvas>'
	);
	canvg("canvas", $("#map").html() );

	var png = $("#canvas")[0].toDataURL("image/png");
	png = png.replace("image/png", "application/octet-stream");

	$("#map-container").append(
	    '<a id="png" type="application/octet-stream" href="" download="dotmap.png">saving...</a>'
	);
	$("#png").attr("href", png);
	$("#png")[0].click();

	$("#map").show();
	$("#canvas").remove();
	$("#png").remove();
});

dot mapをリリースしました。

ドットの日本地図に色塗りができるdot mapをリリースしました。

http://azuresky.fam.cx/d3/dotmap/
f:id:tattii:20130919070349p:plain

できること

  1. ドット日本地図に色塗り
  2. local strageに保存
  3. pngとしてダウンロード

例えば

今までに行ったことのある場所を地図に表してみると。
f:id:tattii:20130919064455p:plain

説明

すべてJavaScriptで動きます。
svgを扱うのが得意なd3.jsを使用して作成しました。

ブラウザ

chrome, firefox, safariに対応。
ただし、safariでpngとして保存するときは表示される画像を右クリックで保存して下さい。