我如何加入一个地理点和一个几何多边形
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 列的代码以引用新列,最后将旧列重命名为其他名称。一旦重命名后没有中断的代码,请完全删除该列。
我有一个 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 列的代码以引用新列,最后将旧列重命名为其他名称。一旦重命名后没有中断的代码,请完全删除该列。