OpenLayersでタイル画像のキャッシュを消したい!!(追記:ダメだった)

OpenLayers 2.13.1の環境で、一度表示されたタイル画像が邪魔になる場合がある。
開発途中などで、画像を差替えたりする場合には良く発生する為、ごっそりタイル画像を更新した場合などは、ブラウザのキャッシュクリアを行っていた。
この操作は、ブラウザ毎に設定があったり、消したくないキャッシュまでクリアしなければならず面倒だし不便。

そこで、以下のファンクションを呼び出すことで、タイルキャッシュだけをクリアしてしまおうというのが今回の狙い!

追記:単純にこれだけやっても上手く消えないことが判明・・・
どうやって使うか解らないのだが・・・ということで、誰かがアドバイスしてくれるのを期待するが、参考にしないでください。

これで上手く出来そうなんだけど・・・やってみる!!

レイヤを指定してクリアできると嬉しいのだが、そこまでの機能は無いみたい。OL3で実現では出来るのかな?

余談・・・・

まだOL3は使ったことが無い。
ドラスティックに変わり過ぎてしまって、OpenLayers 2.xとは全く異なってしまっている。
コンバートするとかいうより、完全に書き換えが必要となる雰囲気である。
もう少し安定した事例が発表されるまで待つつもりだけど・・・業界の流れにも注目したいところである。

TigerVNCをLinux上で起動して、Windowsから接続する。

TigerVNCのインストール方法については割愛する。

1.環境

環境としては、

・Linux(CentOS 6.5)側にTigerVNCサーバをインストール済み。
・Windows 8.1側にTigerVNCのサーバーとクライアントをインストール済み

以前にインストール方法の記録を書いたと思ったのだが、書いてなかったみたい(^^ゞ。その内、書くことにして今回はインストール後の使用方法のみとする。

2.VNCサーバー側

2.1 起動方法

時折使う、TigerVNCの起動コマンドを以下に備忘録として書き残す。
勝手に起動していると、セキュリティ上気になるので、個人的には必要な時に必要なだけサーバーやクライアントを起動しているので、よく忘れるw

まず、TeraTermなどのターミナル端末を使って、Linux側で以下のコマンドを実行する。
TigerVNCの起動コマンドはこれだです。

> vncserver :1 -geometry 1600×900

:1はnumberとだけなっておりますが、vncserverが起動されている番号になるのでしょう。ある意味で、VNCのIDの様なものとでも覚えておけば良いと勝手に思っています。

 

2.2 その他の確認コマンド

起動方法以外によく使うコマンドは以下の通りです。

1)Help

vncserver –helpでヘルプ見れます。

# vncserver –help

usage: vncserver [:<number>] [-name <desktop-name>] [-depth <depth>]
[-geometry <width>x<height>]
[-pixelformat rgbNNN|bgrNNN]
[-fp <font-path>]
[-fg]
<Xvnc-options>…

vncserver -kill <X-display>

vncserver -list

2)起動リスト
vncserverの起動状況を一覧で確認することが出来ます。

vncserver -list

TigerVNC server sessions:

X DISPLAY # PROCESS ID
:1 10950
:3 27447

上記の場合は、1と3のX DISPLAYが与えられており、:1もしくは:3でvncserverへアクセスすることが可能であることが判ります。

3)VNCサーバーを個別に殺す

そのままkillです。

vncserver -kill :3
Killing Xvnc process ID 27447
Xvnc process ID 27447 already killed

なんか既に殺された後の様なメッセージが帰ってきましたが・・・
listを確認してみると・・・

vncserver -list

TigerVNC server sessions:

X DISPLAY # PROCESS ID
:1 10950

:3が消えているので、無事殺されていることが判りました。

以上でサーバー側の説明は終わりです。

3.クライアント側

クライアント側はWindows 8.1を使用しています。
Vistaや7でも動いているので同じだと思います。

TigerVNC Viewer  でアクセス先を指定して接続しパスワード入力でログイン完了!ちなみに、TightVNC Viewer for Windowsでもほぼ同じです。

xxx.xxx.xxx.xxxには、もちろんIPアドレスもしくはサーバー名を指定。
:1は、vncserver起動時に指定したパラメタと同じ値を指定する。

これでデスクトップ画面が表示されたら成功です。
画面サイズが小さかったり大きかったりする場合は、サーバー起動時の-geometryオプションのサイズを調整して適当なサイズにします。
なので、適当なサイズが見つかるまでに、Killしたり起動したり繰り返しですねw

取りあえず、本当に備忘録です。

以上

Windows環境にPerlをインストールする!(Strawberry Perl)

Windows環境にPerlをインストールする方法について記述します。

