найти список полигонов из радиуса на сервере sql - PullRequest
0 голосов
/ 30 мая 2018

Я сохранил список полигонов как объект Geometry в Sql Server, а затем на основе широты / долготы я рисую радиус вокруг этой точки.

Вот оператор, который я использовал для рисования радиуса.

DECLARE @radiusInMeters FLOAT = 1000; 

DECLARE @radius GEOMETRY = GEOMETRY::Point(59.9283128,10.7132419, 4326).STBuffer(@radiusInMeters); 

Как только я получаю радиус, который я ищу, полигоны падают вместе с этим радиусом, используя следующую инструкцию.

SELECT * FROM MyTableName WHERE area.STWithin(@radius) = 1;

Но вместо того, чтобы полигоны попадали в радиус, я получаю все записи измой стол.

1 Ответ

0 голосов
/ 01 июня 2018

Я нашел решение.Спасибо Барри Кинг за такой замечательный пост.

https://sqldev.wordpress.com/2010/06/24/sql-server-spatial-geometry-radius/

Обновлено:

Вот утверждение решило мою проблему.

DECLARE @radius INT = 1000 -- e.g. in metres
DECLARE @geo geometry = geometry::Point(10.7132419,59.9283128, 4326).MakeValid()
SET @geo = GEOMETRY::STGeomFromWKB(GEOGRAPHY::STGeomFromWKB(@geo.STAsBinary(),4326).STBuffer(@radius).STAsBinary(),4326)
Select @geo.STAsText() 
...