Использование ef core 2.2 пространственных данных с Sqlite.При попытке сделать запрос, который возвращает все известные местоположения в радиусе {x}, ввод требует градусов, а не метров.
var nearByLocations = _context.Locations.Where(x => x.Location.Distance(current.Location) <= 0.1666666).ToList();
Я думал, что если запрос будет на стороне сервера, он вернется в метрах?Я предполагаю, что Sqlite просто не считается сервером.Я могу подтвердить те же результаты в запросе, используя пространственный_гуй
select Distance(Location, (SELECT Location FROM Facility WHERE
LocationIdentifier = '123')) as distance
from Facility
where LocationIdentifier = '456' --distance: 0.336804
Так это ограничение?Если так, что будет лучшим способом найти местоположение в метрах?
EDIT
Мне удалось выполнить то, что я хотел, с помощью запроса RAW SQL.Сначала я использовал функцию "PtDistWithin", затем я сделал заказ по расстоянию.С функцией расстояния мне пришлось преобразовать его в другой SRID.
Хотелось бы, чтобы я мог запрашивать через Linq, но это тоже работает.
var nearBy = _context.Facilities.FromSql(
"SELECT * FROM Facility WHERE FacilityType = 'Test' AND " +
"PtDistWithin(Location, {0}, CvtFromKmi({1})) " +
"ORDER BY Distance(TRANSFORM(Location,2855), TRANSFORM({2},2855));", bus.Location, 20, bus.Location).ToList();