Active Perlが有名ですが、フリー版での商用利用はライセンスに抵触するため、個人利用以外の場合はStrawberry Perl がもう一つの選択肢と判断しました。

Strawberry Perlのライセンスは、GPLもしくはArtistic ライセンスになっているので、Active Perlよりは使い勝手が良さそうです。
また、Active Perlにおける以下の問題も気になった次第です。

  • CPANが標準で使用できない。(現在は改善されているみたいですね)
  • Perl本体のバージョンが詳細までは確認できなかった。
    Perl本体最新バージョン:5.20.1
    Active Perl:Perl本体バージョン 5.20
    Strawberry Perl :Perl本体バージョン 5.20.1.1

ということで、Strawberry Perl をインストールします。

Strawberry Perl のダウンロード

下記URLよりダウンロードします。
https://strawberryperl.com/

インストール

ダウンロードしたファイルをダブルクリックしてインストーラーを起動します。
対象ファイル:strawberry-perl-5.20.1.1-64bit.msi

NEXTで次へ

 ライセンス内容を確認したら、I Accept the terms in the License Agreement にチェックを入れて、NEXTで次へ

Linuxでは/usr/bin/perlなのですが・・・Perlのプログラムで記述する最初の一行目にパスを記述するので、変更してみる。

変更したら、NEXTで
<<<追記>>>
変更しても意味有りませんでした。
実際に作成されるperlの実行モジュール(perl.exe)は、下記のパスに作成されています。
c:\usr\bin\perl\bin\perl.exe

無駄な抵抗でしたという落ちですね。
まあ、気分ということでご勘弁ください。

Installを開始する。しばしお待ちを・・・ユーザアカウント制御の画面が出てきたらOKを押して続けてください。

完了すると以下の画面が表示される。

 README.txtがメモ帳などで開いているはずなので、一応一通り目を通して。。。。コマンドプロンプトを起動します。

コマンドプロンプトで以下のコマンドを実行すると、バージョン情報が表示されます。

perl -v

 以上でStrawberry Perl  のインストールと動作確認は完了です。

この後の使い方などについては、いずれまた。

 

Linuxでプロセスの性能測定を行う。

Linux上でプログラムの実行時間を計測する場合、timeコマンドを使用します。

私の場合、CentOS上で動作させることが多いのですが、その際に使用するのがtimeコマンドなのですが、bashに組み込まれているtimeコマンドが勝手に(当然ですが・・・)使われてしまいます。
そんな愚かな私のために、メモを残しておきます。

timeコマンドは、/usr/bin/timeを使用します。
いっそのこと、aliasで切りなおしたろか!?と思うくらいwww

で、使用方法はmanページに任せるとして、詳細な計測結果を以下のオプション付きコマンドで得ることが可能です。

$ /usr/bin/time -v command

-vオプションを指定することで、詳細な計測結果を出力してくれます。

その際、気になるのが以下の項目です。

Maximum resident set size 直訳すると、最大使用実メモリサイズ?となるのでしょうか?
ps auxで得られるメモリ使用量と比較してみても、大きく値に隔たりがあります。
起動時に使用するメモリが大きいのか?そんなはずはない!・・・ということで調べてみることに・・・・

Voluntary context switches この値が影響しているみたいです。
本当かどうかは微妙ですが、コンテキストスイッチが行われると、使用メモリも移動してしまう?そのために、Voluntary context switchesの値を掛けた値がMaximum resident set sizeになっているようだ。

つまり、Maximum resident set sizeをVoluntary context switchesで割った値が実質的な最大使用メモリサイズになる。

<まとめ>

/usr/bin/time -v command

で計測された結果で実行時間の計測が可能。

実質的な使用最大メモリは、

Maximum resident set size / Voluntary context switches

となる。

ps auxやpmapsで確認すると、概ね正しい結果をえられる。

今時のPCで数キロ単位のメモリ消費が異なっていても誤差にしか過ぎないと考えて、この値を採用することにしよう!

これを見て、間違っているようでしたら、どなたかご指摘してください。

セキュリティの関係上、コメント時にはメールアドレスを入力することになっていますが、実のところ、メールアドレスは存在しないメールアドレスでもOKです。
こうしておくと、下手な人がコメントすることもないので・・・・(^^♪

postGISでシェープファイルを登録する。

とうとう手を出してしまった。。。。(TT)

DB大嫌いな私が、とうとうこの世界に手を出してしまった。
まだ入口に足を踏み入れただけだから、初歩的なところから始めます。

今回のお題は、postGISを使ってシェープファイル(SHP)とCSVファイルを空間結合して、新たなシェープファイルを作成するところまでです。

Rを使ってなんとか頑張ってみようと試みたところまでは良かったのですが、以下の課題が発生しました。

  • シェープファイルを読込むのが遅い
  • 空間結合に至っては、遅すぎて戻ってこない。
    もしかするとやり方がまずかったか?
    こちらも初心者なので、まずかったかな?

少なくとも、シェープファイルを読込むのが遅い段階で、使えないなと諦めに入っている状況です。ただし、トータルメリットについては考える余地があるので、別途検討は進めたいと思っています。詳細は、気が向いた時にでも報告します。

さて、postGISを使ってシェープファイルを読込む方法について纏めます。

ステップは2段階です。

1)DBを作る。
#ネットで調べると意外と別々に記載されていて、調べるの面倒なので、ここにまとめてメモしておく。

