Interpolate geo point along linestring(沿线串插值地理点)¶
Supported in: Batch, Streaming
Returns a point interpolated along a line. Implementation interprets lines as the shortest path, using a spherical approximation of the globe.
Expression categories: Geospatial
Declared arguments¶
- Fraction: Fraction of the total length of the linestring at which to pull a geo point, starting from the beginning of the linestring. Must be a float between 0 and 1.
Expression\ - Linestring: Linestring along which to interpolate a geo point.
Expression\
Output type: GeoPoint
Examples¶
Example 1: Base case¶
Argument values:
- Fraction:
fraction - Linestring:
linestring
| linestring | fraction | Output |
|---|---|---|
| {"type":"LineString","coordinates":[[0.0,2.0],[30.0,0.0]]} | 0.5 | { latitude: 1.0352686301676643, longitude: 15.004677545504547, } |
| {"type":"LineString","coordinates":[[30.0,2.0],[50.0,3.0]]} | 0.8 | { latitude: 2.8256098405656185, longitude: 45.99752305664789, } |
| {"type":"LineString","coordinates":[[45.0,9.0],[90.0,4.0]]} | 0.2 | { latitude: 8.363732883448177, longitude: 54.073497456494955, } |
Example 2: Base case¶
Argument values:
- Fraction:
fraction - Linestring:
linestring
| linestring | fraction | Output |
|---|---|---|
| {"type":"LineString","coordinates":[[0.0,2.0],[30.0,0.0]]} | 0.5 | { latitude: 1.0352686301676643, longitude: 15.004677545504547, } |
| {"type":"LineString","coordinates":[[30.0,2.0],[50.0,3.0]]} | 0.8 | { latitude: 2.8256098405656185, longitude: 45.99752305664789, } |
| {"type":"LineString","coordinates":[[45.0,9.0],[90.0,4.0]]} | 0.2 | { latitude: 8.363732883448177, longitude: 54.073497456494955, } |
Example 3: Base case¶
Argument values:
- Fraction:
fraction - Linestring:
linestring
| linestring | fraction | Output |
|---|---|---|
| {"type":"LineString","coordinates":[[0.0,2.0],[30.0,0.0]]} | 0.5 | { latitude: 1.0352686301676643, longitude: 15.004677545504547, } |
| {"type":"LineString","coordinates":[[30.0,2.0],[50.0,3.0]]} | 0.8 | { latitude: 2.825609851378893, longitude: 45.99752329517703, } |
| {"type":"LineString","coordinates":[[45.0,9.0],[90.0,4.0]]} | 0.2 | { latitude: 8.363732872387065, longitude: 54.0734975914614, } |
Example 4: Null case¶
Argument values:
- Fraction:
fraction - Linestring:
linestring
| linestring | fraction | Output |
|---|---|---|
| {"type":"LineString","coordinates":[[10.0,4.0],[75.0,0.0]]} | null | null |
| {"type":"LineString","coordinates":[[10.0,8.0],[35.0,0.0]]} | -0.5 | null |
| {"type":"LineString","coordinates":[[10.0,8.0],[35.0,0.0]]} | 1.6 | null |
| {"type":"MultiLineString","coordinates":[[[100.0,0.0]], [[102.0,2.0]]]} | 0.4 | null |
| {"type":"GeometryCollection","geometries":{"type":"LineString","coordinates":[[10.0,4.0]]}} | 0.5 | null |
| null | 1.0 | null |
Example 5: Edge case¶
Description: Fraction values of 0 return a GeoPoint at the start point and fraction values of 1 return a GeoPoint at the end point. There exist floating point errors but should be precise enough for almost all use cases.
Argument values:
- Fraction:
fraction - Linestring:
linestring
| linestring | fraction | Output |
|---|---|---|
| {"type":"LineString","coordinates":[[10.0,4.0],[75.0,0.0]]} | 0.0 | { latitude: 4.0, longitude: 9.999999999999998, } |
| {"type":"LineString","coordinates":[[10.0,8.0],[35.0,0.0]]} | 1.0 | { latitude: 0.0, longitude: 35.0, } |
| {"type":"LineString","coordinates":[[10.0,8.4],[35.0,0.0],[163.0,67.9]]} | 1.0 | { latitude: 67.90000000000002, longitude: 163.0, } |
| {"type":"LineString","coordinates":[[10.0,8.4],[35.0,0.0],[163.0,67.9]]} | 0.0 | { latitude: 8.400000000000002, longitude: 9.999999999999998, } |
中文翻译¶
沿线串插值地理点¶
支持:批处理(Batch)、流处理(Streaming)
返回沿一条线插值得到的点。该实现将线解释为最短路径,使用地球的球面近似模型。
表达式类别: 地理空间(Geospatial)
声明的参数¶
- 分数(Fraction): 从线串起点开始,提取地理点位置占线串总长度的比例。必须是介于0和1之间的浮点数。
表达式\ - 线串(Linestring): 用于插值地理点的线串。
表达式\
输出类型: GeoPoint
示例¶
示例1:基本情况¶
参数值:
- 分数:
fraction - 线串:
linestring
| linestring | fraction | 输出 |
|---|---|---|
| {"type":"LineString","coordinates":[[0.0,2.0],[30.0,0.0]]} | 0.5 | { latitude: 1.0352686301676643, longitude: 15.004677545504547, } |
| {"type":"LineString","coordinates":[[30.0,2.0],[50.0,3.0]]} | 0.8 | { latitude: 2.8256098405656185, longitude: 45.99752305664789, } |
| {"type":"LineString","coordinates":[[45.0,9.0],[90.0,4.0]]} | 0.2 | { latitude: 8.363732883448177, longitude: 54.073497456494955, } |
示例2:基本情况¶
参数值:
- 分数:
fraction - 线串:
linestring
| linestring | fraction | 输出 |
|---|---|---|
| {"type":"LineString","coordinates":[[0.0,2.0],[30.0,0.0]]} | 0.5 | { latitude: 1.0352686301676643, longitude: 15.004677545504547, } |
| {"type":"LineString","coordinates":[[30.0,2.0],[50.0,3.0]]} | 0.8 | { latitude: 2.8256098405656185, longitude: 45.99752305664789, } |
| {"type":"LineString","coordinates":[[45.0,9.0],[90.0,4.0]]} | 0.2 | { latitude: 8.363732883448177, longitude: 54.073497456494955, } |
示例3:基本情况¶
参数值:
- 分数:
fraction - 线串:
linestring
| linestring | fraction | 输出 |
|---|---|---|
| {"type":"LineString","coordinates":[[0.0,2.0],[30.0,0.0]]} | 0.5 | { latitude: 1.0352686301676643, longitude: 15.004677545504547, } |
| {"type":"LineString","coordinates":[[30.0,2.0],[50.0,3.0]]} | 0.8 | { latitude: 2.825609851378893, longitude: 45.99752329517703, } |
| {"type":"LineString","coordinates":[[45.0,9.0],[90.0,4.0]]} | 0.2 | { latitude: 8.363732872387065, longitude: 54.0734975914614, } |
示例4:空值情况¶
参数值:
- 分数:
fraction - 线串:
linestring
| linestring | fraction | 输出 |
|---|---|---|
| {"type":"LineString","coordinates":[[10.0,4.0],[75.0,0.0]]} | null | null |
| {"type":"LineString","coordinates":[[10.0,8.0],[35.0,0.0]]} | -0.5 | null |
| {"type":"LineString","coordinates":[[10.0,8.0],[35.0,0.0]]} | 1.6 | null |
| {"type":"MultiLineString","coordinates":[[[100.0,0.0]], [[102.0,2.0]]]} | 0.4 | null |
| {"type":"GeometryCollection","geometries":{"type":"LineString","coordinates":[[10.0,4.0]]}} | 0.5 | null |
| null | 1.0 | null |
示例5:边界情况¶
描述: 分数值为0时返回起点处的GeoPoint,分数值为1时返回终点处的GeoPoint。存在浮点误差,但对于绝大多数使用场景而言精度足够。
参数值:
- 分数:
fraction - 线串:
linestring
| linestring | fraction | 输出 |
|---|---|---|
| {"type":"LineString","coordinates":[[10.0,4.0],[75.0,0.0]]} | 0.0 | { latitude: 4.0, longitude: 9.999999999999998, } |
| {"type":"LineString","coordinates":[[10.0,8.0],[35.0,0.0]]} | 1.0 | { latitude: 0.0, longitude: 35.0, } |
| {"type":"LineString","coordinates":[[10.0,8.4],[35.0,0.0],[163.0,67.9]]} | 1.0 | { latitude: 67.90000000000002, longitude: 163.0, } |
| {"type":"LineString","coordinates":[[10.0,8.4],[35.0,0.0],[163.0,67.9]]} | 0.0 | { latitude: 8.400000000000002, longitude: 9.999999999999998, } |