AR1/docs/workers/dissolve.md

110 lines
2.6 KiB
Markdown

# Dissolve Worker
Processes dissolve operations to merge features based on attribute values.
## Overview
The dissolve worker merges adjacent or overlapping features that share the same attribute value, optionally aggregating numeric fields.
## Job Type
`dissolve`
## Input Parameters
```json
{
"source_dataset_id": 123,
"output_dataset_id": 124,
"dissolve_mode": "field",
"dissolve_field": "category",
"aggregation_fields": {
"population": "sum",
"area": "sum"
}
}
```
### Parameters
- `source_dataset_id` (required): Source dataset ID
- `output_dataset_id` (required): Output dataset ID
- `dissolve_mode` (optional): "all", "field", or "custom" (default: "field")
- `dissolve_field` (required if mode="field"): Field to dissolve on
- `custom_field` (required if mode="custom"): Field for custom grouping
- `custom_groups` (required if mode="custom"): Array of group definitions
- `aggregation_fields` (optional): Object mapping field names to aggregation functions (sum, avg, min, max, count)
## Output
Creates a new dataset with dissolved features:
- Merged geometries for each group
- Aggregated attribute values
- Group identifiers
## Dissolve Modes
### All Features
Merge all features into a single feature. No grouping field required.
### By Field
Merge features that share the same value in the specified field.
### Custom Groups
Merge features based on custom group definitions. Allows complex grouping logic.
## Aggregation Functions
- `sum`: Sum of numeric values
- `avg`: Average of numeric values
- `min`: Minimum value
- `max`: Maximum value
- `count`: Count of features
## Example
```bash
# Enqueue a dissolve job via API
curl -X POST "https://example.com/api/run_dissolve.php" \
-H "Content-Type: application/json" \
-d '{
"source_dataset_id": 123,
"output_dataset_id": 124,
"dissolve_mode": "field",
"dissolve_field": "category",
"aggregation_fields": {
"population": "sum",
"area": "sum"
}
}'
```
## Background Jobs
This analysis runs as a background job. The worker:
1. Fetches queued `dissolve` jobs
2. Validates input parameters
3. Executes PostGIS dissolve queries
4. Applies aggregations
5. Creates output dataset
6. Marks job as completed
## Performance Considerations
- Processing time depends on dataset size and number of groups
- Complex geometries may slow processing
- Aggregation operations add processing time
- Consider simplifying geometries before dissolving
## Related Documentation
- [Dissolve Analysis Tool](../analysis-tools/dissolve.md)
- [Analysis API](../api/analysis.md)
- [Workers Overview](index.md)