我有一个带有 Bing 地图控件的 Silverlight 应用程序,它显示了一系列用户可以随意调整大小的可编辑 MapPolygons。当然,这些 MapPolygon 被定义为地理坐标。如何计算多边形的面积?
多边形在 SQL Server 中存储为地理类型,我可以返回服务器寻求答案,但随后用户在重塑多边形时丢失了该区域的交互式更新。精度在百分之几以内是可取的。
我有一个带有 Bing 地图控件的 Silverlight 应用程序,它显示了一系列用户可以随意调整大小的可编辑 MapPolygons。当然,这些 MapPolygon 被定义为地理坐标。如何计算多边形的面积?
多边形在 SQL Server 中存储为地理类型,我可以返回服务器寻求答案,但随后用户在重塑多边形时丢失了该区域的交互式更新。精度在百分之几以内是可取的。
我通过编写一个例程在客户端上进行“球形几何”区域计算来解决这个问题。工作一种享受,无需返回服务器。
简而言之,我作弊。我找到该区域的质心,展平到以质心为中心的平面,并使用平面几何通过将多边形视为一系列三角形来进行多边形面积计算。
虽然这是一个近似值,但对于我的目的来说已经足够准确了。如果我需要一个准确的答案,我会使用 SCHUMMBOs 方法。
戴夫。
如果您不介意返回 WCF 服务,可以使用 Microsoft.SqlServer.Types 库进行计算。SqlGeometry 有一个名为 STArea 的方法可以做到这一点:http: //blogs.msdn.com/b/davidlean/archive/2008/10/17/this-site-under-construction.aspx
您也不必失去应用程序的交互性。当用户完成调整大小时,您可以向服务询问该区域并简要显示微调器或其他东西。我知道这不会像调整大小那样即时进行,但您也不必计算客户端上的区域。
抱歉,我在回答如何即时进行时没有更多帮助。