Skip to content

Geocode address CSVs on import #1526

Description

@giswqs

Summary

Let the delimited-text import path geocode a CSV that has addresses instead of coordinates, turning it into a point layer on load.

Why

Importing a CSV today requires longitude and latitude columns (or projected easting/northing with a source CRS, added in v2.3). A spreadsheet of street addresses — far and away the most common form of tabular data non-GIS users have — cannot become a map layer in one step.

The pieces are all present and shipped:

  • A multi-provider geocoding abstraction with forward, batch, and reverse geocoding tools.
  • CSV-without-coordinates already loads as a standalone attribute table (v2.0), so the data lands in the app; it just has nowhere to go from there.

So the user's path today is: import the CSV as a table, find the batch geocoding tool, run it against the table, then add the result. That is three steps and a tool nobody knows exists, for what should be a checkbox on the import dialog.

Proposal

In the delimited-text Add Data panel, alongside the existing "coordinate columns" and "projected easting/northing" modes, add an Addresses mode:

  • Pick the address column, or pick several columns to concatenate (street / city / state / postal code) — a very common shape.
  • Optional country hint to improve match rates.
  • Provider picked from the existing geocoding provider abstraction, defaulting to the configured one.
  • Progress with a running count while batch geocoding, and cancellation.

Results handling

  • Write the match result back onto each feature: geocode_score/confidence, matched address, and provider, so quality is inspectable in the attribute table.
  • Rows that fail to match are kept, flagged, and reported in a short summary ("428 of 450 geocoded"). They should not be silently dropped — a missing row on a map is much worse than a visible failure.
  • Offer to add the failures as a filtered view so they can be fixed and re-run.

Scope notes

  • Respect provider rate limits and terms; batch geocoding a 50k-row CSV against a public endpoint should warn before starting.
  • Cache results within a session so re-importing the same file does not re-query.

Effort

Small — connecting two shipped subsystems in the dialog that already has both halves.

Metadata

Metadata

Assignees

Labels

enhancement (small)Minor feature, small UI tweak, or text adjustment

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions