Skip to content
StoryUse case

Turn a CSV with coordinates into a map

A spreadsheet is the most common way spatial data actually arrives: a CSV with one row per place and columns for latitude and longitude, or a single address column. Spatly reads the file, detects the coordinate columns, and plots every row as a point you can style by any other column.

If the file has addresses instead of coordinates, Spatly geocodes them on the way in, up to five hundred rows, and keeps the original text alongside the resolved point. Once the points are on the map, colour them by a category column, size them by a number, cluster dense areas, and add a popup that shows the row. A CSV of stores, sensors, incidents or field visits becomes a map that other people can read and filter. The map below is a real published Spatly surface built from an open CSV of located meteorites.

Publish it as a link or an embed, or drop the layer into a live dashboard so the points refresh when the sheet does.

Live on this page
/embed/BTkUVE8QrU
Scroll to load the live embed
/embed/BTkUVE8QrUlazy

Where meteorites fall, plotted from the NASA CSV of 32,186 located landings. This is a real published Spatly surface, not a screenshot.

HowThree steps in Spatly

How to turn a CSV with coordinates into a map

  1. Step 1

    Upload the CSV

    Drop the file in. Spatly detects the lat/lng columns, or geocodes an address column, and reports how many rows resolved to a point.

  2. Step 2

    Style by a column

    Colour by a category, size by a number, cluster where points pile up, and choose which columns show in the popup.

  3. Step 3

    Publish or embed

    Publish the map or copy the embed snippet. Bind the CSV to a URL to keep the points refreshing on a schedule.

DataFormats it reads

Bring the data you already have

Spatly ingests it into PostGIS, samples the fields for ramps and categories, and serves GeoJSON or vector tiles depending on size. Every source keeps its refresh policy, cache and health.

CSV / XYCSV with addressesGeoJSONREST API
EmbedShips as one line

Embed this exact surface

Paste one script tag into any page. The map mounts where the tag sits, resizes to its content, and needs no build step.

one script tag
<script src="https://spatly.io/embed.js" data-spatly="BTkUVE8QrU" data-height="640"></script>

Posts spatly:ready, spatly:resize, spatly:expand and spatly:select. Embed docs

FAQQuestions

Good to know

Which columns does Spatly use for coordinates?
It auto-detects common latitude and longitude column names. If the file has an address column instead, Spatly geocodes up to five hundred rows on ingest.
Can I keep updating the sheet?
Bind the CSV to a URL and Spatly re-fetches it on an interval, so the map reflects the latest rows without a re-upload.

Turn a CSV with coordinates into a map in Spatly.

Start from a basemap and a file, or open a template and take it apart. Every plan includes Spatly embeds, the REST API and the MCP server.

41.0082°N 28.9784°E · z 11.3 · ⟂ 0°