<?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>hogemanのちょっといたい話</title><link>http://blogs.wankuma.com/hogeman/</link><description /><managingEditor>hogeman</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>hogeman</dc:creator><title>KBのハイブリッド翻訳いいね</title><link>http://blogs.wankuma.com/hogeman/archive/2008/11/09/160840.aspx</link><pubDate>Sun, 09 Nov 2008 22:44:00 GMT</pubDate><guid>http://blogs.wankuma.com/hogeman/archive/2008/11/09/160840.aspx</guid><wfw:comment>http://blogs.wankuma.com/hogeman/comments/160840.aspx</wfw:comment><comments>http://blogs.wankuma.com/hogeman/archive/2008/11/09/160840.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.wankuma.com/hogeman/comments/commentRss/160840.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/hogeman/services/trackbacks/160840.aspx</trackback:ping><description>&lt;P&gt;あまりにも素敵過ぎて、「機械語翻訳読むぐらいやったら英語版読んでるほうがマシやね」とかよく言われるKBですが、そこはユーザーの意見を第一にするMS、ハイブリッド翻訳にも力を入れてるようです。たとえばこれ。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://support.microsoft.com/kb/931279/ja"&gt;http://support.microsoft.com/kb/931279/ja&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;タイトルが「SQL Server timing values may utilities or change that CPU frequencies technologies use when incorrect be します。」&lt;/P&gt;
&lt;P&gt;最後に「します」がついてるせいでぐっと日本語らしさが増しててステキ。&lt;/P&gt;
&lt;P&gt;# いや、面白いからOKと本気で思ってますよ。&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/hogeman/aggbug/160840.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>hogeman</dc:creator><title>逃亡者乙</title><link>http://blogs.wankuma.com/hogeman/archive/2008/11/09/160836.aspx</link><pubDate>Sun, 09 Nov 2008 20:37:00 GMT</pubDate><guid>http://blogs.wankuma.com/hogeman/archive/2008/11/09/160836.aspx</guid><wfw:comment>http://blogs.wankuma.com/hogeman/comments/160836.aspx</wfw:comment><comments>http://blogs.wankuma.com/hogeman/archive/2008/11/09/160836.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/hogeman/comments/commentRss/160836.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/hogeman/services/trackbacks/160836.aspx</trackback:ping><description>&lt;P&gt;みなさまこんにちは。超空気読めてないblog翻訳とかも途中でほったらかしにして逃亡中のhogemanです。実はわたくし、KOF2008と同会場で併催してたFOSS4G OSAKA（地図やGPSとオープンソースツールで遊ぶのが好きな人のイベントです）で発表者として登壇してました。わんくまでブース出してたことをぜんぜん知らなかったのでわんくまの発表を聞きに行けませんでしたm(_ _;)m&lt;/P&gt;
&lt;P&gt;ちょっとこっち系の活動も再開させたいし、来年もKOF2008とFOSS4Gは併催のはずなので、2009年の目標は、「わんくまとFOSS4Gに同日ハシゴ登壇すること！」にしてみようかな。&lt;FONT size=1&gt;（無理かな...）&lt;/FONT&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/hogeman/aggbug/160836.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>hogeman</dc:creator><title>今日は番外編</title><link>http://blogs.wankuma.com/hogeman/archive/2008/07/04/147219.aspx</link><pubDate>Fri, 04 Jul 2008 01:44:00 GMT</pubDate><guid>http://blogs.wankuma.com/hogeman/archive/2008/07/04/147219.aspx</guid><wfw:comment>http://blogs.wankuma.com/hogeman/comments/147219.aspx</wfw:comment><comments>http://blogs.wankuma.com/hogeman/archive/2008/07/04/147219.aspx#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blogs.wankuma.com/hogeman/comments/commentRss/147219.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/hogeman/services/trackbacks/147219.aspx</trackback:ping><description>&lt;P&gt;今週土曜は珍しく大阪でPASSJのイベントがあるらしい。質問事項の仕込みとかぜんぜんしてないことを思い出し、今日やっと自宅のSQL Server 2008を Feb.CTP から RC0 にグレードアップ！しかし今日は入れるだけで力尽きて、この日記を書いてる今はもう金曜ｗ&lt;/P&gt;
&lt;P&gt;例によってIsaacさんblogの翻訳の、今日は番外編。&lt;/P&gt;
&lt;P&gt;マイクロソフトのWebページで公開されてる(Feb.CTPをベースに書かれた)自習書を読みながらRC0にチャレンジされる方も多いかと思いますが、RC0で地理データの扱いに仕様変更があったため、自習書の地理関係の部分のコードとか、私がはてなの日記のほうに書きなぐったサンプルコードとかはそのままでは動かないですよ、という注意喚起です。&lt;/P&gt;
&lt;P&gt;
&lt;HR id=null&gt;

