Geospatial Neighborhood Analysis in Python
geosnap is an open-source, Python3 package for exploring, modeling, and visualizing neighborhood dynamics. Although neighborhoods are critically important for human development and public policy, they present a variety of novel challenges for urban researchers:
- there is no formally accepted scientific definition of "neighborhood"
- neighborhoods evolve through both space and time
- many different physical and social data can characterize a neighborhood
- primitive spatial units change boundaries over time
geosnap aims to help fill these gaps. It provides a suite of tools for creating socio-spatial datasets, harmonizing those datasets into consistent set of time-static boundaries, and modeling neighborhood change using classic and spatial statistical methods.
Since there is no accepted definition of "neighborhood," most quantitative studies involving neighborhood effects or neighborhood dynamics use census data and their administrative boundaries to define spatial areas that reasonably approximate neighborhoods. In the U.S., this typically means using census tracts, since they have a relatively small spatial footprint and a wide variety of variables are tabulated at that scale. For this reason, geosnap's first release is targeted at researchers working with US Census tract data. This allows the software to make available a wide variety of data and commonly-used variables with minimal interaction from the end-user. Later releases will expand functionality to other geographies and data sources.
Ingest, create, and manipulate space-time datasets
Analyze and model neighborhood dynamics
Harmonize neighborhood boundaries into consistent, stable units using spatial statistical methods
Visualize neighborhood dynamics
The recommended method for installing geosnap is with anaconda. To get started with the development version, clone this repository or download it manually then
cd into the directory and run the following commands:
$ conda env create -f environment.yml $ source activate geosnap $ python setup.py develop
This will download the appropriate dependencies and install geosnap in its own conda environment.
The quickest way to get started analyzing the space-time dynamics of neighborhoods is by importing a longitudinal dataset that has already been harmonized into consistent boundaries. We recommend the (free) Longitudinal Tract Database to get started.
You can import LTDB using the instructions in this example notebook. Note: you only need to import the database once and it will be stored inside
geosnap for repeated queries
Once the LTDB data is installed, check out the other notebooks in the example directory, then start
ipython or a Jupyter Notebook and hack away
geosnap development is hosted on github
To search for or report bugs, please see geosnap's issues
See the file "LICENSE.txt" for information on the history of this software, terms & conditions for usage, and a DISCLAIMER OF ALL WARRANTIES.
This project is supported by NSF Award #1733705, Neighborhoods in Space-Time Contexts