【问题标题】:how do I join against a geographic point and a geometry polygon如何加入地理点和几何多边形
【发布时间】:2015-04-25 16:17:46
【问题描述】:

我有一个 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 不兼容

如何让加入工作? 谢谢

【问题讨论】:

    标签: sql-server spatial spatial-query


    【解决方案1】:

    提示在错误文本中:

    操作数类型冲突: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 列引用新列,最后将旧列重命名为其他内容。一旦重命名后没有代码中断,请完全删除该列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多