&lt;P&gt;&lt;/P&gt;
&lt;P&gt;元記事へのリンク：&lt;BR&gt;&lt;A href="http://blogs.msdn.com/isaac/archive/2008/03/05/the-upcoming-geography-coordinate-order-swap-a-faq.aspx"&gt;http://blogs.msdn.com/isaac/archive/2008/03/05/the-upcoming-geography-coordinate-order-swap-a-faq.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;地理座標の表現順スワップについてのFAQ&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Hi Folks,&lt;BR&gt;地理座標の表現順スワップのことについてはっきりしっかり書いとかなきゃと思ったんで、簡単なFAQを作ってみたよ。&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;実際のところ何が変わるの？&lt;BR&gt;well-known text(WKT)とwell-known binary(WKB)フォーマットについて、CTPでは[緯度-経度]順だけど[経度-緯度]順に座標の表現順を変えるんだ。たとえば、シアトルの座標表現はWKT形式で"POINT(44 -122)"だが、RC0以降では"POINT(-122 44)"になる。&lt;BR&gt;&lt;BR&gt;
&lt;LI&gt;何でこんな変更すんの？&lt;BR&gt;地理ヲタユーザーからのフィードバックがあったからだ。（欧米文化圏では）一般的には座標は[経度-緯度]の順で表現するもんだし、WKTやWKBのデファクトスタンダードも[経度-緯度]順だからだ。この変更でWKTやWKBのデータをロードしやすくなるよ。&lt;BR&gt;&lt;BR&gt;
&lt;LI&gt;GMLはどうよ？&lt;BR&gt;GMLの標準的な慣例では[経度-緯度]順を使ってるからGMLは変更ないよ。&lt;BR&gt;&lt;BR&gt;
&lt;LI&gt;ディスク上の永続化形式は？&lt;BR&gt;変わらんよ。この変更はデータのインポート、エクスポート処理だけの問題でそれ以外には変わらないよ。&lt;BR&gt;&lt;BR&gt;
&lt;LI&gt;geometry型は？&lt;BR&gt;geometry型はも変わんないよ。 (OGCの)geometryは平面しか扱わないし、STX,STYプロパティの外部の座標表現順なんか知ったこっちゃないよ。&lt;BR&gt;&lt;BR&gt;
&lt;LI&gt;いつ変更されんの？&lt;BR&gt;RC0以降&lt;BR&gt;&lt;BR&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Cheers,&lt;BR&gt;-Isaac&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/hogeman/aggbug/147219.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>hogeman</dc:creator><title>そろそろモチ上げていかなきゃ</title><link>http://blogs.wankuma.com/hogeman/archive/2008/05/25/139335.aspx</link><pubDate>Sun, 25 May 2008 22:27:00 GMT</pubDate><guid>http://blogs.wankuma.com/hogeman/archive/2008/05/25/139335.aspx</guid><wfw:comment>http://blogs.wankuma.com/hogeman/comments/139335.aspx</wfw:comment><comments>http://blogs.wankuma.com/hogeman/archive/2008/05/25/139335.aspx#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://blogs.wankuma.com/hogeman/comments/commentRss/139335.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/hogeman/services/trackbacks/139335.aspx</trackback:ping><description>&lt;P&gt;ずーーーっと放置してたIsaacさんのblog翻訳のつづき。&lt;/P&gt;
&lt;P&gt;
&lt;HR id=null&gt;

&lt;P&gt;&lt;/P&gt;
&lt;P&gt;元記事へのリンク：&lt;A href="http://blogs.msdn.com/isaac/archive/2008/03/01/basic-multi-level-grids.aspx"&gt;http://blogs.msdn.com/isaac/archive/2008/03/01/basic-multi-level-grids.aspx&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;基本的な多階層グリッドインデックス「Basic Multi-Level Grids」&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;前回のエントリでは単純なグリッドインデックスにまつわる問題をとりあげたけど、今回はそれらの問題をどうやって回避してるかを説明するよ。&lt;/P&gt;
&lt;P&gt;実のところ SQL Server 2008では前回説明したような単純なグリッドインデックスは使ってないんだ。代わりに四分木(quadtree)に見えるような多階層のグリッドインデックスを使っている。（一レベルのグリッドではなく）４段階の入れ子にしたグリッドを使ってるんだ。&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;ここで例を見てみよう。４階層の各階層が2x2のグリッドで構成されていると仮定すると、下記の図形は最上位階層のグリッドの３つのセルを占めることになる。 
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://f.hatena.ne.jp/images/fotolife/h/hogeman/20080525/20080525220717.jpg"&gt;&lt;/P&gt;
&lt;P&gt;上記３つのセルはたしかに図形を覆ってはいるけど、もとの図形と重ならない余計な部分がたくさんある。一次フィルタにこのセルを使うと、かなり余分にヒットしてしまう。そこで、２番目の階層のグリッドインデックスを使ってみる。&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://f.hatena.ne.jp/images/fotolife/h/hogeman/20080525/20080525220718.jpg"&gt;&lt;/P&gt;
&lt;P&gt;第二階層では、第一階層では余分にはみ出てた部分をだいぶ枝刈りできる。対象の図形に対するインデックスは多少重たくなっちゃうんだけどね。で、おなじように第四階層まで分割を進めるとこんな風になる。&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://f.hatena.ne.jp/images/fotolife/h/hogeman/20080525/20080525220719.jpg"&gt;&lt;/P&gt;
&lt;P&gt;これできっちりとカバーできた。でもこれじゃあかなりたくさんセルを作ってしまうし、対象の図形に対するインデックスが重たいよ。実際、すべての図形が同じレベルのグリッドを使う必要はないし、ある図形ののすべての部分で同じレベルのグリッドを使う必要もない。じゃ、グリッドのレベルを混ぜて使えばいいんじゃね？&lt;/P&gt;
&lt;P&gt;レベルを混合したグリッドセルを使えるようにすることで２つの最適化ができる。ひとつは、ある特定のセルの下位セルがすべて対象の図形と接触していることがわかったら、もうそれ以下のレベルのセルに分割しない最適化だ。それ以上分割してもメリットがないからね。何を言ってるのかわからないかもしれないが絵を見りゃすぐわかるよ。上の図に、ここで説明した最適化を適用したら下図のようになる。&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://f.hatena.ne.jp/images/fotolife/h/hogeman/20080525/20080525220720.jpg"&gt;&lt;/P&gt;
&lt;P&gt;見ての通り、これでインデックスに使うセルをかなり減らせる。&lt;/P&gt;
&lt;P&gt;ふたつめは、セルの数に制限を設ける最適化だ。我々は制限の初期値を１６セルにしてるが、ユーザーが用途に合わせて調整することもできる。対象の図形を幅優先探索でツリー分割していき、この過程で制限数に達したらそこで分割をやめるんだ。結局下図のようになる。&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://f.hatena.ne.jp/images/fotolife/h/hogeman/20080525/20080525220721.jpg"&gt;&lt;/P&gt;
&lt;P&gt;ここまでの説明については言わなきゃいかんことがいろいろあるけれどとりあえず今はこれでおいとく。ひとつだけ言わせてもらえれば、ここで挙げた例では分割を各レベル2x2で行ってるけど現実にはもっと細かく割ってる。どんだけ細かく割るかは調整可能だ。ユーザーによる指定値と分割数の対応は、「low：4x4」、「medium：8x8」、「high：16x16」になる。&lt;/P&gt;
&lt;P&gt;ユーザーがこれらのパラメータをどう調整すればいいかについては一般的なアドバイスはしづらい。データやクエリに非常に依存するからね。ただ、僕らが選んだデフォルト値でたいていの場合は上手くいくと思うよ。みんなが空間インデックスを使い始めていろんなレポートが上がってきたらもっといいアドバイスができるようになると思う（だからあなたが発見したことを僕たちにぜひ教えてくれよ）。&lt;/P&gt;
&lt;P&gt;次回はマルチレベルグリッドについて少し詳しい話をするよ。&lt;/P&gt;
&lt;P&gt;Cheers,&lt;BR&gt;-Isaac&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;
&lt;HR id=null&gt;

