メソッドを使用して、緯度、経度座標がデータベースに格納されているポリゴンのいずれかに含まれているかどうかを判断し、該当するポリゴンのリストを返します (存在する場合)。
私は緯度/経度を持っています:
50.120578, -103.535156
ジオフェンスを作成してデータベースに保存しましたが、
CREATE TABLE [dbo].[GeoFences] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[GeoPoints] [sys].[geography] NULL,
CONSTRAINT [PK_dbo.GeoFences] PRIMARY KEY CLUSTERED ([Id] ASC)
);
これらは GeoPoints の値です。
POLYGON ((-129.63729858398437 57.279042764977774, -92.899017333984375 56.8970039212726, -93.865814208984375 48.922499263758255, -122.86972045898437 48.806863461085172, -129.37362670898437 57.088515327886505, -129.63729858398437 57.279042764977774))
このメソッドを使用すると、ポリゴンがポイントを囲むときにその行が返されると期待しています。
public IEnumerable<GeoFence> SearchGeoPoint(DbGeography geoPoint)
{
try
{
return _geoLocationRepository.Get.Where(obj => obj.GeoPoints.Intersects(geoPoint));
}
catch (Exception)
{
return null;
}
}
ただし、行が返されません。例外やエラーは発生しません。単に 0 行です。