ST_IsSimple takes a geometry column and returns a boolean column. The output returns
True if the given geometry is
simple; otherwise, it returns
False. The criteria for simplicity vary for each geometry type and are as follows:
- A point is always simple.
- A multipoint is considered simple if no two points are coincident.
- A linestring is considered simple if it does not cross the same point twice, except for start and end points. A multipart linestring is only considered simple if the parts do not interect except at the start or end points of the parts.
- A polygon or multipart polygon is considered simple if each ring does not cross the same point twice and no two rings cross or intersect except at a single point (i.e. they are tangent at a point but not a line).
For more details, go to the GeoAnalytics Engine API reference for is_simple.
This function implements the OpenGIS Simple Features Implementation Specification for SQL 1.2.1
from geoanalytics.sql import functions as ST, Linestring data = [ (Linestring([[[5,5],[7,6],[6,6],[6,8]]]), ), (Linestring([[[5,5],[7,6],[6,6],[5,5]]]), ), (Linestring([[[5,5],[7,6],[6,6],[6,6],[5,5]]]), ) ] df = spark.createDataFrame(data, ["linestring"]) df.select(ST.is_simple("linestring").alias("is_simple")).show()
+---------+ |is_simple| +---------+ | true| | true| | false| +---------+