&lt;P&gt;&lt;/P&gt;
&lt;P&gt;ここからhogemanコメント：&lt;BR&gt;DBMSの記事で４分木ですよ奥さん。我々ＧＩＳプログラマは地図のレンダラ書いたりするのに割とゲーム的な高速化手法とか使ってたりするんですよ。本職の人たちには全然かないませんが。&lt;/P&gt;
&lt;P&gt;ところでIsaac氏も言ってるようにインデックスの分割数の指定の最適値は結局はデータと使い方次第でチューニングすべきだけどそれでも目安がないと不安な向きもあるかと思う。大雑把にいえば、非常に広域に地物が分散している場合やひとつひとつが小さい地物が大量にある場合はhighを指定し、反対にデータのエクステントに対して比較的地物が大きい場合や局地的なデータを扱う場合はlowを指定することをお勧めしておく。セルの大きさの幅をイメージするためにGoogleMapsを例に取って説明するとGoogleMapsの実用域は全世界図みたいな縮尺を除くと実質16レベルぐらい。GoogleMapsのタイルは各縮尺ごとに各辺のサイズを倍々にしていってる。つまりlowはGoogleインターバルの2倍なので2*4階層=でGoogle8縮尺分をまたぐようなサイズ差のインデックスが貼られるイメージ、mediumは3*4でGoogle12縮尺分、highは4*4階層で16縮尺分の差、という感じ。 &lt;/P&gt;
&lt;P&gt;ところで Spatial Ed の翻訳も書きたいけどここに混ぜたらわけわかんなくなるかな。&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/hogeman/aggbug/139335.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>hogeman</dc:creator><title>もうね、以下略４</title><link>http://blogs.wankuma.com/hogeman/archive/2008/02/18/123603.aspx</link><pubDate>Mon, 18 Feb 2008 02:10:00 GMT</pubDate><guid>http://blogs.wankuma.com/hogeman/archive/2008/02/18/123603.aspx</guid><wfw:comment>http://blogs.wankuma.com/hogeman/comments/123603.aspx</wfw:comment><comments>http://blogs.wankuma.com/hogeman/archive/2008/02/18/123603.aspx#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blogs.wankuma.com/hogeman/comments/commentRss/123603.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/hogeman/services/trackbacks/123603.aspx</trackback:ping><description>&lt;P&gt;SQL Server 2008 空間拡張チームのISAACさんBlog超訳のつづき。&lt;BR&gt;まだ出てない製品の話だし興味ねえようぜえよという方は華麗にスルーしてください。&lt;/P&gt;
&lt;P&gt;元記事へのリンク：&lt;A href="http://blogs.msdn.com/isaac/archive/2008/02/05/picking-up-on-indexing-moving-beyond-the-simple-grid.aspx"&gt;http://blogs.msdn.com/isaac/archive/2008/02/05/picking-up-on-indexing-moving-beyond-the-simple-grid.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;
&lt;HR id=null&gt;

