SQL Serverで空間インデックスを設定し空間演算を高速化する

SQL Server

 データベースのテーブルに適切なインデックスを設定するのはクエリを高速化するうえで重要な施策である.今回,空間演算にコストがかかっていたクエリが空間インデックスの設定により高速化したので報告する.

“SQL Serverで空間インデックスを設定し空間演算を高速化する” の続きを読む

熱中症搬送人員数に都道府県人口をオフセット項として追加し一般化線形回帰分析を行う

 以前の記事ではポアソン回帰モデルおよび負の二項分布モデルを用いて熱中症搬送人員数に対する日最高気温と平均水蒸気圧の回帰係数を推定した.

 人口10万人あたり何名の罹患者数,というのは割り算値である.総務省消防庁の公開している熱中症搬送人員数は都道府県ごとの搬送数であり,もともと都道府県別人口が異なるのだから搬送人員数を都道府県人口で割った割合のほうが指標として適切なのではないか,という指摘は一理ある.

 しかし,割り算値ではなく実数を解析すべきである.変形した観測値を統計モデルの応答変数にするのは不必要であるばかりか,誤った結果を導きかねないからである.割り算値からは確からしさの情報が失われること,変換された値の分布が不明であることから,割り算値は避けるべきである.その代わりに割り算の分母をオフセット項として線形予測子に組み込む手法がある.

 熱中症搬送人員数はカウントデータであり,その期待値は集計ゾーンの集計対象人口に依存する.都道府県人口をオフセット項とすることで,都道府県の人口規模の影響を調整した回帰分析ができる.今回は都道府県人口をオフセット項として線形予測子に組み込み,一般化線形回帰分析を行ってみた.

“熱中症搬送人員数に都道府県人口をオフセット項として追加し一般化線形回帰分析を行う” の続きを読む

医療機関テーブルに二次医療圏コードを追加する

SQL Server

 医療機関テーブルには二次医療圏コードが存在しない.そのため,ある医療機関がどの二次医療圏に属しているかを調べるには空間データを調べる必要がある.空間データは計算コストが高く,テーブルの結合条件に STWIthin() メソッドを使うのは時間がかかる.そのため,医療機関テーブルに二次医療圏コードを追加しようと考えた.

“医療機関テーブルに二次医療圏コードを追加する” の続きを読む

第14章 インデックス作成 (Beginning Spatial with SQL Server 2008)

SQL Server

 効率的なインデックス作成は,迅速かつ効率的に結果を探索するデータベースアプリケーションを作成するために重要である.空間データを蓄積するためにデザインされる geometry 型および geography 型に加えて,SQL Server 2008 はまた空間データを使用するための新しいインデックスの型を含んでおり,それは(驚くべきことでもないが)空間インデックスと呼ばれる.本章では空間インデックスがどのように動作し,空間インデックスを使って空間クエリの速度をどのように改善するか説明する.

付記 SQL Server の汎用クラスター化インデックスおよび非クラスター化インデックスは多くの異なるデータ型のインデックスを作成するのに使われ,そこには int 型,char 型および datetime 型を使って蓄積される値を含んでいる.しかし,空間インデックスはgeometry 型および geography 型の列の上でしか作成されず,これらのデータ型の列にのみ空間インデックスは追加できる.

“第14章 インデックス作成 (Beginning Spatial with SQL Server 2008)” の続きを読む

第 11 章 空間オブジェクトのプロパティを検査する(Begining Spatial with SQL Server 2008)

SQL Server

第 4 部 空間データの解析

 本書のこの部では,geography 型および geometry 型でデータをフィルターし解析できるメソッドを論ずる.それはアプリケーションにおいて空間データの力を開発するのに使うのに必要な主要な機能を提供してくれる.
 そのメソッドは3つのカテゴリに分類される.章ごとに一つ.第11章では個別の空間オブジェクトのプロパティについての情報を解析して返すメソッドを扱う.第12章では既存のオブジェクト間の組み合わせまたは修飾の間の新しいオブジェクトを定義するメソッドをカバーする.第13章ではオブジェクト間の関係をテストするメソッドを紹介する.例えば同一性,近接性,交差などである.

“第 11 章 空間オブジェクトのプロパティを検査する(Begining Spatial with SQL Server 2008)” の続きを読む

第 4 章 空間データオブジェクトを生成する (Beginning Spatial with SQL Server 2008)

SQL Server

第 2 部 空間データを追加する

 本書のこの部では空間データを SQL Server 2008 データベースに追加する様々な方法を説明する.第 4 章では,既知の座標からいかなるアイテムをも生成するのに使われる存在する静的メソッドのそれぞれを紹介する.第 5 章では,外部資源をかぶせてそれらの座標を派生させるのを助けるための技術を解説する.Microsoft の Virtual Earth Map Control を使う.第 6 章では,空間データの蓄積される他の一般的なデータフォーマットについて議論し,これらの蓄積されたデータを SQL Server 2008 にインポートする方法についての例を提供する.最後に,第 7 章で SQL Server を拡張してジオコーディング機能を提供する方法を示す.つまり,.NET 経由で Microsoft MapPoint Web Services にアクセスして自動的に住所から座標を取得することである.

 前章では,静的メソッドの概念について紹介し,geography 型および geometry 型のオブジェクトをインスタンス化する方法について説明した.本章では各データ型で利用できる異なる静的メソッドを検査し,空間データの新しいアイテムを生成するのに使われる方法について比較する.

注記 本章でのほとんどのコードサンプルは,@Point などのローカル変数を宣言し,その結果静的メソッドにより生成されたインスタンスを蓄積する.しかし,INSERT ステートメントを呼び出すことで静的メソッドの結果をテーブルの geometry 型および geography 型の列に挿入することもできる.

“第 4 章 空間データオブジェクトを生成する (Beginning Spatial with SQL Server 2008)” の続きを読む

複数行のレコードセットをテーブルとして返すストアドプロシージャまたはユーザー定義のインラインテーブル値関数をSQL Serverで定義する

SQL Server

 ROC曲線の閾値を求めるストアドプロシージャまたはインラインテーブル値関数をSQL Serverで定義するでは単一のレコードを返すストアドプロシージャ,またはインラインテーブル値関数を作成した.今回は引数の最小値と最大値を渡して複数行のレコードセットをテーブルとして返すストアドプロシージャ,またはユーザー定義のインライン関数を定義したい.

“複数行のレコードセットをテーブルとして返すストアドプロシージャまたはユーザー定義のインラインテーブル値関数をSQL Serverで定義する” の続きを読む