首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用bing地图进行形状数学运算?

如何使用bing地图进行形状数学运算?
EN

Stack Overflow用户
提问于 2013-05-24 16:17:03
回答 2查看 169关注 0票数 1

如果我在Bing-Maps上显示了两个形状,我可以做任何set Math吗?

我真正想要的是取两个相交的形状,确定相交的第三个形状,然后减少原始形状以排除相交。

我实际上有交叉点的形状,所以关键的部分是从原始形状中“咬一口”。

这样做的原因是当前将交叉点显示为第三层(给出特定的颜色)生成一个很大程度上被遮挡的地图,其中部分透明的shape1和shape2以及交叉点都覆盖了地图的相同部分。

如果我可以“削减”两个主要形状,只有交叉点形状会着色/覆盖地图的那部分。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-13 02:15:07

我不认为Bing Maps API中有现成的解决方案。不过,我以前也用Bing Maps API和SqlGeography Class做过类似的事情。很容易循环遍历我们的Bing多边形的点,因此我们可以将它们绘制到SqlGeography Polygons或SqlGeometry Polygons中。

使用这个类需要Microsoft.SqlServer.Types.dll,但使用SqlExpress是免费的。(请注意,您实际上并不需要安装SQL Server,只需引用该DLL)。

可以使用SqlGeography Class (或SqlGeometry Class)查找相交的形状和点。也许可以看看STIntersection的方法,根据MSDN STIntersection就可以了;

代码语言:javascript
复制
"Returns an object representing the points where a SqlGeography instance intersects another SqlGeography instance."

一旦有了表示形状的对象,当SqlGeography实例与另一个实例相交时,您就知道需要以某种方式调整位于StIntersection返回的SqlGeography实例中的比较实例中的任何点。

这是Peter使用STDifferencesimular question。来减去这两个形状。

我将为您提供一个我为交叉点快速制作的c#示例。我很难找到任何不是纯粹基于SQL Server的代码示例。

代码语言:javascript
复制
  SqlGeography Shape1 = new SqlGeography();
    SqlGeographyBuilder geographyBuilder1 = new SqlGeographyBuilder();
    geographyBuilder1.SetSrid(4326);
    geographyBuilder1.BeginGeography(OpenGisGeographyType.Polygon);
    geographyBuilder1.BeginFigure(47.4275329011347, -86.8136038458706);
    geographyBuilder1.AddLine(36.5102408627967, -86.9680936860962);
    geographyBuilder1.AddLine(37.4928909385966, -80.2884061860962);
    geographyBuilder1.AddLine(38.7375329179818, -75.7180936860962);
    geographyBuilder1.AddLine(48.0932596736361, -83.7161405610962);
    geographyBuilder1.AddLine(47.4275329011347, -86.8136038458706);// Remember last point in the polygon should match the first
    geographyBuilder1.EndFigure();
    geographyBuilder1.EndGeography();

    Shape1 = geographyBuilder1.ConstructedGeography;

    SqlGeography Shape2 = new SqlGeography();
    SqlGeographyBuilder geographyBuilder2 = new SqlGeographyBuilder();
    geographyBuilder2.SetSrid(4326);
    geographyBuilder2.BeginGeography(OpenGisGeographyType.Polygon);
    geographyBuilder2.BeginFigure(47.4275329011347, -86.8136038458706);
    geographyBuilder2.AddLine(36.5102408627967, -86.9680936860962);
    geographyBuilder2.AddLine(37.4928909385966, -80.2884061860962);
    geographyBuilder2.AddLine(47.4275329011347, -86.8136038458706);
    geographyBuilder2.EndFigure();
    geographyBuilder2.EndGeography();
    Shape2 = geographyBuilder2.ConstructedGeography;

    SqlGeography IntersectedShape = Shape1.STIntersection(Shape2);
票数 1
EN

Stack Overflow用户

发布于 2013-05-24 16:37:17

我相信你可以使用新的GeoRSS功能来绘制形状-它支持线条、方框、多边形和圆。GeoRSS被设计为一种轻量级的、社区驱动的方式,用于使用地理信息扩展现有的提要。另请查看GeoJson

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16730502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档