2

我刚刚将人口普查块形状文件导入 Microsoft SQL Server 2012,现在在尝试对我引入的数据使用某些地理特征(STContains、STWithin、UnionAggregate 等)时遇到问题。我检查了 .prj导入我的 .shp 文件之前的文件,我确定它是 geogrpahy 而不是几何类型。

这是我一直在尝试的示例,只是为了测试它(直接来自 MSDN 网站):

DECLARE @g geography;
DECLARE @h geography;
SET @g = geography::Parse('CURVEPOLYGON (COMPOUNDCURVE (CIRCULARSTRING (-122.200928    47.454094, -122.810669 47.00648, -122.942505 46.687131, -121.14624 45.786679, -119.119263  46.183634), (-119.119263 46.183634, -119.273071 47.107523, -120.640869 47.569114, -122.200928 47.454094)))');
SET @h = geography::Parse('POINT(-121.703796 46.893985)');

select @g.stcontains(@h)

这是我收到的错误:

Msg 6506, Level 16, State 10, Line 6
Could not find method 'stcontains' for type 'Microsoft.SqlServer.Types.SqlGeography' in  assembly 'Microsoft.SqlServer.Types'

我已经对该主题进行了一些研究,似乎我需要安装某种附加功能。我检查了我的 C: 文件夹,因为我看到了通过 Program Files/Microsoft SQL Server/100/SDK/Assemblies/Microsoft.SqlServer.Types.dll 安装它的建议,但因为找不到“Assemblies”文件夹而被难住了。我还看到了下载 Microsoft SQL Server 2012 功能包 ( http://www.microsoft.com/en-us/download/details.aspx?id=29065 ) 的建议,但我不确定我到底需要什么,如果那是正确的看点。

您可能提供的任何帮助将不胜感激。提前致谢。

4

3 回答 3

1

对于我的很多项目,我在项目级别(Visual Studio)创建了一个名为“libraries”的文件夹,我在其中放置了这种性质的 DLL 和其他第三方的东西。我不知道这是否是标准做法,但与我一起工作的每个人都这样做了一段时间,并且在此之前它在 TFS 和 Subversion 中运行良好。

无论如何,我的就在这个目录中(SQL 2012 / Win 7 / 64 bit OS):

C:\Program Files (x86)\Microsoft SQL Server\110\Shared

我将它从该目录复制到我项目中的库文件夹中。

于 2013-12-09T17:08:58.340 回答
0

方法名称区分大小写,需要 STContains 而不是 stcontains

DECLARE @g geography;
DECLARE @h geography;
SET @g = geography::Parse('CURVEPOLYGON (COMPOUNDCURVE (CIRCULARSTRING (-122.200928    47.454094, -122.810669 47.00648, -122.942505 46.687131, -121.14624 45.786679, -119.119263  46.183634), (-119.119263 46.183634, -119.273071 47.107523, -120.640869 47.569114, -122.200928 47.454094)))');
SET @h = geography::Parse('POINT(-121.703796 46.893985)');

select @g.STContains(@h)
于 2021-04-01T14:56:08.067 回答
0

我在使用 SQL Server 2016 LocalDB 时遇到了同样的问题:

在程序集“Microsoft.SqlServer.Types”中找不到类型“Microsoft.SqlServer.Types.SqlGeography”的方法“STCrosses”

我花了一段时间才明白STCrosses是用于几何数据类型的,而对于地理我应该使用STIntersects

于 2018-01-20T20:30:15.870 回答