Geopandas uses shapely for geometry manipulations. In shapely
representative_point is a call to the
GEOSPointOnSurface method in the GEOS C library. The GEOS library is also used by PostGIS, so I'm copying the answer from this similar questions here: https://gis.stackexchange.com/a/76563
If you want to search thru the GEOS library for exactly how things are done, it is common to have to dig 5+ method calls deep to come to the actual algorithm.
Based on a few experiments, I think
ST_PointOnSurface() works roughly like this, if the geometry is a polygon:
- Trace an east-west ray, lying half-way between the northern and
southern extents of the polygon.
- Find the longest segment of the ray
that intersects the polygon.
- Return the point that is half-way along said segment.
That may not make sense, so here's a sketch of a polygon with a ray dividing it into a northern and southern parts:
/ \ <-- northern extent
/ \ __
/ \ / \
/_ _ _ P _ _ _\ / _ _\ P = point-on-surface
/ \/ \
/ C \ C = centroid
/______________________________/ <-- southern extent
ST_Centroid() are usually different points, even on convex polygons.
The only reason for the "surface" in the name, I think, is that if the geometry has 3D lines then the result will be simply be one of the vertexes.
I would agree that more explanation (and better naming) would have been useful and hope a GEOS programmer might shed some more light on the matter.