如何从.Net应用程序使用SQL Server的空间类型?


14

对于即将进行的项目,要求之一是存储和使用基本的Geogrpahic数据作为现有SQL-Server / .Net应用程序的一部分。

显然我们可以使用SQL Spatial类型,但是,似乎没有任何方法(例如)从SQL查询的结果中读取它们,或保存更新的POI /多边形。

开发人员真的必须亲自在存储过程级别处理转换,还是有一种本地使用类型的方法?


在询问编程时,最好在StackOverflow上问这个问题。
伊恩

2
@Ian此网站的范围最初定义为“面向程序员DBA,制图师,地理学家和任何对GIS专业感兴趣的人的问答网站”(重点是我)
Rowland Shaw 2010年

Answers:


16

这是桌面应用程序还是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兼容版本在许多人的愿望清单上都很高!



2

您可以使用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

希望这可以帮助 !




1

要素数据对象(FDO)库使您可以通过一个统一的接口集访问各种地理空间数据格式(包括SQL Server)。

该库使用C ++,但该库还带有.net包装器。

http://fdo.osgeo.org


0

您看过nHibernate吗?它使用空间.NET类型(如上面的dmbrubac所述),但也可以与SQL Server以外的其他数据库系统通信。

我不知道您是否也要求UI级别,但这是我的2美分:我与SharpMap,GeoAPI一起工作,几年前就休息了。它们很棒,但从未到达过体育场,您可以说它们足够成熟,可以在业务应用程序中使用。一年前,我尝试了ESRI的Silverlight和WPF API,并创建了两个使用该API的原型。它很棒,它不是免费的,但是它确实是可靠的,最先进的,它可以完成您希望它做的所有事情,甚至更多。


UI位是简单的位,因为我们拥有可视化引擎。
罗兰·肖

0

如果您正在编写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类型”以找到下载链接。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.