Пространственные запросы, перевод метров в радианы? - PullRequest
1 голос
/ 22 июня 2010

У меня есть географические данные, которые были загружены в тип данных географии. Для очень конкретных целей мне теперь нужно сохранить это как геометрию. Однако мне нужно выполнить такой запрос.

DECLARE @radius INT -- e.g. 3000 metres

DECLARE @geo geometry -- my starting shape

SET @geo = @geo.STBuffer(@radius) -- this obviously doesnt work.. 

SELECT Geo FROM GeometryTable 
WHERE Geo.STWithin (@geo) = 1

Ответы [ 2 ]

0 голосов
/ 23 июня 2010

Этот прием может сработать, если кто-то может проверить эту технику или предложить лучшую альтернативу, он получит принятый ответ.

По сути, я думаю, что могу использовать STBuffer географии, который будет применять правильный радиус в метрах вокруг моей географической формы, а затем я преобразую обратно в геометрию. Поскольку формы были загружены изначально как география, все точки совпадают. Это изменение формы должно дать мне результирующую геометрию с довольно точным буфером вокруг нее.

DECLARE @radius INT -- e.g. 3000 metres

DECLARE @geo geometry -- my starting shape

SET @geo = GEOMETRY::STGeomFromWKB(GEOGRAPHY::STGeomFromWKB(@geo.STAsBinary(),
           4326).STBuffer(@radius).STAsBinary(),4326)

SELECT Geo FROM GeometryTable 
WHERE Geo.STWithin (@geo) = 1
0 голосов
/ 22 июня 2010

Метры - это мера длины, а радианы - это мера угла, поэтому я не думаю, что вы можете.

Вы пытаетесь рассчитать длину дуги?

Посмотрите ссылки ниже:

...