&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;空間インデックスの理解 「Moving Beyond the Simple Grid」&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;あー、インデックスについての連載まだ最後まで書いてなかったね。僕も続き書かなきゃと思ってたんだわ。&lt;/P&gt;
&lt;P&gt;ここまでのところは準備体操みたいなもんで、空間インデックスの基本的な原理の説明をしてきた。これから先のいくつかの記事では、実際にSQL Serverがやってる内部動作とかを書いていくよ。&lt;BR&gt;まずgeometry型を例にとって説明をし、その後、geometryと割と似てるけとちょと違うgeography型の説明に進んでいく予定だ。&lt;/P&gt;
&lt;P&gt;まずいままでのおさらいから。単純なグリッドインデックスを思い出してみてくれ：まず外枠を設定して、これをタイル状に分割して、タイルをてきとうなルールに従ってナンバリングしたわけだ。（例では、単に行方向優先の連番をふってみた）&lt;/P&gt;
&lt;P&gt;これにはまだ多少問題がある(*1)：&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&amp;nbsp;タイルの分割を実際の図形のサイズぎりぎりに小さくすればするほど一次フィルタの効きはよくなる。でもちょっとまってほしい。（座標点のような）小さい図形に対しては、図形ぎりぎりのサイズまでフィルタを小さくするのはたぶん無理。 
&lt;LI&gt;大きい図形の場合はまた別の問題がある。大きい図形と重なるタイルのマス目はとても多くなってしまうような。もしこれらのセルを全部永続化しなきゃいけなくなったらインデックスはすごくでっかくなる。 
&lt;LI&gt;いままでの例で示したインデックスのナンバリング方法はインデックスの局所性の観点からみてよくない。つまりは、位置的に隣り合ったセル同士がとても離れた番号にナンバリングされる場合があるちゅうことで、その結果、局所的な空間クエリをしたいのにインデックスの全走査とか走ってしまうちゅうことだ。&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;もしタイルのしくみにこだわるつもりなんだったらこれらの問題をなんとかしたいところだ。ひとつ先に言っておくと、上記(3)の問題に対する完璧な解決方法はない。でも、今まで考えた方法よりもうちょっとましな仕組みにはしたいと思ってる。&lt;/P&gt;
&lt;P&gt;次回は、「階層化グリッドインデックス」の巻～。&lt;/P&gt;
&lt;P&gt;Cheers,&lt;BR&gt;-Isaac&lt;/P&gt;
&lt;P&gt;(*1) 他にも粘着するべき問題はいろいろあるけど、とりあえず今から説明しようとしてる問題だけ取り上げてみる(*2)。この連載が進んだら残りの問題も取り上げるつもり。&lt;BR&gt;(*2) 残りの問題を取り上げるのをうっかり忘れるかも。てか「計画的に書けよゴルルァ」って文句言われるかもスマソ。&lt;BR&gt;
&lt;HR id=null&gt;

&lt;P&gt;&lt;/P&gt;
&lt;P&gt;とりあえずISAACさんblogの最終更新分まで訳した。続きは元blogが更新されてから。それまでは別の雑談でもして引っ張る予定。ていうかこのおっさん、えらい細切れに引っ張りよんなぁ...&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/hogeman/aggbug/123603.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>hogeman</dc:creator><title>X01Tはじまったな。</title><link>http://blogs.wankuma.com/hogeman/archive/2008/02/13/123097.aspx</link><pubDate>Wed, 13 Feb 2008 23:32:00 GMT</pubDate><guid>http://blogs.wankuma.com/hogeman/archive/2008/02/13/123097.aspx</guid><wfw:comment>http://blogs.wankuma.com/hogeman/comments/123097.aspx</wfw:comment><comments>http://blogs.wankuma.com/hogeman/archive/2008/02/13/123097.aspx#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blogs.wankuma.com/hogeman/comments/commentRss/123097.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/hogeman/services/trackbacks/123097.aspx</trackback:ping><description>&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;ハードリセット祭り&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;X01Tのハードリセット方法が見つかった（ショップに通達が来た？）らしい。&lt;/P&gt;
&lt;P&gt;
&lt;HR id=null&gt;
&lt;/P&gt;
&lt;P&gt;87 sage&amp;nbsp; 2008/02/13(水) 12:15:09 ID:ZpcLK/ad0&lt;BR&gt;ハードリセット方法 &lt;BR&gt;電源キー、メールキー、ＢＳキー、ボリュームキー下同時押し。 &lt;/P&gt;
&lt;P&gt;138 白ロムさん sage 2008/02/13(水) 13:58:35 ID:aHlNoxfA0&lt;BR&gt;open、レジストリ上は存在してるから &lt;BR&gt;接続＞接続＞詳細設定＞ネットワークの選択 &lt;BR&gt;からプライベートネットワークを社内ネットワークなりなんなりに変えて &lt;BR&gt;OKで復活できる。 &lt;/P&gt;
&lt;P&gt;
&lt;HR id=null&gt;
&lt;/P&gt;
&lt;P&gt;X01Tはハードリセット方法が非公開だったので発売されて間もない機種のくせにスレが葬式状態でした。実際ハードリセットと＊メーラーの問題で買い控えてた人も多いと思う（俺様は発売日に買いましたとも、１年未満買い増し料金で）。最大の問題が片付いたので素直にうれしい。これでやっと安心してコード書けるわ。さあ徹夜で環境再構築すっかな。&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/hogeman/aggbug/123097.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>hogeman</dc:creator><title>はてなにでも書いてろって内容だけど以下略３ </title><link>http://blogs.wankuma.com/hogeman/archive/2008/02/13/122933.aspx</link><pubDate>Wed, 13 Feb 2008 00:35:00 GMT</pubDate><guid>http://blogs.wankuma.com/hogeman/archive/2008/02/13/122933.aspx</guid><wfw:comment>http://blogs.wankuma.com/hogeman/comments/122933.aspx</wfw:comment><comments>http://blogs.wankuma.com/hogeman/archive/2008/02/13/122933.aspx#Feedback</comments><slash:comments>25</slash:comments><wfw:commentRss>http://blogs.wankuma.com/hogeman/comments/commentRss/122933.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/hogeman/services/trackbacks/122933.aspx</trackback:ping><description>&lt;P&gt;ISAACさんBlog超訳のつづき。うざがられてもまだまだいくよ～。&lt;BR&gt;匿名連絡フォームまたはコメント欄からの『巣にカエレ！』とか『くそして寝ろ！』といった熱いエールも歓迎。&lt;/P&gt;
&lt;P&gt;
&lt;HR id=null&gt;

