繁体   English   中英

存储点是否在 SQL 中的多边形中的结果

[英]Storing results of if a point is in a polygon in SQL

我需要确定 PointTable 中的几何点是否位于存储在 PolygonTable 中的多边形内。 这两个表通过 Id 链接。 我需要查询来检查两个表中 Id 相等的每个 xy 点。 我想将结果(如果点在多边形中)存储在表中,几何点位于新列 IsInBox1 和 IsInBox2 下。 我认为我需要使用的 function 是 STContains。 我已将这两个表说明为 PolygonTable 和 PointTable。 我使用多边形一词来表示实际的多边形数据,并使用字母 xy 来表示点数据。

多边形表

ID 盒子1 方框2
1 多边形 多边形
2 多边形 多边形

点表

ID 行 ID XY
1 1 xy
1 2 xy
1 3 xy
2 1 xy
2 2 xy

这应该是查询后的结果。

点表

ID 行 ID XY 收件箱1 收件箱2
1 1 xy 1 1
1 2 xy 1 0
1 3 xy 0 1
2 1 xy 0 1
2 2 xy 1 0

这是我尝试过的一些代码。 我正在使用 SQL 服务器。 谢谢。

SELECT Id, Box1, Box2
FROM PolygonTable
WHERE Box1.STContains(Select XY From PointTable)
) = 1 AS IsInBox1;

我想你想要这样的东西:

SELECT
    PointTable.Id,
    PointTable.RowId,
    PointTable.XY,
    PolygonTable.Box1.STContains(PointTable.XY),
    PolygonTable.Box2.STContains(PointTable.XY)
FROM PolygonTable
INNER JOIN PointTable ON PointTable.Id=PolygonTable.Id

这是假设您要根据 Id 列匹配 2 个表。

在这种情况下,STContains 像 time 一样传递一个点并返回一个位 - true/false - is in/is not it。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM