Tag: dundas

分组地理形状

我正在使用Dundas Maps并尝试绘制世界地图,其中国家/地区被分组到特定于业务实现的区域。 我有世界上每个国家的形状数据(点和段)。 我可以通过将区域内的所有国家/地区的所有点和细分添加到新的区域形状来将国家/地区组合到一起。 foreach(var region in GetAllRegions()){ var regionShape = new Shape { Name = region.Name }; foreach(var country in GetCountriesInRegion(region.Id)){ var countryShape = GetCountryShape(country.Id); regionShape.AddSegments(countryShape.ShapeData.Points, countryShape.ShapeData.Segments); } map.Shapes.Add(regionShape); } 问题是国家边界线仍然出现在一个区域内,我想删除它们,以便只显示区域边界。 Dundas多边形必须在同一点开始和结束。 所有国家形状都是如此。 现在我需要一个能够: 确定国家边界在区域边界的交叉点,以便我可以加入区域边界段。 确定哪些国家/地区边界不是区域边界,以便我可以丢弃它们。 对生成的区域点进行排序,以便它们按顺序描述形状边界。 以下是我到目前为止使用地图的地方。 您可以看到仍需要删除国家/地区边界。 例如,蒙古和中国之间的边界应该被丢弃,而蒙古和俄罗斯之间的边界应该保留。 我需要保留区域边界的原因是区域颜色在传达信息方面很重要,但相邻区域可能是相同的颜色。 这些地区可以改变以包括或排除国家,这就是为什么区域塑造必须是动态的。 编辑:我现在知道我正在寻找的是一个多边形联盟。 David Lean 解释了如何使用SQL Server 2008中的空间函数来执行此操作,这可能是一个选项,但我的努力已经停止,因为生成的多边形联合非常复杂,以至于SQL将其截断为43,480个字符。 我现在正在尝试为此找到解决方法或找到在代码中进行联合的方法。