&lt;P&gt;&lt;/P&gt;
&lt;P&gt;元記事へのリンク：&lt;A href="http://blogs.msdn.com/isaac/archive/2007/12/01/spatial-indexing-part-3-faster-primary-filtering.aspx"&gt;http://blogs.msdn.com/isaac/archive/2007/12/01/spatial-indexing-part-3-faster-primary-filtering.aspx&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;U&gt;&lt;STRONG&gt;空間インデックス パート３ 「Faster Primary Filtering」&lt;/STRONG&gt;&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;前回は単純な一次フィルタがどうやって処理を速くできるのか、のところまで説明を終えてたと思う。&lt;/P&gt;
&lt;P&gt;前回説明した単純なグリッドインデックス関数 Grid() を思い出してくれ。マス目の数値を返すテーブル値関数(TVF)として実装したやつだ。図を見ると Grid(University Ave) が {5, 9, 10, 11} を返すことがわかるだろう。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;IMG src="http://f.hatena.ne.jp/images/fotolife/h/hogeman/20080212/20080212013803.jpg"&gt; &lt;/P&gt;
&lt;P&gt;「Roads」テーブルは下表のようなスキーマと内容をもってる。[gx]っていうのはgeography型の値を表してると思ってくれ。 &lt;/P&gt;
&lt;TABLE border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH colSpan=3&gt;Roads&lt;/TH&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;id(pk)&lt;/TH&gt;
&lt;TH&gt;name&lt;/TH&gt;
&lt;TH&gt;shape&lt;/TH&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;University&lt;/TD&gt;
&lt;TD&gt;[g1]&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;Mifflin&lt;/TD&gt;
&lt;TD&gt;[g2]&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;Gammon&lt;/TD&gt;
&lt;TD&gt;[g3]&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;SQLは、こう書き換えられる。 &lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;SELECT Name&lt;BR&gt;FROM Roads&lt;BR&gt;WHERE Shape.STIntersects(@x) = 1&lt;/P&gt;
&lt;P&gt;as&lt;/P&gt;
&lt;P&gt;SELECT Name&lt;BR&gt;FROM Roads&lt;BR&gt;WHERE&lt;BR&gt;&amp;nbsp;&amp;nbsp; EXISTS (&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT *&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM Grid(@x) g1 &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; JOIN Grid(Roads.Shape) g2 ON g1.cell = g2.cell&lt;BR&gt;&amp;nbsp;&amp;nbsp; )&lt;BR&gt;&amp;nbsp; AND Shape.STIntersects(@x) = 1&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;でも、これじゃあそんなに速くなりそうもないので、各行ごとのGrid()関数の結果値を事前計算して内部テーブルにキャッシュしてみる。ついでにこのキャッシュのcell列をクラスタインデックスにしてみる。上記の例の場合、こんな感じになる。&lt;/P&gt;
&lt;TABLE border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH colSpan=2&gt;Roadsidx&lt;/TH&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TR&gt;
&lt;TH&gt;id&lt;/TH&gt;
&lt;TH&gt;Cell&lt;/TH&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;5&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;7&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;9&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;9&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;10&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;11&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;11&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;このテーブルがあれば、Grid(University Ave) はこんなクエリで調べられる。 &lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;SELECT cell&lt;BR&gt;FROM RoadsIdx&lt;BR&gt;WHERE id = 1&lt;/P&gt;&lt;/BLOCKQUOTE&gt;このテーブルはこのクエリに最適化されているとは言えないが、クラスタインデックスがあるため(IDでなく)Cellでアクセスするのは速い。指定されたcellにどの空間オブジェクトが入っているかを高速に調べられる。この内部テーブルを使ってEXISTS句を以下のように書き換えられる。 
&lt;BLOCKQUOTE&gt;SELECT Name&lt;BR&gt;FROM Roads&lt;BR&gt;WHERE&lt;BR&gt;&amp;nbsp;&amp;nbsp; EXISTS (&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT *&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM Grid(@x) g1 &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; JOIN RoadsIdx g2 ON g1.cell = g2.cell&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE Roads.Name = RoadsIdx.Name&lt;BR&gt;&amp;nbsp;&amp;nbsp; )&lt;BR&gt;&amp;nbsp; AND Shape.STIntersects(@x) = 1 &lt;/BLOCKQUOTE&gt;
&lt;P&gt;（訳注：このSQLは原文まま）&lt;/P&gt;
&lt;P&gt;空間DBがどんな処理を行うかを説明するために処理の内容をSQLだけで書いてることに注意してくれ。別の書き方だとこうなる。 &lt;/P&gt;
&lt;BLOCKQUOTE&gt;SELECT Name&lt;BR&gt;FROM &lt;BR&gt;&amp;nbsp;&amp;nbsp; (&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT DISTINCT id&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM Grid(@x) g1 JOIN RoadsIdx g2 ON g1.cell = g2.cell&lt;BR&gt;&amp;nbsp;&amp;nbsp; ) as PrimaryFilter&lt;BR&gt;&amp;nbsp;&amp;nbsp; JOIN Roads ON PrimaryFilter.id = Roads.id&lt;BR&gt;WHERE Shape.STIntersects(@x) = 1&lt;/BLOCKQUOTE&gt;
&lt;P&gt;実際には何が起こってるんだ？これらのクエリだけみてもデータフローがよくわからんと思うのでツリー風の図で説明してみる。元のクエリの動きから。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;IMG src="http://f.hatena.ne.jp/images/fotolife/h/hogeman/20080212/20080212232837.gif"&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;「Roads」テーブルの全表走査が走る。これはデータ量の多い処理なんで太線で表してみた。改善を施したほうのバージョンだと動きはちょっと異なってて、こうなる。 &lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://f.hatena.ne.jp/images/fotolife/h/hogeman/20080212/20080212232835.gif"&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;新しい実行プランだと実行ツリーは複雑になってるけど、インデックスが使われることでデータ量の多いフローはなくなってる。パラメータのグリッド化は速く、少しの列しか作らない。もはやテーブルが全表走査もされることもなくなった。ちょっとツリーが複雑になったのに速度は劇的に改善してるんだ。&lt;/P&gt;
&lt;P&gt;まあ単純なグリッドインデックスにはいろいろ問題がある。このサンプルでは１６セルしか扱ってないがこれは広域を扱うには少なすぎる。もしもっと細かいグリッドを使ったら作ったで、セルの数や内部テーブルの行数がすごく増えてしまう。 &lt;/P&gt;
&lt;P&gt;Now that we have these basics out of the way, 次回はSQL Serverの空間インデックスが実際にどう動くかの話をするね。 &lt;/P&gt;
&lt;P&gt;Cheers,&lt;BR&gt;-Isaac&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;
&lt;P&gt;
&lt;HR id=null&gt;
（で、この続きは乞うご期待なんだが、この先はBOLとかwebcastとか見りゃわかる（身も蓋もねえな）。某E社製品のチューニングノウハウとか流用できそうな雰囲気。） 
&lt;P&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/hogeman/aggbug/122933.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>hogeman</dc:creator><title>空気読まずにBlog翻訳２</title><link>http://blogs.wankuma.com/hogeman/archive/2008/02/12/122747.aspx</link><pubDate>Tue, 12 Feb 2008 01:54:00 GMT</pubDate><guid>http://blogs.wankuma.com/hogeman/archive/2008/02/12/122747.aspx</guid><wfw:comment>http://blogs.wankuma.com/hogeman/comments/122747.aspx</wfw:comment><comments>http://blogs.wankuma.com/hogeman/archive/2008/02/12/122747.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/hogeman/comments/commentRss/122747.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/hogeman/services/trackbacks/122747.aspx</trackback:ping><description>&lt;P&gt;SQL Server 2008 空間拡張チームのISAACさんBlog超訳のつづき。興味ねえようぜえよという方は華麗にスルーしてください。（そこ頼まなくてもスルーされてるとか言うな）&lt;/P&gt;
&lt;P&gt;
&lt;HR id=null&gt;

