可以计算一条线上两个点的中点吗?两个点必须是线上的点吗?

简介: 可以计算一条线上两个点的中点吗?两个点必须是线上的点吗?

是的,可以使用PostgreSQL中的ST_LineSubstring和ST_LineInterpolate函数来计算一条线上两个点的中点。

假设你有一个线段对象(line)和一个起点(start_point)和一个终点(end_point),你可以使用以下查询来计算这两个点的中点:

SELECT ST_AsText(
    ST_LineInterpolatePoint(
        line,
        ST_LineLocatePoint(line, start_point) + (ST_LineLocatePoint(line, end_point) - ST_LineLocatePoint(line, start_point)) / 2
    )
);

在这个查询中,ST_LineLocatePoint函数用于获取一个点在线段上的位置(以线段的总长度的比例表示)。然后,我们计算起始点和终点位置的平均值,并使用ST_LineInterpolatePoint函数来获取该位置对应的点,即中点。最后,ST_AsText函数将结果转换为文本格式。

请注意,这个查询假设你的线段对象是一个几何类型(例如LINESTRING或MULTILINESTRING),并且你已经正确地定义了起点和终点。

不,两个点不必是线上的点。在PostgreSQL中,你可以使用ST_LineSubstring和ST_LineInterpolatePoint函数来计算任意两点之间的线段的中点,而不仅仅是在线段上的点。

假设你有两个点对象(point1)和(point2),你可以使用以下查询来计算它们之间的线段的中点:

SELECT ST_AsText(
    ST_LineInterpolatePoint(
        ST_MakeLine(point1, point2),
        0.5
    )
);

在这个查询中,ST_MakeLine函数用于创建一个从point1到point2的线段对象。然后,我们使用ST_LineInterpolatePoint函数来获取该线段上位置为0.5(即中间位置)的点,即中点。最后,ST_AsText函数将结果转换为文本格式。

请注意,这个查询假设你的点对象是几何类型(例如POINT或MULTIPOINT),并且你已经正确地定义了这两个点。

目录
相关文章
|
6月前
|
搜索推荐 测试技术 流计算
承上启下:基于全域漏斗分析的主搜深度统一粗排
文章首先介绍了淘宝搜索的多阶段检索系统,包括召回、粗排和精排阶段。粗排模型的目标是优化商品的排序,以提高在召回集合中选择优质商品的能力。文章提到,粗排模型与精排模型的目标有所不同,粗排更注重腰部商品的排序,而精排更注重头部商品的排序。 此外,文章还探讨了模型的损失函数形式,发现原始的softmax损失函数在处理多正样本时存在问题,提出了改进的损失函数,使得模型在粗排阶段的表现更佳。最后,作者们总结了优化工作的进展,以及优化样本对齐,以实现更好的整体效果。
ArcGIS:如何使用成本距离分析确定学校距离目标点的最短成本距离?
ArcGIS:如何使用成本距离分析确定学校距离目标点的最短成本距离?
209 0
|
城市大脑 自动驾驶 Cloud Native
和400万客户一起,画出“千行百业云上图”
和400万客户一起,画出“千行百业云上图”
159 0
|
SQL 人工智能 安全
把数据中心放到北极圈,也许都没这条绿色计算之路收益高
把数据中心放到北极圈,也许都没这条绿色计算之路收益高
121 0
|
存储 运维 监控
如何定位线上问题?
「你是怎么定位线上问题的?」 这个面试题我在两年社招的时候遇到过,前几天面试也遇到了。我觉得我每一次都答得中规中矩,今天来梳理复盘下,下次又被问到的时候希望可以答得更好。
151 0
|
API
DJI开发之航线重叠率的计算
DJI开发之航线重叠率的计算
969 0
DJI开发之航线重叠率的计算
|
安全 Serverless Python
阿里云函数计算组件感知线上“异动”:让发布更安全
从我做Serverless工具开始,就经常会遇到有人问这样一个问题:如何保证Serverless业务部署更新的一致性。
158 0
|
运维 监控 Java
助你秒级定位线上问题!
经常做后端服务开发的同学,或多或
助你秒级定位线上问题!
|
Arthas 弹性计算 监控
走完线上 BUG 定位最后一公里
因为线上线下环境隔离的问题,线上的输入很多时候难以在日常环境中构造,定位 bug 效率低下。是否有简单快捷的办法呢?
3820 3
走完线上 BUG 定位最后一公里