Skip to content

EnvironmentSocietyHealth/CRESHMap

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CRESHMap

CRESHMap is a web application written in python using the flask framework. It uses a postgis database for storing the data. The data map layer is generated using mapserver and displayed using OpenLayers. Static pages are produced from markdown input files kept in the CRESHMap/pages/ directory.

Setup

Install all the requirements into a python virtual environment.

Database Setup

Install postgis, create a database (let's call it cresh) with support for spatial data and create a read-write (cresh) and a read-only user (creshro). The actual user names and database names can be different.

The application uses an environment variable to figure out how to connect to the database:

export DATABASE_URL='postgresql://cresh:PASSWORD@pow/cresh

Loading Data

There are multiple programs involved loading data:

  1. creshmap-load-geographies creates all tables (after dropping them if they already exist). Geographies are loaded following the plan in data.yaml. Compound geographies are aggregated from the smallest ones.
  2. creshmap-define-variables reads the variable definition file variables.yaml and updates the database with any changes. Variable IDs should not change.
  3. creshmap-load-variables reads in data from either and excel or csv file. The mapping of column names to data base names is defined in the config file.

Generating the mapserver map file

The mapserver is controlled via a mapfile. This file is generated using the genmap.py script together with a configuration file. The script also configures the database connection for mapserver. Use the read-only user.

export DATABASE_URL='postgresql://creshro:PASSWORD@pow/cresh?options=-c%20search_path=cresh,public,topology'
creshmap-genmap creshmap.cfg -o /path/to/webdir

Note, that the read-ony user needs access to all database schemas to work correctly. The script will put the mapfile and template into the /path/to/webdir directory. Attributes that can be displayed by the map are configured in the configuration file.

Environment

The following environment variables are needed for the app to run correctly:

Variable name Value
DATABASE_URL See Database Setup
MAPSERVER_URL URL to mapserver. Must end in a ?
SECRET_KEY Long string of random characters
EMAIL_FROM_ADDR The From field in the email that sends the download link
EMAIL_SMTP_SERV Email SMPT server (set to localhost)
PUBLIC_DOMAIN Public facing domain name used in the download email

References