&lt;P&gt;&lt;/P&gt;
&lt;P&gt;元記事へのリンク：&lt;A href="http://blogs.msdn.com/isaac/archive/2007/11/27/spatial-indexing-part-2-a-simple-spatial-indexing-scheme.aspx"&gt;http://blogs.msdn.com/isaac/archive/2007/11/27/spatial-indexing-part-2-a-simple-spatial-indexing-scheme.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;空間インデックス パート２ 「A Simple Spatial Indexing Scheme」&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;前回に引き続いて空間インデックの話をつづけるね。君が空間インデックスについて知ってたら、はじめのほうの数回の記事は基本的なバックグラウンドの説明になると思う。--あんまり間違えないようにしなきゃね(｀・ω・&amp;#180;)&lt;/P&gt;
&lt;P&gt;マジソンに注目して説明を続ける。ちょっと質問に答えてみてくれ。どの道路がUniversity Avenueと交差してると思う？（問題が少し変わってるのに気付いたかもしれないが、作図を簡単にしたかっただけなんだ。手続きに違いはないから気にしないでくれ。） Virtual Earth上にクエリーを表示したらこうなる。&lt;BR&gt;&lt;IMG src="http://f.hatena.ne.jp/images/fotolife/h/hogeman/20080212/20080212013807.jpg"&gt;&lt;BR&gt;(訳注：MadisonからMiddletonにかけて水色になってる通りが University Avenue。土地勘ないからわかんねー)&lt;BR&gt;この問題をSQLにしてみよう。「Roads」テーブル (id int, g geography) があると思ってくれ。 そしてクエリー引数となるオブジェクト（ここでは University Avenue）が @x に入っていると仮定すると、SQLはこう表現できる。&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;SELECT id&lt;BR&gt;FROM Roads&lt;BR&gt;WHERE g.STIntersects(@x) = 1&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;空間インデックスがない場合は「Roads」テーブルを全走査することになってしまう。どうやったら一次フィルタ、二次フィルタを使ったクエリにできるだろうか。&lt;BR&gt;まずは単純な手法、グリッドインデックスから考えてみよう。（これはSQL Serverの中で実際に行われている動きとは多少違うが、原理を理解する助けにはなる）&lt;BR&gt;グリッドインデックスはその名の通り、空間を格子状に区切るものだ。説明のためにマジソン周辺に限定してグリッドに区切るとこんな感じになる。&lt;BR&gt;&lt;IMG src="http://f.hatena.ne.jp/images/fotolife/h/hogeman/20080212/20080212013806.jpg"&gt;&lt;BR&gt;こうすることで、それぞれの地理オブジェクトに対して、グリッドと交差して（重なって）いるマス目の数字を割り当てることができる。別の言い方をすれば、グリッドは空間オブジェクトとそれが交差する各マス目の値を関連付けるテーブル値関数を定義する。たとえば @x がクエリオブジェクトとすれば、Grid(@x) = {5, 9, 10, 11}; といった具合。&lt;BR&gt;&lt;IMG src="http://f.hatena.ne.jp/images/fotolife/h/hogeman/20080212/20080212013803.jpg"&gt;&lt;BR&gt;「Roads」テーブルのどの道路に対してでも同じような結果が得られる。さらに、２つの道路が交差する場合は必ずマス目を共有するので、一次フィルタの実装にこのグリッドを使うことができる。さきほどのクエリーは概念的にはこんな風に書き換えられる。&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;SELECT id&lt;BR&gt;FROM Roads&lt;BR&gt;WHERE&lt;BR&gt;&amp;nbsp;&amp;nbsp; EXISTS (&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT *&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM Grid(@x) g1 JOIN Grid(Roads.g) g2 on g1.cell = g2.cell&lt;BR&gt;&amp;nbsp;&amp;nbsp; )&lt;BR&gt;&amp;nbsp; AND g.STIntersects(@x) = 1&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;これは説明用の疑似コードであることに注意してくれ。実際にはSQLを書き換えたりしなくてもDBエンジンが内部的によしなにしてくれる。このSQLは単にクエリの背後でどんな処理がおこなわれているのかを説明するためのものなんだ。&lt;BR&gt;いま実際に行なったのは元のクエリに単にEXIST句を加えたことだけだ、ということは言っておきたい。一次フィルタを使ってみましょう。そして二次フィルタを呼び、EXIST句が前回説明した一次フィルタの３つの特徴を満たすクエリになっているかを見てみよう。&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;ふたつの空間オブジェクトが一つのマス目を共有していても実際には交差していない場合もあるので、「交差していないが結果に含まれる」ものがでてくる可能性がある。一方、２つの空間オブジェクトがマス目を共有しないが交差する、ということはありえない。つまり「交差しているが結果に含まれない」ということはない。 
&lt;LI&gt;ここで示した例は説明のために多少概念的な話になってる。実際には１６マスではタイトな絞り込みをするには少なすぎる。まあ馬鹿みたいに誤判断するわけでもないからこれはいいとしておこう. 
&lt;LI&gt;あー、これは問題だわ：ここで書いたような一次フィルタ実装ではたいして速くなるわけじゃない。テーブルの各行の交差をそれぞれ計算する代わりに、各要素に対してグリッド関数の計算をしなければならない。これで速いわけがない。&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;一次フィルタをもっと速い実装にしなくちゃね。 読者のみんなは僕がどう話をもっていこうとしてるかわかってるような気がするけど、続きは次回ということで。&lt;/P&gt;
&lt;P&gt;Cheers,&lt;BR&gt;-Isaac&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/hogeman/aggbug/122747.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>hogeman</dc:creator><title>PASSJにでも書いてろって内容だけど...わんくまでやるお！</title><link>http://blogs.wankuma.com/hogeman/archive/2008/02/11/122682.aspx</link><pubDate>Mon, 11 Feb 2008 15:29:00 GMT</pubDate><guid>http://blogs.wankuma.com/hogeman/archive/2008/02/11/122682.aspx</guid><wfw:comment>http://blogs.wankuma.com/hogeman/comments/122682.aspx</wfw:comment><comments>http://blogs.wankuma.com/hogeman/archive/2008/02/11/122682.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/hogeman/comments/commentRss/122682.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/hogeman/services/trackbacks/122682.aspx</trackback:ping><description>&lt;P&gt;blogスペース要求しといていい感じに放置状態。ごめんなさい。&lt;/P&gt;
&lt;P&gt;今週末の大阪勉強会には一応初参加の予定。知ってる人誰もいないだろうし勉強会のテーマ的にもアウェイ全開っぽいのに懇親会にも登録とかしてるし。まあＭなだけなんすけどね。&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;今日の本題：空気読まずにBlog翻訳&lt;/U&gt;&lt;BR&gt;&lt;/STRONG&gt;最初のエントリとして SQL Server 2008 空間拡張チームのISAACさんBlogを※未承諾超訳※していってみる。誤訳してたらすまそ。そこはかとなく私自身が書く予定のエントリへのネタフリも兼ねてるわけですが。&lt;/P&gt;
&lt;P&gt;
&lt;HR id=null&gt;