既にDBを作成されている場合は、新たにDBを作る必要はありません。
この作業をスキップしてください。

createdb -U username -T postgis_21_sample new_dbname

 username : postgreSQLのユーザー名
new_dbname:新規にDB作成する場合のデータベース名
postgis_21_sample:テンプレートになるDB名称です。
postGISをインストールする時にインストールしたものを使うのでしょう。

2)シェープファイル(SHP)を登録する。

shp2pgsql [-d] shape_file.shp table_name | psql -U username dbname

もっともシンプルな書き込みで、DBに対しINSERT命令を繰り返し行います。
-dオプションは、既にデータが存在する場合に、一度削除してから書き込みます。

これを高速に行ってくれるコマンドをもう一つ見つけました。

shp2pgsql -D [-d] shape_file.shp table_name | psql -U username dbname

-Dオプションを使うと、postgresqlのDumpフォーマットを使って書き込みを行うので速くなります。基本的に問題がないならこちらがおすすめです。

今回はここまで。次回はこのデータにCSVを空間結合してシェープファイルを作成するところまで進めたいと思います。
シェープファイルの出力は分けた方が良いかも知れないので、次回考えます。

 

地域メッシュをQGISで作成する。

地域メッシュをダウンロードして使おうと思ったのですが、1/8地域メッシュが見つからなかったので、作成することにしました。

一から作ると意外と面倒なのですが、QGIS用に作ってくれている方が居たみたいです。

QGISのプラグインに「JapanMesh」なるプラグインを発見!!早速入れていました。

使い方はReadme.txtを見ると書いてあります。

まず、1次メッシュを作成します。

次に、2次メッシュを作りたい場所の1次メッシュを選択して、2次メッシュを作成します。

後は、この繰り返しです。

欲しかったメッシュは1/8メッシュだったのですが、求めていたコード体系と異なっていたので、変換ロジックを作って変換しました。

この時行ったロジックでは以下のコード体系(3次メッシュ以降)を変換しています。

元)

333 334 343 344 433 434 443 444
331 332 341 342 431 432 431 432
313 314 323 324 413 414 423 424
311 312 321 322 411 412 421 422
133 134 143 144 233 234 243 244
131 132 141 142 231 232 241 242
113 114 123 124 213 214 223 224
111 112 121 122 211 212 221 222

 

変換後)

0700 0701 0702 0703 0704 0705 0706 0707
0600 0601 0602 0603 0604 0605 0606 0607
0500 0501 0502 0503 0504 0505 0506 0507
0400 0401 0402 0403 0404 0405 0406 0407
0300 0301 0302 0303 0304 0305 0306 0307
0200 0201 0202 0203 0204 0205 0206 0207
0100 0101 0102 0103 0104 0105 0106 0107
0000 0001 0002 0003 0004 0005 0006 0007

 

変換に用いたロジックは以下です。

floor("m6code"/1000)*10000+(floor((("m6code"%1000)-100)/200)*2^2+floor((("m6code"%100)-10)/20)*2+floor((("m6code"%10)-1)/2))*100+(floor((("m6code"%1000)-100)/100)%2)*2^2+(floor((("m6code"%100)-10)/10)%2)*2+(floor((("m6code"%10)-1))%2)

それと、このプラグインはデフォルトで2000メッシュまでしかサポートしていません。
JapanMesh.pyの中に「2000」と記述されているので、ちょっと増やしてあげると便利です。

変更するプログラムファイルの保管場所を説明します。

対象ファイル:C:\Users\<ユーザ名>\.qgis2\python\plugins\JapanMesh\JapanMesh.py

ファイルの保管場所は、「プラグイン」→「プラグインの管理とインストール」→「JapanMesh」にインストールされているバージョンと保存場所が記載されています。
該当するフォルダーを開いて対象ファイルを変更すればOKです。

ちなみに、リミッターが2000メッシュまでとされているのですが、拡張して50mメッシュの4.8万程度を10mメッシュに分割したところ、すごく重たかったです。1時間くらい掛かるかな?根気よく待つべし!
大量のメッシュを作成したい場合には、細分化して実行するか、もしくは他の方法を考えた方が良いかも知れません。
お手軽ではありますが、時間が掛かります。

