apache/superset · error · Error

Start and end spatial configurations are required for Arc ch

Error message

Start and end spatial configurations are required for Arc charts

What it means

Thrown by the deck.gl Arc layer's buildQuery when form data lacks start_spatial or end_spatial. An arc needs two endpoints, each defined by a spatial configuration (latlong pair, delimited column, or geohash); without both, no meaningful SQL columns can be derived and query building stops. It is a chart-configuration guard, not a runtime/network failure.

Source

Thrown at superset-frontend/plugins/preset-chart-deckgl/src/layers/Arc/buildQuery.ts:43

  getSpatialColumns,
  addSpatialNullFilters,
  SpatialFormData,
} from '../spatialUtils';
import { addTooltipColumnsToQuery } from '../buildQueryUtils';

export interface DeckArcFormData extends SqlaFormData {
  start_spatial: SpatialFormData['spatial'];
  end_spatial: SpatialFormData['spatial'];
  dimension?: string;
  tooltip_contents?: unknown[];
  tooltip_template?: string;
}

export default function buildQuery(formData: DeckArcFormData) {
  const { start_spatial, end_spatial, dimension, tooltip_contents } = formData;

  if (!start_spatial || !end_spatial) {
    throw new Error(
      'Start and end spatial configurations are required for Arc charts',
    );
  }

  return buildQueryContext(formData, baseQueryObject => {
    const startSpatialColumns = getSpatialColumns(start_spatial);
    const endSpatialColumns = getSpatialColumns(end_spatial);

    let columns = [
      ...(baseQueryObject.columns || []),
      ...startSpatialColumns,
      ...endSpatialColumns,
    ];

    if (dimension) {
      columns = [...columns, dimension];
    }

View on GitHub (pinned to f4587218dd)

Solutions

  1. Open the Arc chart in Explore and configure both the start and end spatial controls (latlong columns, delimited column, or geohash), then save.
  2. Verify the saved slice params JSON actually contains start_spatial and end_spatial objects (check via chart GET /api/v1/chart).
  3. For programmatic use, populate both fields in formData before calling buildQuery.

Example fix

// before
buildQuery({ ...formData, end_spatial: undefined }); // throws

// after
if (!formData.start_spatial || !formData.end_spatial) {
  return showConfigWarning('Arc chart needs start and end spatial controls');
}
buildQuery(formData);
Defensive patterns

Strategy: validation

Validate before calling

if (!formData.start_spatial || !formData.end_spatial) {
  // mark chart misconfigured; do not build query
}
buildQuery(formData);

Type guard

const hasBothSpatial = (fd: DeckArcFormData): boolean =>
  Boolean(fd.start_spatial?.type) && Boolean(fd.end_spatial?.type);

Try / catch

try { buildQuery(formData); } catch (e) { if (e.message.includes('Start and end spatial')) showExploreWarning(e.message); else throw e; }

Prevention

When it happens

Trigger: Building the query for a Deck.gl Arc chart whose 'Start latitude/longitude' or 'End latitude/longitude' spatial control is unset, or whose saved form params (imported dashboard, API-created chart) omit start_spatial/end_spatial.

Common situations: Half-configured arc charts saved before both endpoints were chosen; dashboards imported from another instance where spatial controls did not serialize; dataset column renames leaving the spatial config empty after re-binding.

Related errors


AI-assisted analysis of apache/superset@f4587218dd (2026-08-14). Data as JSON: /api/errors/abd100527a00a030. Report an issue: GitHub.