对于即将进行的项目,要求之一是存储和使用基本的Geogrpahic数据作为现有SQL-Server / .Net应用程序的一部分。
显然我们可以使用SQL Spatial类型,但是,似乎没有任何方法(例如)从SQL查询的结果中读取它们,或保存更新的POI /多边形。
开发人员真的必须亲自在存储过程级别处理转换,还是有一种本地使用类型的方法?
对于即将进行的项目,要求之一是存储和使用基本的Geogrpahic数据作为现有SQL-Server / .Net应用程序的一部分。
显然我们可以使用SQL Spatial类型,但是,似乎没有任何方法(例如)从SQL查询的结果中读取它们,或保存更新的POI /多边形。
开发人员真的必须亲自在存储过程级别处理转换,还是有一种本地使用类型的方法?
Answers:
这是桌面应用程序还是Silverlight应用程序?如果是基于Web的,则必须跳过一些障碍。您可以创建一个公开WKT的视图,然后将WKT客户端解析为WPF / Silverlight几何。
如果它是桌面应用程序,那么您会容易得多。SQL Geometry查看器的代码项目中有一个很好的示例,该示例对桌面或Web都将有所帮助。
您需要引用Microsoft.SqlServer.Types.dll(可在SQL Server安装 / 100 / SDK / Assemblies中找到)以直接使用SQLGeometry或SQLGeography。
像RIA这样的技术无法理解这些类型,但是有一种解决方法。本质上,您创建了一个将几何图形转换为varbinary(max)的视图,在OR映射器,RIA,LINQ等中使用它,然后将其转换回客户端。这是一个很好的教程在这里
很晚的编辑:Silverlight不会接受它们,因为前面提到的DLL并非针对Silverlight编译的。获得Silverlight兼容版本在许多人的愿望清单上都很高!
您可以使用Silverlight ESRI API可视化存储在SQL Server 2008中的空间数据:
您可以使用sql server数据类型,可以从nuget或在以下位置获取它们:http : //www.microsoft.com/zh-cn/download/details.aspx?id= 16177 (在页面末尾)
之后,您可以再次从nuget或此链接中使用流利的nhibernate :(无法在此处插入链接,因为看起来我没有10个代表...)
之后,您将需要一个自定义UserType来将sql类型映射到nhibernate中的clr类型。幸运的是,这个家伙造了一个:http : //blogs.ugidotnet.org/mik/archive/2010/03/26/map-sql-server-2008-geography-type-with-fluent-nhibernate.aspx
希望这可以帮助 !
SharpMap是最好的解决方案。我查看了所有其他内容,它是迄今为止最强大的。不过,请确保您使用的是2.0 beta版本。我已经写了一篇博客文章(包括下载链接)。随时检查。
http://www.jasonkiesel.com/index.php/119/my-go-to-collection-of-net-gis-libraries/
您看过nHibernate吗?它使用空间.NET类型(如上面的dmbrubac所述),但也可以与SQL Server以外的其他数据库系统通信。
我不知道您是否也要求UI级别,但这是我的2美分:我与SharpMap,GeoAPI一起工作,几年前就休息了。它们很棒,但从未到达过体育场,您可以说它们足够成熟,可以在业务应用程序中使用。一年前,我尝试了ESRI的Silverlight和WPF API,并创建了两个使用该API的原型。它很棒,它不是免费的,但是它确实是可靠的,最先进的,它可以完成您希望它做的所有事情,甚至更多。
如果您正在编写Web客户端,则一种选择是使用ArcGIS Spatial Data Service,该服务当前与Esri的MapIt产品打包在一起(请参阅http://resources.esri.com/MapIt)。该服务通过RESTful Web服务公开SQL Server表。Web服务使用ArcGIS JSON格式,因此具有SQL Server空间数据的表可以在ArcGIS Web API中用作FeatureLayers。如果需要桌面客户端,则可以使用WPF API。
桌面开发的一种替代方法是使用SQL Server功能包附带的SQL Server CLR类型。您可以在此处找到2008 R2功能包的下载页面-http: //www.microsoft.com/downloads/zh-cn/details.aspx ? displaylang=en&FamilyID=ceb4346f- 657f - 4d28-83f5 - aae0c5c83d52。向下滚动或查找“ CLR类型”以找到下载链接。