&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;空間インデックス パート１ 「Why a Spatial Index?」&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;やあ、きみたち。&lt;/P&gt;
&lt;P&gt;もし、僕が空間データベースについて説明してるのをみたことがあるなら、空間インデックスの基本的な動きについての僕の話も聞いてるだろう。ここでの一連のブログ記事でも同じような説明を少し詳しいところまでしていこうとおもう。まずは基本的な話から始めて、だんだんと実際の動きについての話にすすめていくつもりだ。&lt;/P&gt;
&lt;P&gt;空間演算に際し、どの空間データベースもだいたい同じような基本的戦略を使っている：（たとえば図形の交差を調べるような）空間演算を処理する場合、実際には二段階に処理をする。一次フィルタと二次フィルタの２段階だ。一次フィルタは粗く絞りこみ、二次フィルタで正確な判断をする。一次フィルタは以下の３つの特性をもってるべき。&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;偽の結果を含む。つまり、指定した条件式とマッチしない空間オブジェクトも結果に含めることがある。だが逆に、マッチするはずのものを誤ってふるい落とすことはない。 
&lt;LI&gt;偽の結果を含みすぎることはない。（一次フィルタが全然仕事をしないのも意味がないので） 
&lt;LI&gt;高速！&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;具体的に説明する。まず全米の道路網データがあるとしよう。ウィスコンシン州マジソンと重なる道路を取り出したいとする。まず一次フィルタ（雑だけど処理が速い）がウィスコンシン州以外のデータをおおざっぱに枝刈りするわけだ。しかしこの結果セットにはマジソンとは重ならないデータも含まれてしまっている（逆はない）。正確な結果をもとめるためには、この結果セットに対して（二次フィルタで）本来の意味の重なり判定演算を行うという寸法だ。&lt;/P&gt;
&lt;P&gt;なんでこんな面倒なことをするかって？そりゃ二次フィルタ（正確な空間演算）が遅いからだよ。複雑な空間演算呼び出しをできる限り排除できたらとても速くなるんだ。もうひとつは、我々はリニアな挙動を望んでいるからだ。ひとつひとつの図形に対していちいち厳密な空間演算してたらそんなの達成できないからね。&lt;/P&gt;
&lt;P&gt;よくわからない？ 単純に言うと、空間インデックスていうのは一時フィルタのことだよ。&lt;/P&gt;
&lt;P&gt;Cheers,&lt;BR&gt;-Isaac&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;元記事へのリンク：&lt;A href="http://blogs.msdn.com/isaac/archive/2007/11/24/spatial-indexing-part-1-why-a-spatial-index.aspx"&gt;http://blogs.msdn.com/isaac/archive/2007/11/24/spatial-indexing-part-1-why-a-spatial-index.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;
&lt;HR id=null&gt;

