[英]how do I join against a geographic point and a geometry polygon
我有一个sql server 2008引擎。 在我的数据库中,我有两个表。 表A具有PK1列和用于POINT值的地理数据类型。 表B的PK2列的几何数据类型用于POLYGON值。 我需要输出具有列PK1和PK2的表C。 要填充此表,我需要在GEOMETRIC POLYGON中设置Geographic POINT的选择联接。
我已经尝试过以下查询:
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不兼容
我如何才能加入工作? 谢谢
提示在错误文本中:
操作数类型冲突: 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列的代码来转换所有行引用新列,最后将旧列重命名为其他名称。 重命名后没有任何代码中断后,请完全删除该列。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.