将分数值计算为行长从行开始到距离给定点最近的线条上的点和地球上的整行长度的比率。
语法
geo_line_locate_point(
lineString,
经度,
纬度,
[ use_spheroid ])
详细了解语法约定。
参数
名称 | 类型 | 必选 | DESCRIPTION |
---|---|---|---|
lineString | dynamic |
✔️ | GeoJSON 格式的行。 |
经度 | real |
✔️ | 地理空间坐标经度值(以度为单位)。 有效值为 [-180, +180]。 |
纬度 | real |
✔️ | 地理空间坐标纬度值(以度为单位)。 有效值为 [-90, +90]。 |
use_spheroid | bool |
如果将 false 球体用作 测地基准 ,用于测量距离。 如果使用 true 球体测量距离。 如果未指定,则使用默认值 false 。 |
退货
行分数值介于 0 和 1 (0 - 100%) 之间,从一个线的起点到一个最接近给定点和地球上整条线的点的比率。 如果行或坐标值无效,查询将生成 null 结果。
注释
- 地理空间坐标解释为 WGS-84 坐标参考系统表示。
- 如果“use_spheroid”= false,则线段是球体上的 地理线 段。 如果“use_spheroid”= true,则线段将在球体上为地理线段。 大多数应用程序应使用性能更高的球体测量距离
- 如果输入线边缘是直笛卡尔线,请考虑使用 geo_line_densify() 将平面边缘转换为地理区域。
- 输入不应包含多个行字符串。
- 如果输入行字符串在与输入点相等距离的行上具有多个单一点,则不能保证选择哪个点。
- 若要计算行上的分数点,请使用 geo_line_interpolate_point()
LineString 定义和约束
dynamic({“type”: “LineString”,“coordinates”: [[lng_1,lat_1], [lng_2,lat_2], ..., [lng_N,lat_N]]})
- LineString 坐标数组必须至少包含两个条目。
- 坐标 [经度, 纬度] 必须有效,其中经度是 [-180, +180] 范围内的实数,纬度是 [-90, +90] 范围内的实数。
- 边缘长度必须小于 180 度。 选择两个顶点之间的最短边缘。
例子
以下示例计算分数值。
let line = dynamic({"type":"LineString","coordinates":[[-73.95796, 40.80042], [-73.97317, 40.764486]]});
print fraction = geo_line_locate_point(line, -73.965, 40.792);
输出
小数 |
---|
0.25560135100307552 |
下面的示例由于行无效而返回 true
。
print is_bad_line = isnull(geo_line_locate_point(dynamic({"type":"LineString","coordinates":[[1, 1]]}), 1, 1))
输出
is_bad_line |
---|
是 |