&lt;P&gt;&lt;/P&gt;
&lt;P&gt;注：一般的にはここに書いてるような使い方だけでなく一次フィルタで完結するような使い方をするケースもあり。たとえばある地図の表示範囲矩形にＰＯＩを出すためのクエリーをする場合には二次フィルタをかける必要はない。しかしながらどの演算子がどのフィルタを使うかを意識しながらSQLを書く必要がある、というのもどうかと思うが。一次フィルタが余分に取ってくる部分の特性は各空間データベースによって割と違うので見比べると面白いっすよ。&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/hogeman/aggbug/122682.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>hogeman</dc:creator><title>わんくまのアカウント作ってみた。</title><link>http://blogs.wankuma.com/hogeman/archive/2008/02/06/121463.aspx</link><pubDate>Wed, 06 Feb 2008 00:26:00 GMT</pubDate><guid>http://blogs.wankuma.com/hogeman/archive/2008/02/06/121463.aspx</guid><wfw:comment>http://blogs.wankuma.com/hogeman/comments/121463.aspx</wfw:comment><comments>http://blogs.wankuma.com/hogeman/archive/2008/02/06/121463.aspx#Feedback</comments><slash:comments>21</slash:comments><wfw:commentRss>http://blogs.wankuma.com/hogeman/comments/commentRss/121463.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/hogeman/services/trackbacks/121463.aspx</trackback:ping><description>&lt;P&gt;こんばんはhogemanです。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://d.hatena.ne.jp/hogeman/"&gt;はてな日記&lt;/A&gt;のほうで与太とか技術話とかチラ裏とかごちゃまぜに書いてたんだけど、わんくまのアカウントとったのを機にMicrosoftネタはこっちに書いてみるテスト。&lt;/P&gt;
&lt;P&gt;とりあえずこっちは技術情報とかblog翻訳とかを中心にした、誰かの役に立つかもしれない感じのネタ中心にやってみるのでよろ。&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/hogeman/aggbug/121463.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>