Documentation / @openassistant/geoda / spatialJoin
Variable: spatialJoin
constspatialJoin:OpenAssistantTool<SpatialJoinFunctionArgs,SpatialJoinLlmResult,SpatialJoinAdditionalData,SpatialJoinFunctionContext>
Defined in: src/spatial_join/tool.ts:122
spatialJoin Tool
This tool performs spatial join operations between two geometric datasets, combining attributes based on spatial relationships. It's useful for overlaying different types of spatial data and aggregating values across spatial boundaries.
Spatial Join Operations
The tool supports various join operations for aggregating values:
- sum: Sum of values in overlapping geometries
- mean: Average of values in overlapping geometries
- min: Minimum value in overlapping geometries
- max: Maximum value in overlapping geometries
- median: Median value in overlapping geometries
- count: Count of overlapping geometries
- unique: Count of unique values in overlapping geometries
Parameters
rightDatasetName: Name of the dataset providing the geometries to join (source)leftDatasetName: Name of the dataset receiving the joined data (target)joinVariables: Array of variables to join with their aggregation operators (optional)
Example user prompts:
- "Can you join the population data with county boundaries?"
- "Join crime incidents to police districts using sum aggregation"
- "Overlay school locations with census tracts and count schools per tract"
Example
typescript
import { spatialJoin } from "@openassistant/geoda";
import { convertToVercelAiTool } from "@openassistant/utils";
const joinTool = {
...spatialJoin,
context: {
getGeometries: async (datasetName: string) => {
// Implementation to retrieve geometries from your data source
return geometries;
},
getValues: async (datasetName: string, variableName: string) => {
// Implementation to retrieve values from your data source
return [100, 200, 150, 300, 250];
},
},
};
const result = await generateText({
model: openai('gpt-4.1', { apiKey: key }),
prompt: 'Can you join the population data with county boundaries?',
tools: { spatialJoin: convertToVercelAiTool(joinTool) },
});INFO
The left dataset and right dataset should be different. joinVariables should come from the right dataset.
