# 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,
} |
***