Skip to main content

Import geographic and spatial data from files into a SpatiaLite DB

Project description

geometry-to-spatialite

Build Status Coverage Status PyPI Version License Python Support Code style: black

Import geographic and spatial data from files into a SpatiaLite DB.

This project is primarily useful for browsing and publishing geographic and spatial data with datasette and datasette-leaflet-geojson. It is inspired by csvs-to-sqlite and provides a similar interface.

Setup

pip install geometry-to-spatialite

You'll need python >=3.6 and the SpatiaLite module for SQLite.

Install SpatiaLite on Debian/Ubuntu

apt install spatialite-bin libsqlite3-mod-spatialite

Install SpatiaLite on Mac

brew update
brew install spatialite-tools

Usage

On the console

Geometry-to-spatialite installs two commands: shapefile-to-spatialite and geojson-to-spatialite. Both provide the same arguments.

Basic usage

shapefile-to-spatialite myfile.shp mydatabase.db

This will create a new SQLite database called mydatabase.db containing a single table, myfile

You can provide multiple files:

shapefile-to-spatialite one.shp two.shp bundle.db

The bundle.db database will contain two tables, one and two.

This means you can use wildcards:

shapefile-to-spatialite ~/Downloads/*.shp mydownloads.db

If you pass a path to one or more directories, the script will recursively search those directories for files and create tables for each one:

shapefile-to-spatialite ~/path/to/directory all-my-shapefiles.db

For more help on usage and arguments, run shapefile-to-spatialite --help or geojson-to-spatialite --help

As a library

from shapefile_to_spatialite import (
    geojson_to_spatialite,
    shp_to_spatialite,
    DataImportError
)


# Use the defaults
try:
    geojson_to_spatialite('mydatabase.db', 'myfile.geojson')
except DataImportError:
    raise


# With optional params
# geojson_to_spatialite() and shp_to_spatialite() support the same argument list
try:
    geojson_to_spatialite(
        'mydatabase.db',
        'myfile.geojson',
        table_name='custom',  # set a custom table name (defaults to the filename)
        srid=3857,            # specify a custom SRID (default is 4326)
        pk='id',              # field (str) or fields (list/tuple) to use as a
                              # primary key (default is no primary key)
        write_mode='append',  # pass 'replace' or 'append' to overwrite
                              # or append to an existing table

        # In most cases the spatialite extension will be automatically detected and loaded
        # If not you can manully pass a path to the .so .dylib or .dll file
        spatialite_extension='path/to/mod_spatialite.so'
    )
except DataImportError:
    raise

Troubleshooting

Failed to load the SpatiaLite extension

Geometry-to-spatialite requires SpatiaLite to be installed. See Setup. Geometry-to-spatialite will attempt to automatically load the extension. If you've installed the extension and you're still seeing this error, you can use the --spatialite-extension flag (using on the console) or spatialite_extension (using as a library) to manually specify the path to the SpatiaLite extension.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

geometry-to-spatialite-0.2.0.tar.gz (8.6 kB view hashes)

Uploaded Source

Built Distribution

geometry_to_spatialite-0.2.0-py3-none-any.whl (9.7 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page