Sql 地理数据不准确
Inaccurate figure with Sql geography
我正在将 geoFences 转换成 Sql 地理 instance.The 目前的问题是某些 instance.The 地理图很奇怪而且不准确。
第一个(绿色区域)是有效的地理围栏,第二个是在 sql 中创建的。
坐标是:-
经纬度
51.576004 24.125605,
51.580467 24.122041,
51.585875 24.119730,
51.591239 24.118751,
51.597633 24.120043,
51.603470 24.123843,
51.607161 24.126114,
51.609950 24.126976,
51.616087 24.127133,
51.625915 24.125997,
51.639776 24.119691,
51.576004 24.125605
有偏差即100米缓冲区
Sql代码:-
geography::STGeomFromText('POLYGON((51.576004 24.125605, 51.580467 24.122041,51.585875 24.11973,51.591239 24.118751,51.597633 24.120043,51.60347 24.123843,51.607161 24.126114,51.60995 24.126976,51.616087 24.127133,51.625915 24.125997,51.639776 24.119691,51.576004 24.125605))', 4120).MakeValid().STBuffer(100)
多边形是一个闭环。这意味着您的栅栏应该是围绕道路的一圈。在这种情况下,您有一条沿着道路的线,然后重复第一个点,即
POLYGON((51.576004 24.125605, ... ,51.576004 24.125605))
如果将其更改为 LINESTRING
geography::STGeomFromText('LINESTRING(51.576004 24.125605, 51.580467 24.122041,51.585875 24.11973,51.591239 24.118751,51.597633 24.120043,51.60347 24.123843,51.607161 24.126114,51.60995 24.126976,51.616087 24.127133,51.625915 24.125997,51.639776 24.119691,51.576004 24.125605)', 4120)
看起来像这样
这应该可以解释你最终得到的形状。
要获得您想要的结果,您可以转换为线串,删除最后一个点,然后应用您的缓冲区。
geography::STGeomFromText('LINESTRING(51.576004 24.125605, 51.580467 24.122041,51.585875 24.11973,51.591239 24.118751,51.597633 24.120043,51.60347 24.123843,51.607161 24.126114,51.60995 24.126976,51.616087 24.127133,51.625915 24.125997,51.639776 24.119691)', 4120).STBuffer(100)
我正在将 geoFences 转换成 Sql 地理 instance.The 目前的问题是某些 instance.The 地理图很奇怪而且不准确。
第一个(绿色区域)是有效的地理围栏,第二个是在 sql 中创建的。
坐标是:-
经纬度
51.576004 24.125605, 51.580467 24.122041, 51.585875 24.119730, 51.591239 24.118751, 51.597633 24.120043, 51.603470 24.123843, 51.607161 24.126114, 51.609950 24.126976, 51.616087 24.127133, 51.625915 24.125997, 51.639776 24.119691, 51.576004 24.125605
有偏差即100米缓冲区
Sql代码:-
geography::STGeomFromText('POLYGON((51.576004 24.125605, 51.580467 24.122041,51.585875 24.11973,51.591239 24.118751,51.597633 24.120043,51.60347 24.123843,51.607161 24.126114,51.60995 24.126976,51.616087 24.127133,51.625915 24.125997,51.639776 24.119691,51.576004 24.125605))', 4120).MakeValid().STBuffer(100)
多边形是一个闭环。这意味着您的栅栏应该是围绕道路的一圈。在这种情况下,您有一条沿着道路的线,然后重复第一个点,即
POLYGON((51.576004 24.125605, ... ,51.576004 24.125605))
如果将其更改为 LINESTRING
geography::STGeomFromText('LINESTRING(51.576004 24.125605, 51.580467 24.122041,51.585875 24.11973,51.591239 24.118751,51.597633 24.120043,51.60347 24.123843,51.607161 24.126114,51.60995 24.126976,51.616087 24.127133,51.625915 24.125997,51.639776 24.119691,51.576004 24.125605)', 4120)
看起来像这样
这应该可以解释你最终得到的形状。
要获得您想要的结果,您可以转换为线串,删除最后一个点,然后应用您的缓冲区。
geography::STGeomFromText('LINESTRING(51.576004 24.125605, 51.580467 24.122041,51.585875 24.11973,51.591239 24.118751,51.597633 24.120043,51.60347 24.123843,51.607161 24.126114,51.60995 24.126976,51.616087 24.127133,51.625915 24.125997,51.639776 24.119691)', 4120).STBuffer(100)