Transform operations¶
Transform applies deterministic operations. Geometry is always kept. Add transformation groups them:
- Fields — Rename, Replace text, Compute column, Trim whitespace, Convert type
- Rows — Filter rows
- Geometry — Clip / Crop, Simplify, Buffer
- Raster — Reproject, Resample (raster datasets)
Build them by hand, with Output Fields, from a Recipe, or — if enabled — by describing the change with AI. AI only authors the operations. Run does not call AI again.
The server catalog (GET /api/v1/transformations) is authoritative. Use catalog id values (rename_column, buffer, sql, python) as API identifiers, not display names.
A Transform step uses one of these mechanisms — not a mix:
| Mechanism | Catalog representation | How you author it |
|---|---|---|
| Operations | "representation": "operation" |
Add transformation, Recipe, or Workspace operations |
| SQL | "representation": "sql" |
SQL Transform / Workspace sql |
| Python | "representation": "python" |
Python / Workspace python |
SQL is a sibling field (sql), not an operation type. Python is a sibling object (script, filename), not an operation type. Basic operations and SQL are mutually exclusive for one step.
Operations you cannot pick in the Add dialog still exist when a Recipe, AI, or Output Fields emits them (keep_columns, drop_column).
Operations you can add¶
Rename column¶
Purpose: Rename a field.
Required: From, To
Example: shape_len → border
Limits: To must be a valid identifier and must not already exist. Geometry cannot be renamed.
Replace text¶
Purpose: Find and replace inside a text field.
Required: Column, Find ( Replace may be empty to delete the find text)
Example: Rd. → Road in column name
Limits: The value is treated as text.
Trim whitespace¶
Purpose: Strip leading and trailing spaces.
Required: Column
Convert type¶
Purpose: Cast a field.
Required: Column, Target type (integer, float, or string)
Filter rows¶
Purpose: Keep rows that match a comparison.
Required (Simple): Column, Operator, Value (or Values for “is one of”)
Operators: =, !=, >, <, >=, <=, is one of, is not one of
Example: status = active
Expression mode: a condition such as population > 10000 AND status = 'active'. See Expression syntax.
Limits: No geometry column. Not a SQL query console.
Compute column¶
Purpose: Create a new field.
Required: Expression, Output column
Simple example: shape_area * 100 into area
Limits (Simple): Only + - * / ( ), numbers, and existing field names. Target name must not already exist.
Expression mode: comparisons, AND / OR, and a small function list. See Expression syntax.
Clip / Crop¶
Purpose: Keep only the part of each feature inside an area. Geometries that cross the edge are cut.
Required: A drawn rectangle or polygon, a bounding box (min_x, min_y, max_x, max_y), or a Polygon / MultiPolygon as WKT or GeoJSON.
Coordinates use the source CRS. GeoJibe does not assume EPSG:4326.
Raster clip supports a bounding box only.
Simplify¶
Purpose: Reduce geometry detail.
Required: Tolerance in source CRS units. Preserve topology defaults to on.
Buffer¶
Purpose: Create an area around each feature. Points and lines become polygons.
Required: Distance in source CRS units. Optional quadrant segments under Advanced options.
Metres are only accepted when the source CRS is known to use metres. Geographic layers (for example EPSG:4326) use degrees.
Raster operations¶
These apply to raster datasets. They are not previewable on the Canvas the way vector operations are. Convert applies them.
Reproject¶
Purpose: Change the raster CRS.
Required: Target CRS (target_crs), for example EPSG:4326.
Catalog id: reproject.
Resample¶
Purpose: Change raster resolution.
Optional: Method (nearest, bilinear, cubic; default nearest), resolution_x, resolution_y, keep_square.
Catalog id: resample.
SQL¶
Catalog id: sql. Representation: sql. Vector and tabular datasets only.
One SELECT against the source relation. Mutually exclusive with operations. See Transform with SQL.
Python¶
Catalog id: python. Representation: python. Vector and raster.
The script runs in the isolated runtime as python3 script.py <input> <output> (no network). On a Workspace pipeline it is a sibling object, not an operation type:
{
"python": {
"script": "import shutil, sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
"filename": "script.py"
}
}
See Python scripts.
Output Fields (keep / drop)¶
Unchecked names are omitted. This is how you remove columns without an extra “Remove column” card.
Internally that is keep_columns / drop_column. You will not usually add those from the Add dialog.
Geometry is never listed and cannot be dropped.
Execution order¶
Operations run in list order, then Output Fields. A later step cannot use a field you already renamed or removed.
Recipes¶
A Recipe stores operations plus Output Fields. Apply it in Transform. Save as Recipe stores the current set. Recipes are not Jobs.