我有一个带有Bing Map控件的Silverlight应用程序,它显示一系列可编辑的MapPolygons,用户可以随意调整大小。当然,这些MapPolygons被定义为地理坐标。如何计算多边形的面积?
多边形在SQL Server中存储为地理类型,我可以返回服务器获取答案,但随后用户在重新塑造多边形时会丢失该区域的交互式更新。准确度在几个百分点内是可取的。
答案 0 :(得分:1)
我通过编写一个例程在客户端上进行'球面几何'区域计算来解决这个问题。工作一个款待,无需返回服务器。
总之,我作弊。我发现该区域的质心,平坦于以质心为中心的平面,并使用平面几何来通过将多边形视为一系列三角形来进行多边形区域计算。
虽然它是一个近似值,但它对我的目的来说非常准确。如果我需要一个确切的答案,我会使用SCHUMMBOs方法。
戴夫。
答案 1 :(得分:0)
如果您不介意返回WCF服务,可以使用Microsoft.SqlServer.Types库进行计算。 SqlGeometry有一个名为STArea的方法:http://blogs.msdn.com/b/davidlean/archive/2008/10/17/this-site-under-construction.aspx
您不一定必须失去应用程序的交互性。当用户完成调整大小后,您可以向服务部门询问该区域并简要显示微调器或其他内容。我知道这不会像调整大小那样灵活,但你也不必计算客户端上的区域。
对不起,我没有帮助回答如何在运行中做到这一点。