我有两个包含列表几何数据的表例如(0xE6100000010CFB24190B88E44A40AADDAB69817F3740)我在两个表之间求了形状的交集,现在我尝试在所有相交的形状中找到一个公共点
我试图找到每个形状的STCentroid(),但我找不到如何找到所有形状的公共点
select p1.shape_data.STIntersection(p2.shape_data).STCentroid() as inter_geometry
from map_shapes p1
inner join areas_map_shapes p2 on p2.shape_data.STIntersects(p1.shape_data) = 1
where p2.shape_data.STIntersects(p1.shape_data) = 1
and p2.shape_id = 206
我也试着把所有相交的图形
SELECT
geometry::UnionAggregate(ss.shape_data),
geometry::STGeomFromText( geometry::UnionAggregate(ss.shape_data).STCentroid().ToString(), 0).STY as lat,
geometry::STGeomFromText( geometry::UnionAggregate(ss.shape_data).STCentroid().ToString(), 0).STX as lon
FROM areas_map_shapes T
inner join map_shapes SS on SS.shape_data.STIntersects(T.shape_data) = 1
WHERE SS.shape_data.STIntersects(T.shape_data) = 1
AND T.shape_id = 206
and T.status = 1
and SS.status = 1
and T.country_id = 4
我的问题是我需要在所有相交的图形中找到唯一的一个公共点
添加图像来表示我到目前为止得到的,这显示了所有的形状与主要形状的交叉,我需要找到一个共同点,在所有这些
2条答案
按热度按时间kknvjkwl1#
从你的例子中很难判断,因为(正如@nbk所指出的)很难重现你所要求的。也就是说,看起来你正在寻找STIntersection函数。
slhcrj9b2#
不确定是否有简单/快速的方法来实现。一个想法是使用STIntersection在递归CTE中创建所有区域的相交多边形:
请注意,如果不是所有面实际相交,则会得到一个空几何