iPhone起動しない!

昨晩、フル充電したはずのiPhoneが、電源が落ちていて起動する事が出来ない!
壊れた?

丸ボタンを長押ししたり、スリープボタンを押しても反応無し。

ネットで調べたらサポートへ…
さらに調べて解った!!

スリープボタン(うえのボタン)と丸ボタンを同時に押し続けること15秒程…何事も無かったかのように、食いかけのリンゴのマークがf^_^;
復活した。

びっくりしたやんけ(♯`∧´)

RT MapServer Exporterを使いたい!

MapServerのmapファイルを作成するのに、QGISを使っていると、mapファイルを勝手に作ってくれるツールが欲しくなる。
でも、単純にプラグインをインストールして「RT MapServer Exporter」を起動しようとすると、以下の様なエラーに出くわす(^^ゞ
ちなみに、今回使用しているQGISは2.4の64Bit版です。

Traceback (most recent call last):
File
“C:\Users\xsc/.qgis2/python/plugins\rt_mapserver_exporter\plugin.py”, line 65, in run
from .mapfileexportdlg import MapfileExportDlg
File “E:/osgis/QGIS/apps/qgis/./python\qgis\utils.py”, line 453, in _import
<つづく>

なんでやねん!?と色々と調べるも・・・
結局答えはここに書かれていた。
https://plugins.qgis.org/plugins/rt_mapserver_exporter/
<以下抜粋>
It needs python-mapscript istalled in your machine. This is available as a Debian (therefore Ubuntu) package, and as a part of OSGeo4W on Windows.

ここでは、python-mapscriptが必要で、インストールしてあることが必要らしい。
なんじゃそりゃ?
ということで、プラグインにそんなんあるんかな?と探してみるも存在しない。
OSGeo4Wでインストールしていたので、Setupを起動して・・・

StartUp
StartUp

アドバンスインストールを行う。

RT_MapServerExp2

後は適当にデフォルトの設定を進める。
もちろん、インターネット接続する。

 

 

RT_MapServerExp3

フォルダー名は、インストール時の設定がそのまま反映されているはず。

RT_MapServerExp4

RT_MapServerExp5 RT_MapServerExp6

もくもくと進めると、時折、以下の画面で固まる時があった。

サーバーとの接続が上手く行かない時が頻繁にあるようだ?
私のネットワーク設定が影響しているのか不明であるが・・・そんなもんなのかな?とも思える。誰かコメントして頂けるとありがたい。

RT_MapServerExp7

 

10秒程待っても進まないときは、多分待っても無駄なので、キャンセルして最初からやり直した方が早い。
私の場合は、数回チャレンジすることもしばしばである。

 

RT_MapServerExp7

 

で、肝の部分です。
上記の3項目にチェックを入れて、インストールの対象にする。
これで、後はひたすら「次へ」を押して進めればインストールしてくれる。
で、お気付きの方もいらっしゃると思いますが・・・・
python-mapscriptではなくmapscript-python。。。になってるんですよね。Linuxだと正しい名前なのかな?とWindowsだからなのかは知らん!!

ということで、これを入れてから、プラグインの追加を行えば上手く動作させることが出来た。

ちなみみ、使い方については、解りません(^^ゞ

プラグインを追加すると、Web(W)というメニューが追加されるので、RT MapServer Exporter」を起動すると、以下の画面が表示されます。

RT_MapServerExp9

ここからは、誰かがきちんと書いてくれているサイトを探した方が良いと思うけど・・・

Map file Mapファイルの保存先(多分日本語はやめた方が良い)
Name 多分レイヤ名になってくるのかな?
Image type Webで使用するので、デフォルトpngでお好みに応じて。
Width / Height 私の場合は、Web使用するのであまり意味はないと思う。
Shape path Shapeファイルのフルパスを入力。
後で、Mapファイルが出来てから、相対パスに変更した方が良いと思います。
Online resource URL これっているのか?と思いますが。。。。そのまんまで(^^ゞ
Image path 出力先
Image URL URLでの出力先
Temporary path テンポラリ領域なのだが。。。必要なのかな?
External graphic regexp  解らん!

取りあえず、適当に書いて、Mapファイルを出力して中身を良くて見てみると、いっぱいダメな部分があるので、適当に書き換える。

感覚としては、Layerのセクションだけは、QGISの設定を反映してくれているみたいなので使えるけど、他は適当に使えるベースの様な物を準備しておいて、切り貼りする方が良さそうな気がした。

誰か詳しく説明してくれている場所があったら教えてくださいm(__)m
って、サイト立ち上げたばかりで、だれも見てくれていないだろうに・・・・