サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Switch 2
hfu.hatenadiary.org
今回の震災で感じたGeo+Webの技術面の課題を記録し始めたいと思います。 あとで考えることができるよう、またあとで考えることができるきっかけとなるよう、ここに書いてみます。 情報の出口に関する課題 1ファイル10MBを超えるようなデータは分散配布を考えるべき 通常、Geo+Webの配布データといえば、数百KBくらいまでのタイルデータですが、災害時には、1ファイル10MBを超えるようなデータが大量に配布される場面が多いです。この場合、OSS の配布で通常行われているような分散配布技術が適用できると思います。例えば、Apache の配布で行っているようなミラーサイトだとか、もう少しラジカルには bittorrent みたいな方法とか。常識的な処方としてはミラーサイトだと思いますが、災害時に真に多くの人が時間を争って必要とするようなデータについては、bittorrent 的な技術の活用が考えら
計画停電によるリスクをヘッジするための個人的試みとして、国土地理院提供の被災地の空中写真をダウンロードしたものFlickerに、経緯度はここにミラーします。 被災地の空中写真 http://www.flickr.com/photos/53691961@N03/sets/72157626132299003/ 空中写真の代表点の経緯度 上記の Flicker のファイル名との対応表です。 sendai_CTO-2010-4-C04_0003.jpg,141.0475196,38.30455228 sendai_CTO-2010-4-C04_0004.jpg,141.0432005,38.30126474 sendai_CTO-2010-4-C04_0005.jpg,141.038967,38.29792433 sendai_CTO-2010-4-C04_0006.jpg,141.034743,
一つの GeoHex を KML にして送り出すワンファイル・サーバを作ることができました。 the code #server.rb require 'rubygems' require 'sinatra/base' require 'haml' require 'gh.rb' # @see http://d.hatena.ne.jp/hfu/20110224 class App < Sinatra::Base get '/' do redirect '/geohex/hcawP' end get '/geohex/:geohex' do |geohex| content_type 'application/vnd.google-earth.kml+xml' # easier than apache! #content_type 'text/plain' # good for testin
http://www.publickey1.jp/blog/11/html5ipodiphone.html を Ruby の Sinatra+Haml のワンファイル・サーバで実現してみました。 個人的には、「set :haml, :format => :html5」することで、haml で html5 を出力することが恐くなくなったのが大きいです。 #server.rb require 'rubygems' require 'sinatra/base' require 'haml' class App < Sinatra::Base set :haml, :format => :html5 get '/' do content_type 'text/html' haml <<-EOS !!!UTF-8 %html(manifest='/manifest.manifest') %body
W3C から HTML5 のロゴが出ましたので紹介します。 W3C HTML5 Logo HTML5 自身のロゴがまずあり、それに8つの技術クラス(後述)を追加することができるとのことです。試しに、8つの技術クラスをすべてつけたロゴをはりつけてみます。 縦バージョンも作成できます: HTML5 の 8つの技術クラスとは W3C HTML5 Logo に説明されている「8つの技術クラス」について、簡単に抄訳してみました。 技術クラス 内容 Semantics 構造に意味を持たせるものであり、HTML5の前面であり中心である。RDFa/microdata/microformatによる豊富なタグにより、プログラムにとってもユーザにとってもより使いやすい、データ駆動のWebが可能になる。 Offline and Storeage App Cache, Local Storage, Indexed
町名「霞が関」は昭和42年4月の住居表示実施をきっかけに「霞ヶ関」から変更されたのではないでしょうか。手近にあるツールを使って情報を集めてみました。 事実の確認 世の中で出ている地図の類で、町名の注記は「霞が関」となっていることを確認しました。一方で、東京メトロの駅名は「霞ケ関」となっています。よく言われているように、駅名付与時点での町名がこのようであったのではないでしょうか。 町名変更の機会 千代田区総合ホームページの「千代田区における住居表示の実施」には、昭和42.4に霞が関一〜三丁目について住居表示が実施されたとされています(http://www.city.chiyoda.lg.jp/service/00086/d0008661.html)。町名(地方自治法における町又は字の名称)の変更には議会の議決が必要であり、町名の変更が行われることは頻繁ではないことを考えると、「霞ヶ関」から「
既存の JavaScript プログラムに埋め込まれた、経緯度とGoogle Mercatorとの変換式(特にメルカトルから経緯度への逆変換式)を確認してみました。Safari の Web インスペクタを使って簡単に調べてみます。 基本的方法 Safari や Chrome に付属している Web インスペクタには「コンソール」があります。ここに JavaScript コードを書き込むと、そのページでロードされている JavaScript オブジェクトに簡単にアクセスすることができます。Ruby の irb を使うように、Web インスペクタコンソールを使って、JavaScript プログラムを理解していきます。 OpenLayers の場合 http://trac.openlayers.org/wiki/SphericalMercator を読むと結局、OpenLayers.Layer.
d:id:hfu:20100831 の帰結として、データベースのサイズと町字コードのマッチ度合いについてまとめます。 昨日のエントリで行ったこと 昨日のエントリ( d:id:hfu:20100831 )では、Geohash で位置検索をするテストを行うことを目的に、神奈川県の平成21年度版「街区レベル位置参照情報」と「大字・町丁目レベル位置参照情報」を、SQLite3 に登録する処理を行いました。登録にあたり、私にしては珍しく、都道府県テーブル、市区町村テーブル、町字テーブル、街区テーブルを分割し、テーブル間はコード(都道府県コード(JIS)、市区町村コード(JIS)、町字コード(大字・町丁目レベル位置参照情報に収録)) で参照するようにしてみました。また、町字テーブル、街区テーブルに経緯度がつくのですが、経緯度はもっぱら 12 桁の Geohash で登録するようにしています。 データベ
PostGIS から Ruby を介して SVG に直結するタイプのウェブマッピングのコンセプト実証コードです。 コンセプト HTML5 の時代には、クライアントサイド(ブラウザ)のグラフィック能力が格段に向上しています。また、SVG 的にグラフィック要素を宣言していくタイプのグラフィックでは、グラフィックに対してイベントハンドラを自在に定義できるため、デスクトップアプリではむしろ実現できなかった、柔軟かつ豊かなユーザインタラクションが可能となってきます。 一方で、これまで作られてきた "Ajax 的" マップツールキットは、必ずしも HTML5 時代の新機能を活用しておらず、むしろ HTML5 時代の新機能を API の下に隠蔽する傾向があります。 そこで、サーバ側プログラミングと密接に連携することを前提に、SOAP/ASP 的な発想の地図画像サービス(すなわち、Web 1.0 的なサー
PostGIS の ST_Geohash の考え方には少し修正すべき点があります。Geohash の使い道についての考えと合わせて書いてみます。 Geohash については、d:id:hfu:20080603 のころから興味を持っていて、Geohash の活用については、まだまだあきらめていません。Geohash とは、経緯度を簡略な文字列に置き換える手法で、基本的に Microsoft や Google が使っているような、四分木的な手法なのですが、仕様が公開されていていろいろな言語で実装されているということと、符号化に base32 を用いているため、文字列が短くなることが特徴であると考えています。 Geohash の使い道は、一般のデータにおけるハッシュ関数値の使い道と同じで、「いろいろあります」。この、いろいろある使い道について、あまり体系だった解説がされていないところが、必ずしも
JTS Topology Suite を使って、Ruby から幾何属性のきめ細かなコントロールを実現します。今回は、Ruby から JTS を触れるようにするところまで。入門者向け解説です。 JTS Topology Suite とは何か JTS Topology Suite (JTS) とは、幾何属性を取り扱うための Java ライブラリです。実は、オープンソースソフトウェアのジオメトリエンジン*1のほとんどは、JTS か、その C/C++ 実装である GEOS ですので、JTS を抑えることで、オープンソースのジオメトリエンジンでできることの最先端に触れることができます。 JTS の本拠地は、Google でトップで出てくるページではなくて、http://tsusiatsoftware.net/jts/main.html となっています。Google でトップで出てくるページには、最新
Ruby で幾何データを扱うライブラリ GeoRuby で Shapefile の属性情報を取り出す場合、日本語も OK であることが確認できました。 実証コード 属性名にも属性値にも Shift_JIS コードの日本語が使われていることで有名な、「基盤地図情報閲覧コンバートソフト」で変換した「基盤地図情報(道路縁)」の Shapefile から、属性を取り出す GeoRuby のコードは、以下のようになります。 require 'rubygems' require 'geo_ruby' require 'iconv' include GeoRuby::Shp4r include GeoRuby::SimpleFeatures c = Iconv.new('UTF-8', 'Shift_JIS') ShpFile.open('rdedg.shp') {|shp| shp.each {|r|
d:id:yellow_73:20100223 ありがとうございます。これに触発されて、私の考えをいくつか補完してみたいと思います。 サーバとクライアントの役割をひっくり返す話は安全地域での画像生成に限定した話のつもりでした 画像生成のキューがサーバから提供されていて、中断可能な分散クライアントが適宜キューからタスクを取得し、クライアントがサーバからソースデータを取り込んで分散して画像生成し、サーバに地図画像を戻すモデル http://d.hatena.ne.jp/hfu/20100218/1266437151 について、 クライアントを信用できるかどうかが重要です。 http://d.hatena.ne.jp/yellow_73/20100223#p1 とありますが、これはおっしゃるとおりです。上記のモデルは、サービスの完全に後方で、スタティックに提供する画像を生成する「地図画像生成」の
id:wata909 さんに触発されて、WMS に対する id:hfu の考えをまとめてみました。 d:id:wata909:20090217 ありがとうございます。ハイチでの地図作成作業において、主に衛星画像を編集者向け提供する手段として WMS が使用されたことは、「WMS は地図配信プロトコルとしては非現実的である」という論調を取る id:hfu にとってはショッキングな出来事でした。ただし、実例を調べる中で、考えを整理できるような気がしましたので整理してみます。 以下、id:hfu の blogsphere でのポジション上 、WMS の功績への言及や WMS への肯定的評価は省略していますが、WMS の功績は大きく、個人的に大きく感謝もしているのです。しかし、一方で、WMS を超えていくことでこそ Geo+Web の進展*1があると考えています。 ハイチに関しても、一般ユーザへの
地理情報の国際標準化においては「地物」を概念世界のものと定義しています。しかし、この最も基本的な定義が、すでに躓きの石だったのです *1。 従来、「地物」は現実世界のものであった。 地理情報に携わる人々の間で話をしていると、地物が概念世界のものとして定義されているのか、現実世界のものとして定義されているのか、用語の定義で混乱を生じることがあります。概念世界のものと認識している人は情報系の人が多く、現実世界のものと認識している人は伝統的な測量についての知識が豊富な人が多いようです。この混乱は、次のことが理由だと考えています。 地理情報の国際標準化の世界では、地物(feature)は「実世界の現象の抽象概念(abstraction of real world phenomena)」と定義されているそうです。つまり、地物は概念世界のものとして定義されています。 一方で、地物を現実世界のものとして
市区町村コードから平面直角座標系の系の番号や EPSG コードを得る Ruby コードです。 誰かが公開しておくと多くの人(公開した人も含め)の手間が減りそうなので、ここに置いておきます。cc2epsg.rb という名前にしたいと思います。cc は city code の意味です。 コード本文にも書きましたが無保証である点よろしくお願いします。北海道と鹿児島県と沖縄県で else で逃げているところがあるので、特にそのあたりにバグが入り込んでいる余地があるかも知れません。 # cc2espg.rb: Ruby implementation of # http://vldb.gsi.go.jp/sokuchi/patchjgd/download/Help/jpc/jpc.htm#sansho # Usage of the works is permitted provided that th
Apple の Core Location はとても優秀なサービスモデルなのではないかという考察です。 無線LAN測位の三大データベース 無線LAN測位というものがあります。無線LAN測位は、無線LANの電波がそれほど遠くまでは届かないことを積極的に利用していると思っています。その他の測位と違い、無線LAN測位は、測位というよりはむしろ、無線LAN基地局からの位置クッキーをバーチャルに実現する技術だと思います。無線LAN測位の能力を測位可能な面積で語ることは、実はあまり的を得ていません。 というのは、無線LAN測位を行うデバイスは、無線LANを使って何らかのインターネットサービスを受けることが前提であると考えるほうが常識的であるからです。インターネットサービスの付加サービスとして、現在位置クッキーを受け取ることができる、というのが無線LAN測位の本質なのだと思います。 無線LAN測位のため
オープンスタンダードは、スタンダードという言葉の定義からして、オープンソースやオープンデータとは性質が異なるという考察です。 d:id:hfu:20090304 の続きとして、オープンソースとオープンデータにオープンスタンダードがくっつきすぎることに対する違和感について、思考実験*1により分析してみました。 「ダメなオープン○○」という思考実験 オープンなデータ、ソフトウェア、スタンダードについて、それが技術的にダメだったときに取り得る行動について、「無視する」という選択肢を除くとどうなるか考えてみたところ、 オープンでダメなデータは、更新すればよい。 オープンでダメなソフトウェアは、改善すればよい。 オープンでダメなスタンダードは、地獄への道を舗装する(d:id:sshi:20060215)。 ということばを思いつきました。 これを分析すると、スタンダードは、その「策定過程」や「再配布方
日本地図調製業協会会員の会社について、Web でアクセスできる決算短信の中からトピックを箇条書きで抜き出すとどうなるか、実際にやってみました。 日本地図調製業協会の会員名簿(http://www.chichokyo.or.jp/about/member.html)からたどって見つけ出せる最新の決算短信から、定性的情報を斜め読みしてトピックを抽出してみました。 株式会社きもと 丸山工場の増設工事が7月に完成。9月から新規設備が本格稼働。 モバイル向けハードコートフィルムの売上増大。 中央省庁向け受託作業の売上が増加。 株式会社昭文社 携帯サービス関連収入、PND向けソフト・コンテンツが順調に伸びる。 「1000円ドライブ」シリーズがヒット。 コスト削減、人件費削減、減損処理に伴う償却費減少効果。損益は大幅改善。 「MAPPLEnavi」の採用増大で売上高増加。 「ことりっぷ」のコンビニ販売。
Geohash と QRコードを組み合わせて可視位置タグを作る方法を思いつきました。 日本のへそ POINT (135, 35) の Geohash は、geohash.org によると、xn0p です(http://geohash.org/xn0p)。これを Google Chart API に読み込ませて、http://chart.apis.google.com/chart?chs=150x150&cht=qr&chl=xn0p 、すなわち これを POINT (135, 35) の QR コードとし、その精度は Geohash の文字数から読み取らせる。 QRコードには可視性はあっても可読性がないわけですが、可読性は Geohash が持てるので、Geohash と QRコードをくみあわせたものをシールにして貼ったり GPS と画面を持つデバイスに表示させたりするのが想定される使用例
{markup haiku} がキャッチフレーズの Haml で電子国土サイトを簡潔に書いてみました。 サイトのソース !!! XML !!! 1.1 %html %body %script{:type => 'text/javascript', :src => 'http://cyberjapan.jp/ptmap/ptmopen.js', :charset => 'UTF-8'} :javascript function current_position() { var e = document.getElementById('position'); e.value = map.getCx() + ' ' + map.getCy() + ' ' + map.getMapScale(); } MAP_LOAD({"t": "map", "v": [550, 340], "c": [135
GML版基盤地図情報のRubyハッシュへのコンバータを作りました。 d:id:hfu:20080401 の続きとして、道路縁だけでなくすべての基盤地図情報地物に対応し、ダウンロードした ZIP ファイルを含むフォルダを直接解釈できるようにし、地物ごとにハッシュを yield するコンバータを作りました。 あまり趣味的なことをすることが道義的に許される状況にないのですが、お世話になっている方々にもあるいは役にも立つかも知れないし、そうでない方々にも役立つかも知れないということで、作成かつ発信させていただくことにしました。個人的な動機は、基盤地図情報と一緒に配布されているコンバータが Mac OS X で高速には動作させにくく、出力が Shapefile であり、その属性名が日本語であって扱いにくいことから、Mac OS X で軽快に動作する単純なコンバータが欲しかったからです。また、そのコン
PostGISとRubyをsequelでつなぐとシンプルで気持ちがよいです。 sequel をインストール sequel というのは、the database toolkit for ruby という名前を持ち http://sequel.rubyforge.org/ でホストされているプロジェクトです。次のようにしてインストール可能です。 sudo gem install sequel コマンド sequel でデータベースにアクセス sequel をインストールすると sequel というコマンドラインツールが動かせます。psql よりもモダンで、簡単であるように感じます。d:id:hfu:20090616 の規約に従うと、次のような感じで動かすことができます。 $ sequel postgres://happier:more_productive@localhost/fitter Y
ESPG:900913 の原典を紹介します。 d:id:hfu:20090616 に id:convivial さんからのスターをありがとうございます。スターを頂いてうれしいので、 900913 について掘り下げて紹介します。 私の知る 900913 の原典は http://crschmidt.net/blog/243/google-projection-900913/ で、そこには次のように書かれています。 It’s the ‘Google’ projection — so we picked 900913. (Google. In 1337-speak.) Use it. Love it. Promote it. http://crschmidt.net/blog/243/google-projection-900913/ i think 900913 is great. 9-g 0-
TMSのタイルファイル名を表示するTMSサーバを実装しました。 こういうものが表示されるものを作りました グリッドが、 TMS サーバが出力しているものです。 実装 タイル画像は RMagick で作ります。Rack には RMagick::Image#to_blob の出力を渡してあげるだけでOKです。 require 'stringio' require 'rubygems' require 'rmagick' use Rack::CommonLogger map '/' do run proc {|env| [200, {'Content-Type' => 'text/html'}, StringIO.new(<<-EOS <?xml version="1.0" encoding="UTF-8"?> <html xmlns="http://www.w3.org/1999/xhtml"
OpenLayers.Layer.TMS を研究するために、rack で TMS 対応サイトを作りました。これから TMS サーバを作るつもりです。 rack を使った理由 アパッチを使うと、アパッチ依存の知識が前提になり、教育が難しくなります。Ruby と gems さえインストールされていればすぐに使えて、ログを標準出力で観察でき、必要な時だけサーバを立ち上げ、知識を得たらすぐに綺麗にサーバを撤収できる、rack を使うことにしました。 メインストリーム IT から離れた業務分野に浸透中で、かつ Web によって世界を良くする手法を開発したいとお考えのITエンジニアのみなさん(うまいこというと、ITゲリラ戦士の皆さん)に、この rack を使う手法をおすすめしたいと思ったりしています*1。 前提知識 コマンドプロンプトなどのCUI Ruby HTMLとJavaScript 準備 sud
d:id:hfu:20090316 に対するはてなブックマークで、yohei さんにコメントをいただきました。 任意矩形をquery paramsで取得するのはRESTfulに設計できます(RWS第5章)。サーバ内部の処理とインターフェース設計はまずは別に考えるべきと思います。 http://b.hatena.ne.jp/entry/http://d.hatena.ne.jp/hfu/20090316/1237148944 実は、RWS こと「RESTful Web サービス」、昨日入手したところでした。セレンディピティ*1、ですね。早速開いてみています。 RESTful な任意矩形指定 RWSこと「RESTful WEb サービス」5章 p.124 に、次のように書かれています。 http://maps.example.com/geologic/Earth/43.9,-103.46 この
リソース指向なgeo+webのサブクラスの定義を試みます。 convivial-weblog さんから。 RESTfulは、リソース指向的な考えに基づいたアーキテクチャなので、何かしらの処理を関数的に実行させたい場合などは、RPC(Remote Procedure Call)的に呼び出せる「なんちゃってREST」の方が適しているケースも多いように思います。 http://convivial-web.com/blog/2009/03/restrestful.html 関数的に呼び出す形のものはやはり RPC 的にしておくのがよさそうだと思っています。OGC の規格でよくある、引き出し対象を任意の矩形で指定するようなパターンは、典型的に RPC 的なパターンであると考えており、あのパターンを RESTful にすることは至難だと思います。 geo+web の特徴の分析から、そのような RPC
欧州にとって痛恨なのは、INSPIRE が SOAP 漬けになっていること。INSPIRE の主要目的のためには SOAP で良いのかも知れないのですが、次のステップでは重荷になるでしょう。 d:id:hfu:20090304 のような話の続きを、誰かが日本語で書かなければならない気がとてもしています*1。ただ、英語では日常的にこの話題は出現しています。例えば3月6日にも次のような記事が出ています。 SOAP をやめることは驚くべきことではない Of course this is not surprising in the least bit, but Google is abandoning their SOAP API to focus on their RESTful APIs. Most developers, myself included, prefer working wit
次のページ
このページを最初にブックマークしてみませんか?
『Relevant, Timely, and Accurate』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く