airtable-geojson

Convert an Airtable table containing a Map App (aka Map Block) geocoded field into a GeoJSON FeatureCollection

Usage no npm install needed!

<script type="module">
  import airtableGeojson from 'https://cdn.skypack.dev/airtable-geojson';
</script>

README

airtable-geojson

Convert Airtable records into a GeoJSON FeatureCollection.

Given an Airtable configured with the Map App add-on (formerly the Map Block) this library can take the Airtable record result set (as returned by airtable.js) and transform it into a GeoJSON FeatureCollection suitable for mapping or other geospatial applications.

Basic usage

import Airtable from "airtable"
import { createFeatureCollection } from "airtable-geojson"

const apiKey = "secret"
const baseId = "app123xyz"

export const airtable = new Airtable({ apiKey })
export const myBase = airtable.base(baseId)

const records = await myBase("My table")
  .select({
    fields: ["Name", "Address", "Geocoder cache"],
  })
  .all()

const options = {
  geocodedFieldName: "Geocoder cache",
}
const [features, errors] = createFeatureCollection(records, options)

This would result in features looking something like:

{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "id": "rec1",
      "geometry": {
        "type": "Point",
        "coordinates": [-73.932376, 40.772817]
      },
      "properties": {
        "Name": "Foo",
        "Address": "8-01 Astoria Blvd"
      }
    },
    {
      "type": "Feature",
      "id": "rec2",
      "geometry": {
        "type": "Point",
        "coordinates": [-73.914695, 40.7787318]
      },
      "properties": {
        "Name": "Bar",
        "Address": "24-20 Ditmars Blvd"
      }
    }
  ]
}

And any records whose geodata could not be decoded would be returned in the errors object:

{
  missingGeocodes: [
    // Airtable records here
  ],

  invalidGeocodes: [
    // Airtable records here
  ]
}