AR1/docs/workers/dissolve.md

2.6 KiB

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

{
  "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

# 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