Strapi plugin logo for Geometry Fields

Geometry Fields

Store and edit geospatial data with PostGIS in a Strapi v5 custom field

thumbnail for Geometry Fields

Geometry Fields plugin for Strapi

Store and edit geospatial data with PostGIS in a Strapi v5 custom field.

The plugin accepts WKT (Well-known text) or GeoJSON from the API and stores it in a PostGIS column in the db table of the content type. You can use multiple geometry fields across different content types. All features are editable and draggable using the hosted Leaflet.Editable and Path.Drag.

This example is a multipolygon with the boundaries of France as WKT.

Geometry Field example

Installation

 # with npm
npm install @gismark/strapi-geometry-fields 
 # with yarn
yarn add @gismark/strapi-geometry-fields 

Configuration

This plugin only runs with PostgreSQL and needs PostGIS to be installed. If you haven't already done so, run this query in Postgres:

CREATE EXTENSION postgis;

For the Leaflet map and the markers to display you must allow Openstreetmap in your middlewares.js. Update "strapi::security" like so:

  {
    name: "strapi::security",
    config: {
      contentSecurityPolicy: {
        useDefaults: true,
        directives: {
          "img-src": ["'self'", "data:", "*.tile.openstreetmap.org"],
          upgradeInsecureRequests: null,
        },
      },
    },
  },

In the settings, choose if the plugin should handle WKT or GeoJSON from the API (default is WKT)

Usage

In the Content Type Builder

  • Create a new or choose an existing collection type
  • In the field selection, select CUSTOM, choose the Geometry field and give it a name (e.g. 'geometry')
  • Finish & Save

In the code

Add this field to the schema.json of your content type

    "geometry": {
      "type": "customField",
      "customField": "plugin::geometry-fields.geometry"
    }
  • An extra column '__geom_geometry' is created in the db table for the content type.

Examples

input as WKT

{ 
  data: {
    geometry: { wkt: "POINT (30 10)" }   
  }
}

input as GeoJSON

{ 
  data: {
    geometry: {
    type: "Point",
    coordinates: [30, 10]
  }   
  }
}

Tested with

  • Strapi 5.15.1
  • PostgreSQL 12.4
  • PostGIS 3.0.2

Geometries

Currently, these geometries as WKT and GeoJSON are supported by the plugin for all CRUD functions:

  • Point and MultiPoint
  • LineString and MultiLineString
  • Polygon and MultiPolygon
  • GeometryCollection containing all of the above

License

MIT

Install now

npm install @gismark/strapi-geometry-fields

STATS

No GitHub star yet22 weekly downloads

Last updated

11 days ago

Strapi Version

5.16.1 and above

Author

github profile image for Markov Media
Markov Media

Useful links

Create your own plugin

Check out the available plugin resources that will help you to develop your plugin or provider and get it listed on the marketplace.