如何连接地理点和几何多边形

时间:2015-04-25 04:24:19

标签: sql-server spatial spatial-query

我有一个sql server 2008引擎。在我的数据库中,我有两个表。表A具有PK1列,以及用于POINT值的地理数据类型。表B具有PK2列,其具有用于POLYGON值的几何数据类型。我需要输出一个带有PK1和PK2列的表C.要填充此表,我需要设置Geographic POINT的选择连接在GEOMETRIC POLYGON中。

我试过这个问题:

SELECT p.PropertyID
   ,p.ParcelID
   ,t.GEOID
FROM [bhdev].[dbo].[REF_TRACTS] t
join bhdev.dbo.PropertyParameters p on p.Geolocation.STIntersects(t.geom)=1

这会导致以下错误: 操作数类型冲突:sys.geometry与sys.geography不兼容

如何让联接工作? 感谢

1 个答案:

答案 0 :(得分:2)

线索在错误文本中:

  

操作数类型冲突: sys.geometry 与sys.geography不兼容

(强调我的)我的猜测是[bhdev]。[dbo]。[REF_TRACTS] .geom是几何类型的列而不是它应该的地理位置。您将不得不使用以下内容进行转换:

geography::Point([bhdev].[dbo].[REF_TRACTS].geom.X, 
    [bhdev].[dbo].[REF_TRACTS].geom.Y, 
    3426
)

(或切换X& Y,取决于您存储纬度的那个)我的建议是通过在表格中添加新列来转换所有行,进行上述转换,调整所有代码引用geom列以引用新列,最后将旧列重命名为其他内容。一旦没有重命名后中断的代码,请完全删除该列。