Skip to main content

Geomancer Logo

PyPI Build Status Read the Docs Coveralls github License: MIT

Geomancer is a geospatial feature engineering library. It leverages geospatial data such as OpenStreetMap (OSM) alongside a data warehouse like BigQuery. You can use this to create, share, and iterate geospatial features for your downstream tasks (analysis, modelling, visualization, etc.).

Features

Geomancer can perform geospatial feature engineering for all types of vector data (i.e. points, lines, polygons).

  • Feature primitives for geospatial feature engineering
  • Ability to switch out data warehouses (BigQuery, SQLite, PostgreSQL (In Progress))
  • Compile and share your features using our SpellBook

Setup and Installation

Installing the library

Geomancer can be installed using pip.

$ pip install geomancer

This will install all dependencies for every data-warehouse we support. If you wish to do this only for a specific warehouse, then you can add an identifier:

$ pip install geomancer[bq] # For BigQuery
$ pip install geomancer[sqlite] # For SQLite
$ pip install geomancer[psql] # For PostgreSQL

Alternatively, you can also clone the repository then run install.

$ git clone https://github.com/thinkingmachines/geomancer.git
$ cd geomancer
$ python setup.py install

Setting up your data warehouse

Geomancer is powered by a geospatial data warehouse: we highly-recommend using BigQuery as your data warehouse and Geofabrik's OSM catalog as your source of Points and Lines of interest.

Geomancer architecture

You can see the set-up instructions in this link

Basic Usage

All of the feature engineering functions in Geomancer are called "spells". For example, you want to get the distance to the nearest supermarket for each point.

from geomancer.spells import DistanceToNearest

# Load your dataset in a pandas dataframe
# df = load_dataset()

dist_spell = DistanceToNearest(
    "supermarket",
    source_table="ph_osm.gis_osm_pois_free_1",
    feature_name="dist_supermarket",
    dburl="bigquery://project-name",
).cast(df)

You can specify the type of filter using the format {column}:{filter}. By default, the column value is fclass. For example, if you wish to look for roads on a bridge, then pass bridge:T:

from geomancer.spells import DistanceToNearest

# Load the dataset in a pandas dataframe
# df = load_dataset()

dist_spell = DistanceToNearest(
    "bridge:T",
    source_table="ph_osm.gis_osm_roads_free_1",
    feature_name="dist_road_bridges",
    dburl="bigquery://project-name",
).cast(df)

Compose multiple spells into a "spell book" which you can export as a JSON file.

from geomancer.spells import DistanceToNearest
from geomancer.spellbook import SpellBook

spellbook = SpellBook([
    DistanceToNearest(
        "supermarket",
        source_table="ph_osm.gis_osm_pois_free_1",
        feature_name="dist_supermarket",
        dburl="bigquery://project-name",
    ),
    DistanceToNearest(
        "embassy",
        source_table="ph_osm.gis_osm_pois_free_1",
        feature_name="dist_embassy",
        dburl="bigquery://project-name",
    ),
])
spellbook.to_json("dist_supermarket_and_embassy.json")

You can share the generated file so other people can re-use your feature extractions with their own datasets.

from geomancer.spellbook import SpellBook

# Load the dataset in a pandas dataframe
# df = load_dataset()

spellbook = SpellBook.read_json("dist_supermarket_and_embassy.json")
dist_supermarket_and_embassy = spellbook.cast(df)

Contributing

This project is open for contributors! Contibutions can come in the form of feature requests, bug fixes, documentation, tutorials and the like! We highly recommend to file an Issue first before submitting a Pull Request.

Simply fork this repository and make a Pull Request! We'd definitely appreciate:

  • Implementation of new features
  • Bug Reports
  • Documentation
  • Testing

Also, we have a CONTRIBUTING and a CODE_OF_CONDUCT, so please check that one out!

License

MIT License © 2019, Thinking Machines Data Science

Metadata

Release files for geomancer 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for geomancer 1.1.0
File Size Uploaded
geomancer-1.1.0.tar.gz 29.4 kB Details

Release files / geomancer-1.1.0.tar.gz

Download URL geomancer-1.1.0.tar.gz
Size 29.4 kB
Tags Source
SHA-256 checksum
How to use checksums
6567f33e35afa5ff16163eb77378a7e8937cbd4af8f8a9e40626736a8edaa033
BLAKE2b-256 checksum
How to use checksums
9e00a73db75c0cf44991db7d2f6b0223c52f719a9e79b5901bb64d7d2fc31ced
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.8

Release history Release notifications | RSS feed

This release

1.1.0 This release

1 release file

1.0.1

1 release file

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page