我如何加入一个地理点和一个几何多边形

how do I join against a geographic point and a geometry polygon

我有一个 sql 服务器 2008 引擎。在我的数据库中,我有两个 table。 Table A 有一个 PK1 列和一个用于 POINT 值的地理数据类型。 Table B 有一个 PK2 列,其几何数据类型用于 POLYGON 值。我需要输出一个包含 PK1 和 PK2 列的 table C。要填充此 table,我需要为 Geographic POINT is in GEOMETRIC POLYGON 设置 select 连接。

我试过这个查询:

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

不兼容

如何使连接生效? 谢谢

线索在错误文本中:

Operand type clash: sys.geometry is incompatible with sys.geography

(强调我的)我的猜测是 [bhdev].[dbo].[REF_TRACTS].geom 是一个几何类型的列,而不是它应该的地理类型。你将不得不用类似的东西来转换它:

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

(或切换 X 和 Y,具体取决于您存储纬度的位置)我的建议是通过向 table 添加一个新列来转换所有行,执行上面的转换,调整所有引用 geom 列的代码以引用新列,最后将旧列重命名为其他名称。一旦重命名后没有中断的代码,请完全删除该列。