「GIS」カテゴリーアーカイブ

OpenLayers マルチサーバーで高速表示?

OpenLayersで地図画像を表示させる時には、タイル画像を表示させているが、そのタイル画像をサーバーからダウンロードしてくるのが遅いと、表示に掛かる時間が遅いように思える。

そこで、サーバーから同時並行的にダウンロードを行う方法として、複数のサーバーから並行して取り出すことにする。

単純に対象となるURLを配列に入れて指定するだけ。

さて、まだ試していないが、これくらいなら試してみる価値ありですね。

試してみたら、速い!

でもCPUコア食うねぇ~w
負荷設計なども考慮して使わないと、たくさんの人が見に来るサーバだと大変かも知れない。

諸刃の剣ですね。

 

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

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

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

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

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

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

余談・・・・

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

地域メッシュを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時間くらい掛かるかな?根気よく待つべし!
大量のメッシュを作成したい場合には、細分化して実行するか、もしくは他の方法を考えた方が良いかも知れません。
お手軽ではありますが、時間が掛かります。

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
って、サイト立ち上げたばかりで、だれも見てくれていないだろうに・・・・