Я пытаюсь использовать метод, чтобы определить, находится ли координата Lat, Long в каком-либо из сохраненных полигонов в базе данных, и вернуть список тех, в которые она попадает (если есть).
У меня есть широта/долгота:
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 строк.