1

我有加载到地理数据类型中的地理数据。出于非常特定的目的,我现在需要将其存储为几何图形。但是,我需要执行这样的查询。

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
4

2 回答 2

0

米是长度的量度,而弧度是角度的量度,所以我认为你不能。

您是否要计算弧长?

看看下面的链接:

于 2010-06-22T15:14:20.847 回答
0

这个技巧可能会奏效,如果有人可以验证此技术或提供更好的替代方案,那么他们将得到公认的答案。

基本上,我想我可以使用地理的 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
于 2010-06-23T07:11:46.117 回答