Mat*_*att 11 spatial .net-4.0 sql-server-2008
我允许用户通过点击绘制在Silverlight中绘制多边形.然后我遍历这些点,将它们转换为经度和纬度,然后保存到SQL(在一geography列中).
问题在于,由于世界是圆形的,所有这一切,只有当用户顺时针绘制时它才有效.否则它会尝试使多边形在世界范围内正确并失败.
那我该怎么做呢?我是否必须弄清楚他们正在绘制哪种方式,如果是这样的话?
您可以检查EnvelopeAngle()地理方法的结果是否为180,然后使用ReorientObject()函数进行更正。
这是示例:
--A CW polygon
DECLARE @G3 GEOGRAPHY = 'POLYGON ((45 45, 44 45, 44 46, 45 46, 45 45))';    
SELECT @G3.EnvelopeAngle();                --180
SELECT @G3.ReorientObject().STAsText();    --POLYGON ((44 46, 44 45, 45 45, 45 46, 44 46))
按照注释中的说明进行编辑,您可以使用简单的更新命令来纠正当前的几何形状(如果您确定它们不正确):
UPDATE foo_table SET bar_column = bar_column.ReorientObject() 
    WHERE bar_column.EnvelopeAngle() > 90
| 归档时间: | 
 | 
| 查看次数: | 3381 次 | 
| 最近记录: |