Skip to content

Commit 00ce3af

Browse files
authored
copy updates from Flink Docs
1 parent 8e24627 commit 00ce3af

File tree

1 file changed

+9
-11
lines changed

1 file changed

+9
-11
lines changed

docs/api/sql/Function.md

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -162,26 +162,24 @@ Output: `POLYGON Z((2 3 1, 4 5 1, 7 8 2, 2 3 1))`
162162

163163
## ST_LabelPoint
164164

165-
Introduction: `ST_LabelPoint` computes and returns a label point for a given polygon or geometry collection. The label point is chosen to:
165+
Introduction: `ST_LabelPoint` computes and returns a label point for a given polygon or geometry collection. The label point is chosen to be sufficiently far from boundaries of the geometry. For a regular Polygon this will be the
166+
centroid.
166167

167-
- Be near the center of the polygon.
168-
- Stay far from boundaries for optimal placement.
168+
The algorithm is derived from Tippecanoe’s `polygon_to_anchor`, an approximate solution for label point generation, designed to be faster than optimal algorithms like `polylabel`. It searches for a “good enough” label point within a limited number of iterations. For geometry collections, only the largest Polygon by area is considered. While `ST_Centroid` is a fast algorithm to calculate the center of mass of a (Multi)Polygon, it may place the point outside of the Polygon or near a boundary for concave shapes, polygons with holes, or MultiPolygons.
169169

170-
The algorithm is inspired by Tippecanoe’s `polygon_to_anchor`, an approximate solution for label point generation, designed to be faster than iterative algorithms like `polylabel`. It may not produce the globally optimal result, but it ensures a “good enough” label point within a limited number of iterations. For geometry collections, only the largest polygon by area is considered. While `ST_Centroid` is a fast algorithm to calculate the center of mass of a polygon, assuming uniform density, it may place the point outside the polygon or near a boundary, especially for irregular shapes or polygons with holes.
170+
`ST_LabelPoint` takes up to 3 arguments,
171171

172-
`ST_LabelPoint` takes upto 3 arguments,
173-
174-
- `geometry`: input geometry (e.g., a polygon or GeometryCollection) for which the anchor point is to be calculated.
175-
- `gridResolution` (Optional, default is 16): Controls the resolution of the search grid for refining the label point. A higher resolution increases the grid density, providing more accurate results but at the cost of additional computation. For example, a gridResolution of 16 divides the bounding box of the polygon into a 16x16 grid.
172+
- `geometry`: input geometry (e.g., a Polygon or GeometryCollection) for which the anchor point is to be calculated.
173+
- `gridResolution` (Optional, default is 16): Controls the resolution of the search grid for refining the label point. A higher resolution increases the grid density, providing a higher chance of finding a good enough result at the cost of runtime. For example, a gridResolution of 16 divides the bounding box of the polygon into a 16x16 grid.
176174
- `goodnessThreshold` (Optional, default is 0.2): Determines the minimum acceptable “goodness” value for the anchor point. Higher thresholds prioritize points farther from boundaries but may require more computation.
177175

178176
!!!note
179177
- `ST_LabelPoint` throws an `IllegalArgumentException` if the input geometry has an area of zero or less.
180-
- Holes within polygons are respected, and the anchor is always placed inside the outer boundary, not inside a hole.
181-
- For GeometryCollection, only the largest polygon by area is considered.
178+
- Holes within polygons are respected. Points within a hole are given a goodness of 0.
179+
- For GeometryCollections, only the largest polygon by area is considered.
182180

183181
!!!tip
184-
- Use `ST_LabelPoint` for tasks such as label placement, identifying representative points for polygons, or other spatial analyses requiring an internal reference point.
182+
- Use `ST_LabelPoint` for tasks such as label placement, identifying representative points for polygons, or other spatial analyses where an internal reference point is preferred but not required. If intersection of the point and the original geometry is required, use of an algorithm like `polylabel` should be considered.
185183
- `ST_LabelPoint` offers a faster, approximate solution for label point generation, making it ideal for large datasets or real-time applications.
186184

187185
Format:

0 commit comments

Comments
 (0)