SQL Serverのクエリオプティマイザはテーブルの統計情報を見て実行計画を作成する.通常のデータ型であれば主キーなどの統計情報はあらかじめ作成されているが,今回空間データの統計情報を作成しようとして失敗したので共有する.
医療機関テーブルに二次医療圏コードを追加する
医療機関テーブルには二次医療圏コードが存在しない.そのため,ある医療機関がどの二次医療圏に属しているかを調べるには空間データを調べる必要がある.空間データは計算コストが高く,テーブルの結合条件に STWIthin() メソッドを使うのは時間がかかる.そのため,医療機関テーブルに二次医療圏コードを追加しようと考えた.
国土数値情報の二次医療圏テーブルの文字化けを解決する
前回の記事(国土数値情報の令和2年の医療圏データの文字化けが直っていた)では国土数値情報の医療圏データで四苦八苦した様子を掲載した.今回は二次医療圏テーブルの文字化けの解決を試みる.
第14章 インデックス作成 (Beginning Spatial with SQL Server 2008)
効率的なインデックス作成は,迅速かつ効率的に結果を探索するデータベースアプリケーションを作成するために重要である.空間データを蓄積するためにデザインされる geometry 型および geography 型に加えて,SQL Server 2008 はまた空間データを使用するための新しいインデックスの型を含んでおり,それは(驚くべきことでもないが)空間インデックスと呼ばれる.本章では空間インデックスがどのように動作し,空間インデックスを使って空間クエリの速度をどのように改善するか説明する.
付記 SQL Server の汎用クラスター化インデックスおよび非クラスター化インデックスは多くの異なるデータ型のインデックスを作成するのに使われ,そこには int 型,char 型および datetime 型を使って蓄積される値を含んでいる.しかし,空間インデックスはgeometry 型および geography 型の列の上でしか作成されず,これらのデータ型の列にのみ空間インデックスは追加できる.
“第14章 インデックス作成 (Beginning Spatial with SQL Server 2008)” の続きを読む
第 7 章 ジオコーディング (Beginning Spatial with SQL Server 2008)
これまで数章にわたって,多くの異なる技術を紹介してきた.その技術により SQL Server 2008 内に空間データを追加できる.geometry 型および geography 型の静的メソッドを WKT, WKB および GML などのジオメトリ表現と共に直接使用する,Virtual Earth ウェブコントロール上にプロットポイントにより空間の特徴を視覚的にマークする,あるいは,様々な他の空間データフォーマットから既に存在する空間データをインポートする.本章では,SQL Server において空間情報のアイテムを定義するのを助けてくれる最後の一つの技術について考察しよう.ジオコーディングである.
注意 本章で議論しているジオコーディングの方法は .NET アセンブリの生成を必要とする.それにより SQLCLR の機能を拡張し,外部ウェブサービスとの連携が可能となる.このアセンブリを生成するのに使われたサンプルコードに従うには,Microsoft Visual Studio を使わなくてはならない.使用可能な Visual Studio には多くのエディションが存在する.本章でのコードは Microsoft Visual Basic 2008 Express Edition でも Microsoft Visual C# 2008 Express Edition でも動作し,どちらも無料で http://www.microsoft.com/express/download/ からダウンロードできる.
“第 7 章 ジオコーディング (Beginning Spatial with SQL Server 2008)” の続きを読む
第13章 空間の関係性を検査する(Begining Spatial with SQL Server 2008)
空間情報を解析するとき,しばしば地球上の2つ以上の地物の関係を理解したくなる.例えば,a と b はどれだけ離れているのか?x と y との間の経路に z はあるのか?p と q は共通の境界を共有しているのか?本章では,これらの疑問に答えるためのメソッドを紹介し,空間データの2つのアイテム間の関係の異なる点から比較しよう.これらのメソッドのすべての構文は,比較のなされるインスタンスがパラメータとしてメソッドに提供され,最初のインスタンス上で次のように動作する.
Instance1.Method(Instance2)
geometry 型および geography 型の両者が実装しているメソッドのコアセットは空間関係を比較するのに使われ,STEquals(), STIntersects(), STDistance() を含んでいる一方,geometry 型は特異的な関係を検査するのに使うもっと拡張した範囲のメソッドを実装しており,STOverlaps(), STCrosses(), および STContains() のようなものである.本章で紹介する各メソッドについて,どちらのデータ型で使われるか示そう.注意すべき点として,geometry 型および geography 型両者に実装されていても,異なるデータ型のインスタンスをそのメソッドで比較することはできないことである.例えば,STDistance() メソッドは2つの geography 型インスタンス間または2つの geometry 型インスタンス間の距離を計算することはできるが,geometry 型インスタンスと geography 型インスタンス間の距離を決定するのに使うことはできない.
“第13章 空間の関係性を検査する(Begining Spatial with SQL Server 2008)” の続きを読む
第12章 空間オブジェクトを修飾する (Begining Spatial with SQL Server 2008)
本章においては,他の既存のインスタンスの一部を修飾したり,結合したり,選択したりして geography 型や geometry 型のデータの新しいアイテムを生成するのに使われる多くのメソッドを紹介しよう.これらのメソッドは静的メソッドとは異なり,ジオメトリの座標点の表現から新しいデータのアイテムを代わりに生成することを了承いただきたい.
本章で論ずるメソッドのいくつか,例えば STBuffer(), STConvexHull() および Reduse() は,単一のインスタンス上で動作する.他のメソッド,例えば STIntersection() および STDifference() は一つ以上のジオメトリ上で動作する.SQL Server 2008 におけるすべての空間機能性の場合のように,geometry 型および geography 型は利用可能なメソッドや,同じ方法でそれらを実装する同じセットをもつ必要はない.本章で紹介する各メソッドについて,いつどのようにそれが使われるかを見せよう.
付記 本章で論ずるメソッドは,それが呼び出された元のインスタンスにいかなる変化をも与えない.むしろ,それらはそれらのインスタンスで表現されるジオメトリの修飾により新しいインスタンスを生成する.
“第12章 空間オブジェクトを修飾する (Begining Spatial with SQL Server 2008)” の続きを読む
第 11 章 空間オブジェクトのプロパティを検査する(Begining Spatial with SQL Server 2008)
第 4 部 空間データの解析
本書のこの部では,geography 型および geometry 型でデータをフィルターし解析できるメソッドを論ずる.それはアプリケーションにおいて空間データの力を開発するのに使うのに必要な主要な機能を提供してくれる.
そのメソッドは3つのカテゴリに分類される.章ごとに一つ.第11章では個別の空間オブジェクトのプロパティについての情報を解析して返すメソッドを扱う.第12章では既存のオブジェクト間の組み合わせまたは修飾の間の新しいオブジェクトを定義するメソッドをカバーする.第13章ではオブジェクト間の関係をテストするメソッドを紹介する.例えば同一性,近接性,交差などである.
“第 11 章 空間オブジェクトのプロパティを検査する(Begining Spatial with SQL Server 2008)” の続きを読む
第 4 章 空間データオブジェクトを生成する (Beginning Spatial with SQL Server 2008)
第 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)” の続きを読む
経度・緯度からPointジオメトリをSQL Serverで生成する
eStatから国勢調査の小地域の境界データをダウンロードしSQL Serverにアップロードするではポリゴンを含むデータを SQL Server にアップロードするまでの記事を記した.今回はそのテーブル内に記録された経度,緯度から Point ジオメトリを生成する.第 6 章 空間データをインポートする (Beginning Spatial with SQL Server 2008)に倣っている.