Tag: geography

适用于Windows中的Windows PC的优秀GIS软件或组件?

上周我搜索了很好的免费或开源解决方案和GIS(地理信息系统)组件我创建了一些系统,但没有人满足我的要求 SharpMap是一款非常有缺陷的软件 Gmap.net很慢 MapWindow具有非常复杂的结构并且非常错误。 我创建了uDIG但是在java中,我需要在vb.net或c#中使用解决方案。 任何人都知道一个满足我的要求或有替代品的好解决方案,我接受解决方案?

分组地理形状

我正在使用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个字符。 我现在正在尝试为此找到解决方法或找到在代码中进行联合的方法。

NHibernate.Spatial和Sql 2008地理类型 – 如何配置

我试图使用Nhibernate与Sql 2008地理类型,并有困难。 我正在使用Fluent Nhibernate来配置我相当新的,所以这也可能是问题。 首先,我试图坚持的课程看起来像: public class LocationLog : FluentNHibernate.Data.Entity { public virtual new int Id {get;set;} public virtual DateTime TimeStamp {get;set;} public virtual GisSharpBlog.NetTopologySuite.Geometries.Point Location {get;set;} } 映射类如下所示: public class LocationLogMap : ClassMap { ImportType(); Id(x => x.Id); Map(x => x.TimeStamp).Generated.Insert(); Map(x => x.Location); } 为了将MsSql2008GeographyDialect与Fluent Nhibernate一起使用,我创建了自己的配置类: public class Sql2008Configuration : PersistenceConfiguration { public […]

是否可以使用Linq to Sql的SqlGeography?

我一直在尝试使用Microsoft.SqlServer.Types.SqlGeography遇到很多问题。 我完全知道在Linq to Sql中对此的支持并不是很好。 我尝试了很多方法,从预期的方式开始( geography数据库类型, SqlGeography CLR类型)。 这会产生NotSupportedException ,这是通过博客广泛讨论的。 然后,我将geography列作为varbinary(max) ,因为geography是存储为二进制的UDT。 这似乎工作正常(使用一些二进制读取和写入扩展方法)。 但是,我现在遇到了一个相当模糊的问题,这似乎并没有发生在很多其他人身上。 System.InvalidCastException:无法将类型为“Microsoft.SqlServer.Types.SqlGeography”的对象强制转换为“System.Byte []”。 迭代查询时, ObjectMaterializer会抛出此错误。 它似乎只发生在包含地理列的表隐式包含在查询中时(即使用EntityRef属性进行连接)。 System.Data.Linq.SqlClient.ObjectReaderCompiler.ObjectReader`2.MoveNext() 我的问题:如果我将geography列检索为varbinary(max) ,我可能会发现反向错误:无法将byte[] SqlGeography为SqlGeography 。 我明白了。 我没有。 我对部分LINQ to SQL类有一些隐藏二进制转换的特性……那可能是问题吗? 任何帮助表示赞赏,我知道可能没有足够的信息。 附加function: Visual Studio dbml Designer中具有“服务器数据类型”= geography生成此错误: The specified type ‘geography’ is not a valid provider type. Visual Studio dbml Designer中没有“服务器数据类型”的geography列会生成此错误: Could not format node ‘Value’ […]