Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server 2008 Geography.STBuffer()距离测量单位_Sql_Distance_Geography_Measurement_Units Of Measurement - Fatal编程技术网

SQL Server 2008 Geography.STBuffer()距离测量单位

SQL Server 2008 Geography.STBuffer()距离测量单位,sql,distance,geography,measurement,units-of-measurement,Sql,Distance,Geography,Measurement,Units Of Measurement,我正在使用lat/long处理一个地理点,需要在数据库中找到该点5英里半径范围内的其他点。然而,我似乎无法找出STBuffer的单位,它似乎不符合英尺、英里、米、公里等。文档仅将它们称为单位,有什么建议吗?谢谢 […]来自地理::STGeomFromText'POINTx y',4326.STBufferz.stintersects地理::STGeomFromText'POINT'+CASTv.经度为varcharmax+''+CASTv.纬度为varcharmax+,4326=1STBuffe

我正在使用lat/long处理一个地理点,需要在数据库中找到该点5英里半径范围内的其他点。然而,我似乎无法找出STBuffer的单位,它似乎不符合英尺、英里、米、公里等。文档仅将它们称为单位,有什么建议吗?谢谢

[…]来自地理::STGeomFromText'POINTx y',4326.STBufferz.stintersects地理::STGeomFromText'POINT'+CASTv.经度为varcharmax+''+CASTv.纬度为varcharmax+,4326=1

STBuffer以米为单位

要将英里数转换为米,请将英里数除以0.0006213712


i、 e.5英里/0.0006213712=8046.72米

测量单位取决于使用的空间参考系统。有关详细信息,请参阅此系统视图:


从sys.spatical\u reference\u systems中选择*

对于访问此页面的任何人来说,如果他们对为什么缓冲区距离可能不以米为单位感到困惑,这可能是因为您使用的是几何数据类型而不是地理数据类型。在我的例子中,很明显,地理是以米为单位的,而几何不是以米为单位的?即使为几何图形正确设置了空间参照系

要将纬度和经度转换为地理点,请执行以下操作:

geography::Point(latitude, longitude, 4326) -- 4326 is WGS-84 EPSG Projection

奇怪的是,米这个词只出现在示例中,而不是在距离参数的描述中。世界各地的距离都是以米/公里/等为单位计算的。我认为只有美国仍然使用英制英寸/英尺/英里。尽管最初的问题指定了地理位置,我来到这里是为了寻找几何或地理的度量单位。为了让其他人看得更远,对于几何体,度量单位是几何体的坐标系。因此,如果使用Lat/Long,geometry.STBuffer1将是1整度,而不是1米。相比之下,1度是巨大的——大约69英里。这正好告诉你,如果你试图表示地球上的点,地理是正确的数据类型,而不是几何!