株式会社カーネルでは、GPS(eTrex10J)を使用した商圏等の計測を行うサービスを提供しています。
高層ビル街でのeTrext10Jの精度を計測するために西新宿を徒歩で計測してみました。
※GPS、GLONASS、みちびきを有効にしています。
株式会社カーネルでは、GPS(eTrex10J)を使用した商圏等の計測を行うサービスを提供しています。
高層ビル街でのeTrext10Jの精度を計測するために西新宿を徒歩で計測してみました。
※GPS、GLONASS、みちびきを有効にしています。
Windows2008R2(64bit)
IIS
PHP5.4.31の非スレッドセーフ版(IIS を使う場合は、非スレッドセーフ版の PHPのほうが安定しているらしい)
環境構築の為にダウンロードしたファイルは(php-5.4.31-nts-Win32-VC9-x86.zip)
PHP5.4.31のソース等が入手できなかったため5.4.33のそれをダウンロード
「Download source code」よりphp-5.4.33-src.zipをダウンロード
「VC9 x86 Non Thread Safe」-「Zip」よりphp-5.4.33-nts-Win32-VC9-x86.zipをダウンロード
php-5.4.33-nts-Win32-VC9-x86.zipをC:\phpに展開。
(C:\phpにはパスを通す)
php-5.4.33-src.zipをC:\php-srcに展開。
拡張dllのフレームワークの作成等にCygwinのコマンドを使用するのでC:\Cygwinにインストール
Cygwinのサイトよりsetup-x86.exeをダウンロードしてセットアップ実行
必用なモジュールが不明だったのでフルインストールを実行したが、texlive-collection-basic.shのインストールで止まってしまった。
フルインストールをやめてデフォルトインストールをしたが、これでも同様にインストールが完了しなかった。
一応、今回の必用なモジュールはインストールされたようなので、深くは追求しない。
VisualStudio2008はあらかじめインストール済
※別途SDKはインストールしていない
Visual Studio 2008コマンドプロンプトを開いてカレントをC:\php-src\extに移動して以下のコマンドを実行
※php_test.dllを作成するためのプロジェクトワークスペースが作成される
php ext_skel_win32.php --extname=test
C:\php-src\ext\test\config.w32を以下に従って編集
// $Id$ // vim:ft=javascript ARG_ENABLE("test", "enable test support", "no"); if (PHP_TEST != "no") { EXTENSION("test", "test.c"); }
buildconf configure
正しく実行されればC:\php-src/main/config.w32.hが作成される
C:\php-src\ext\test
VCでC:\php-src\ext\test\test.dspを開く。
(test.dspはVC6用のプロジェクトファイルなのでVC2008用に変換)
アクティブなプロジェクトをRelease_TSに設定
追加のライブラリプロジェクトにC:\php\devを追加
プリコンパイルプロセッサからZTS=1を削除
(スレッドセーフの時は不要)
参照するライブラリをphp5ts.libからphp5.libに変更
(スレッドセーフの時は不要)
以上の設定完了後、コンパイルを実行するとC:\php-src\ext\php_text.sllが作成される
関数Procを追加(引数には数値と文字)
以下を追加
PHP_FUNCTION(Proc);
test_functions[]にProcを追加
const zend_function_entry test_functions[] = { PHP_FE(Proc, NULL) PHP_FE_END /* Must be the last line in test_functions[] */ };
引数で受けた数値と文字列より文字列に変換して返す関数の実態
PHP_FUNCTION(Proc) { char *arg = NULL; int arg_len, len; long n; char *strg; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ls", &n, &arg, &arg_len) == FAILURE) { return; } len = spprintf(&strg, 0, "number=%d string=%s", n, arg); RETURN_STRINGL(strg, len, 0); }
以上でリコンパイル
php_test.dllを実行環境のD:\php\extにコピー
php.iniに以下を追加
extension=php_test.dll
関数の呼び出しをコーディング
$s=Proc(100, "tarum"); echo($s);
以上で正しく動作される
道路データ(数年前のデータで旧日本則地形)をGeoServerで配信してGoogleMap上に表示。
同様のことを電子国土でやった経験から簡単にできると思ったが、
意外にてこずり、時間がかかったのでメモ。
GeoServerの設定
特別な設定はしていない「Native SRS」、「Declared SRS」共に旧日本則地形を指定
※表示されない時はSRSを色々と変更したが、結局このまま。
OpenLayersのコード
GoogleMap、OSMをOpenLayersで表示する時はmapの投影にEPSG:900913を使用する。
但し、以下のように投影を敢えて明記せずに使用することがある。
もちろん、これは正しく動作する。
var map = new OpenLayers.Map('id_div_map'); var gmap = new OpenLayers.Layer.Google("Google ROADMAP",{numZoomLevels: 20}); map.addLayer(gmap);
しかし、ここにwmsのレイヤーを追加しても正しく表示されない。
OpenLayers.Mapに正しく投影の情報や最大のExtentを明示的に指定する必要がある。
var map = new OpenLayers.Map('id_div_map', { maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34), maxResolution: 156543.0399, numZoomLevels: "auto", units: 'm', projection: new OpenLayers.Projection("EPSG:4326"), displayProjection: new OpenLayers.Projection("EPSG:900913") }); var gmap = new OpenLayers.Layer.Google("Google ROADMAP",{numZoomLevels: 20}); map.addLayer(gmap); var road = new OpenLayers.Layer.WMS("LOCAL_ROADS", "http://192.9.200.25/geoserver/road/wms?", { LAYERS: 'road:ROAD5439', format: 'image/png', transparent: 'true', isBaseLayer: 'false', projection: 'EPSG:4301', reproject: 'true', styles: '' }); map.addLayer(road);
※maxExtentに指定した値は(-180、-90)、(180、90)を座標変換した値
-20037508.34,-20037508.34,20037508.34,20037508.34
表示結果
OpenLayersでMapQuest-OSMタイルを無償で使用するためには著作権表示が必要。
改めてOpenLayersにおける著作権表示について調査。
コントロールを空でOpenLayers.Map作成すると
var map = new OpenLayers.Map('map', {controls:[]});
拡大縮小等のコントロールは何も表示されない。
OpenLayers.Control.Attributionコントロールを追加すると
map.addControl(new OpenLayers.Control.Attribution());
勝手に著作権情報が表示される
Googleの場合
OSMの場合
MapQuest-OSMの場合
OSMの著作権だけ表示されてMapQuestが要求する著作権表示になっていない!
オプションで明示的に指定
var mapQuestOption = { attribution:'Tiles Courtesy of MapQuest' }; var layer_osm_mapquest = new OpenLayers.Layer.OSM("MapQuest-OSM", mapQuestArray,mapQuestOption);
期待した結果になった
OpenLayers.Layer.OSMで使用可能なタイルサーバーは以下に記載
TMS
MapQuestは比較的シンプルで見栄えがよい
「TMS」にはMapQuestはFREEと記載しているが改めて確認。
MapQuestのサイトには
「利用規約
マップクエストのオープンタイルは、以下の条件で無料で使用できます。
マップクエスト、OSMのタイルを使用する場合は、OpenStreetMapは、データのためのクレジットが与えられなければなりません-を参照して、この項の詳細は、OSMの法的FAQのを。
マップクエストオープンエアリアルタイルを使用している場合は、属性をお願いとして、「一部の礼儀はNASA / JPL-Caltechの、米国発農業、農業サービス庁 “。
」のタイル礼儀に置かないでくださいマップクエストを “あなたのページ上、またはマップの著作エリアのワードリンク」にマップクエスト ” を http://www.mapquest.com 。 以下は、サイトで使用できるコードスニペットは次のとおりです。
Tiles Courtesy of MapQuest
アプリケーションが(現在は毎秒4,000以上のタイルとして定義される)重い使用状況を取得する場合は、私達は私達に電子メールを送信することにより、お知らせくださいopen@mapquest.com 。 私たちが知っておくと余分なトラフィックに対応するように、使用目的の推定値を記載してください。
(例えば-プレスリリースや企業の発表)の発表があるだろう場合は、マップクエストでご連絡くださいopen@mapquest.com私たちは良いニュースとマップタイルの使用量の任意の期待のジャンプを知っているように。
これらのタイルの使用はご自身の責任である。
これらのタイルの使用法は、私たちに支配されている利用規約 。
OpenStreetMapのデータは下でライセンスされてオープン·データ·コモンズオープンデータベースライセンス(ODbLの)。」と記載されており、著作について記載すればフリーで使用可能。
以前は
Dialogのオプションで設定できたが、
jQuery UI 1.10よりこのオプションは廃止された。
よって以下に従ってスタイルシートで設定
.ui-dialog { z-index: 1000 !important ;}
OpenLayersにはMarkerがあり、ポイントをアイコンで表示する時に非常に便利に使える。
同様にVectorにもPointがあり、これにもアイコンが設定できそう。
とりあえずリンク
http://gis.stackexchange.com/questions/33141/change-icon-of-single-vector-feature-in-layer
http://www.codechewing.com/library/add-external-graphic-icon-to-geometry-point-openlayers/
http://www.codechewing.com/demo/add-icon-to-geometry-point-openlayers/
以下もとりあえず、リンク
http://www.finds.jp/docs/tms/index.html.ja
以下はリンク集、今後まとめる
http://openlayers.org/dev/examples/strategy-cluster-threshold.html
http://openflights.org/blog/2009/10/21/customized-openlayers-cluster-strategies/
http://openlayers.org/dev/examples/strategy-cluster-extended.html
http://openlayers.org/dev/examples/strategy-cluster.html
http://stackoverflow.com/questions/6641919/openlayers-nice-marker-clustering
http://openlayers.org/dev/examples/strategy-cluster.html