「EntityFramework6」で抽出したデータから空間演算メソッドを利用したところ例外が発生

SQL Serverに図形データを含むデータを登録し、「EntityFramework6」を利用して
図形データを抽出し、抽出したデータから空間演算メソッドを利用したところ例外が発生しました。
原因を探るべく、色々調査してみました。

本処理では、ある図形の位置から該当する大字の図形を抽出する処理です。

1回目

EntityFrameworkから取得したDbGeometryから空間演算メソッド(Intersects())を呼び出しました。

結果は、値が入っているにもかかわらず空間演算メソッドで例外が発生しました。
Intersects以外のメソッドを呼びましたが、どれも例外が発生しています。

2回目

DbGeometryは使えそうにないので、あきらめて、EntityFrameworkから取得したDbGeometryのProviderValueというプロパティがあり
SqlGeometry型の値が入っているので、この値を使って、同じように空間演算メソッド(SqlGeometry.STIntersects())を利用しました。

結果は、例外は発生しませんが、空間演算メソッドが正常に動いていません。

3回目

EntityFrameworkから取得したDbGeometryからバイナリデータを取得し、
バイナリデータからSqlGeometryを生成し、同じように空間演算メソッド(SqlGeometry.STIntersects())を利用しました。

結果は、例外も発生せず、空間演算メソッドが正常に動きました。

確認のため、JTS Test Builderを使って双方の図形の位置情報を確認したところ
結果が一致しているいることを確認しました。

Print Friendly, PDF & Email

シェアする

  • このエントリーをはてなブックマークに追加

フォローする