Geospatial workloads usually start with a question in plain language, such as "which stores are inside this polygon?", "which trips cross this corridor?", or "which assets are within 10 km of this point?". They are then translated into spatial relationships between stored geometries.
Relationships you model most often
Contains / within: Is a point inside a polygon, or is one region inside another?
Intersects: Do two geometries share any area or touch along an edge?
Touches / disjoint: Boundary contact only, or no overlap at all?
SurrealDB exposes these ideas through geometry values and the geo:: function family.
Exact operators available to your version are documented alongside geometry types and index definitions. You can also use EXPLAIN to confirm your query plan when tuning performance.
Tip: combine with non-spatial filters
As location queries are rarely done in isolation, you can combine spatial predicates with ordinary fields to form queries for tasks like "coffee shops in this polygon that are open now", not every record in the table.