Tools for Spatial Analytics Under Windows
Python supports a wide variety of Free Open Source Software (FOSS) packages
that include both specialized GIS and
However, for this project we are chiefly interested in FOSS software tools that run under the Windows OS
and include the following topics that support advanced advanced spatial analytics algorithm development:
- NumPyAdds a fast and sophisticated
array facility to the Python language
- SciPy (pronounced "Sigh Pie") is open-source software for
mathematics, science, and engineering
Quick introduction to Numpy and Scipy
- CVXOPT convex optimization with
efficient Python classes for dense and sparse matrices
Package for sparse matrixs
Pure Python translations of selected algorithms from Numerical Recipes
by Press et. al.. Includes elementary functions, polynomial operations, 1-D zero finding,
Simpson's rule quadrature, vector operations, and FFT-based operations.(Coming Soon?)
- sympy :Python library for symbolic mathematics
- SAGE: a viable free open source alternative to
Magma, Maple, Mathematica, and Matlab (runs under Sun VirtualBox
- •PyIMSL :Python wrappers to the algorithms in the IMSL C Library – free for non-commercial use
- Mlabwrap: high-level python to Matlab bridge that lets
Matlab look like a normal python library
(e.g. makes it easier to gradually replace
legacy matlab code with python code)
a fast numerical array expression evaluator
a package for discrete wavelet transforms
- Ndimage :
any-dimensional image processing
includes packages to support scientific and mathematical calculations,
beyond the capabilities offered by SciPy(can install
with "easy_install SciMath") .
is a library of Algebraic Multigrid (AMG) solvers with
a convenient Python interface.
- Pymorph is s collection of
Morphological Image Processing tools written in Python and the Numeric package.
It provides tools to reproduce most examples of the book:
Dougherty and Lotufo,
Hands-on Morphological Image Processing,
SPIE, 2003, ISSN=0-8194-4720-X
an open source cross-platform library of spatial analysis functions
The Python Shapefile Library (PSL) provides
read and write support for the ESRI Shapefile format.
- NetworkX is a Python package for the creation,
manipulation, and study of the structure, dynamics, and functions of complex networks(works with easy_install)
- Shapely is a Python package for programming
(e.g. buffers, intersections, cancroids, convex hull, etc)
with 2D geospatial geometries. It is based on GEOS..
- GDALa presents a single abstract data model to for
a wide variety of raster formats
The current version of GDAL also comes with the related OGR API provides a similar
capability for access to a variety of vector file formats including
ESRI Shapefiles, S-57, SDTS, PostGIS, Oracle Spatial, and Mapinfo mid/mif and TAB formats.
Module for plotting data on maps with matplotlib
Graph Visualization Software
The vectorformats library is designed to make it easy to serialize
content from any source to any source within Python.
Think of it as a “poor man’s OGR” – a pure Python implementation
of transforming features to and from various formats (largely XML based).
Pyrex generated python interface to the
that performs cartographic transformations and geodetic computations.
Cartographic Projections Library
The main users manual for PROJ
page on the GeoTIFF site that includes information on how to describe many common
projections used with PROJ.4 command arguments
- Documentation: PROJ.4 - General Parameters
A Geocoding Toolbox for Python
- Rtree: Spatial indexing to speed up
the search for objects that intersect with a spatial bounding box.
simple, fast, extensible JSON encoder/decoder
APython wrapper for Google Earth COM API
- Documentation: 101 level discussion of map errors
Graphics and GUI development
- wxPython is a GUI toolkit for the Python programming language.
It allows Python programmers to create programs with a robust, highly
functional graphical user interface, simply and easily.
is an other GUI toolkit for Trolltech's Qt application framework and runs on all platforms supported by Qt
- Pygame is a set of Python modules designed for writing games.
Pygame adds functionality on top of the excellent SDL library.
This allows you to create fully featured games and multimedia programs in the python language.
- VTK - Visualization Toolkit is an open source, freely available software system for 3D
computer graphics, image processing, and visualization.
VTK supports a wide variety of visualization algorithms
including scalar, vector, tensor, texture, and volumetric methods;
and advanced modeling techniques such as implicit modeling, polygon reduction,
mesh smoothing, cutting, contouring, and Delaunay triangulation.
VTK consists of a C++ class library, and
several interpreted interface layers including Tcl/Tk, Java, and Python
MayaVi1 is a free, easy to use scientific data visualizer built under VTK
A free interactive parallel visualization and graphical analysis tool for viewing scientific data
- Matplotlib is a pure python plotting
library with the goal of making publication quality plots using a syntax familiar to matlab users.
The library uses numpy for handling large data sets and supports a variety of output backends
- pyglet provides an object-oriented programming
interface for developing games and other visually-rich applications..Pyglet provides an interface to OpenGL and GLU.
The interface is used by all of pyglet's higher-level API's, so that all rendering is done efficiently
by the graphics card, rather than the operating system. You can access this interface directly;
using it is much like using OpenGL from C.
- PIL - Python Imaging Library provides basic image handling
and processing for various image types including jpg, gif, tiff, and bmp. Reads and writes graphics files.
Allows pixel-by-pixel data access and has functions for cropping and transposing an image. Also has various
Python plotting application toolkit that facilitates writing plotting applications
at all levels of complexity, from simple scripts with hard-coded data to
large plotting programs with complex data interrelationships and a
multitude of interactive tools.
OpenCV: Python Reference for real time computer vision library
PyOpenGL is the cross platform Python binding to OpenGL and related APIs
- VPython: "3D Programming of Ordinary Mortals"
- PyGTK: "is a wrapper for the GTK+ library"
- RPy is a very simple, yet robust,
Python interface to the R Programming Language.
It can manage all kinds of R objects and can
execute arbitrary R functions (including the graphic functions).
- Documemtation: GDAL Bindings into R
- PyMC, Bayesian statistics and Markov chain Monte Carlo (MCMC),
support for Python
combines several python statistics modules into a single package
Pycluster clustering software
is a package that allows grouping a list of arbitrary objects into
related groups (clusters). Simply give it a list of data and a function to
determine the similarity between two items and you're done
- High Performance Geostatistics Library
graphical environment for multivariate
analysis incorporating a number of categorical and
quanitative multivariate modelling routines
(MultiVariate Pattern Analysis (MVPA) in Python)
is a Python package intended to ease statistical learning analyses
of large datasets. It offers an extensible framework
with a high-level interface to a broad range of algorithms
for classification, regression, feature selection,
data import and export.
- Python Database API Specification v2.0:
This API has been defined to encourage similarity between the Python modules that are used to access databases.
- buzhug Very cool pure-Python database engine, using a non-SQL syntax
that Python programmers should find very intuitive
is a pure Python SQL database written to remove the dependence of the
Python Web Modules on 3rd party drivers for non-Python databases
like MySQL but designed to be a useful database in its own right
- PostGIS is an extension to the
PostgreSQL object-relational database system that
allows GIS (Geographic Information System) objects to be stored in the database.
PostGIS does for PostgreSQL what Oracle Spatial does for Oracle and
ArcSDE does for Microsoft SQL Server/Oracle
- PostGIS Windows Support
- PostgreSQL Install:
Windows installer for PostgreSQL includes the PostgreSQL server,
pgAdmin III; a graphical tool for managing and developing your databases, and StackBuilder;
a package manager that can be used to download and install additional PostgreSQL applications and drivers
- Pymssql: This module provides access to Microsoft SQL
Servers from Python scripts
- MySQLdb: Writing MySQL Scripts with Python
DB-API (i.e. designed to be portable across databases)
- MySQL-Python: MySQL (i.e. not so portable across all databases)
support for Python
- HDF5 is a data model, library, and file format
for storing and managing data
- PyHDF: a Python interface to the NCSA HDF4 library
- MySQL: popular open source database
Python module that allows you to use ODBC to connect to almost any database
from Windows, Linux, OS/X, and more
- SQLAlchemy: Python SQL toolkit and Object Relational Mapper that gives
application developers the full power and flexibility of SQL.
This module can read and write files in the netCDF 4 format, and can create files
that are readable by HDF5 clients.
- Decision Analysis is an easily-extensible expert system to help
users make decisions of all types.
is a fast and easy-to-use feed-forward neural network training
solution for python
a knowledge-based inference engine (expert system) written
in 100% python
an extension module that embeds full CLIPS
functionality in Python applications.
This means that you can provide Python with a strong, reliable,
widely used and well documented inference engine
- NLTK — the Natural Language Toolkit —
is a suite of open source Python modules, data and documentation
for research and development in natural language processing.
A Python interface to the Wordnet (2.0 version ONLY)database of word
meanings and lexical relationships.
modular Machine Learning Library for Python
multivariate pattern analysis
- comtypes -
pure Python COM package, based on the ctypes FFI library.comtypes allows to define,
call, and implement custom COM interfaces in pure Python.
- processing is a package
for the Python language which supports the spawning
of processes using the API of the standard library's threading module.
- Pyro is short for PYthon Remote Objects.
It is an advanced and powerful Distributed Object Technology system written
entirely in Python,
Download Python for Other Platforms
Python command line parser
Software construction tool (a python based alternative to "make")
An architecture that enables developers to leverage the massively
parallel processing power of NVIDIA GPUs, delivering the performance of
NVIDIA’s graphics processor technology
to general purpose GPU Computing.
- Twisted is an event-driven networking engine written
A standard for parallel programming on heterogeneous devices
including CPUs, GPUs, and others processors
Lightweight in-process concurrent programming
language for writing Python C extensions
eady access to cloud-computing platform ($ for processing on the cloud)
Python Development Tools
Unofficial Windows Binaries for Python Extension Packages
- Python(x,y) Python Distribution Scientific and engineering
development software for numerical computations, data analysis and data visualization.
- Enthought Python Distribution (EPD),
for a monolithic installation that includes Python, NumPy, SciPy, Matplotlib, IPython, and many other open
source python packages including the Enthought Tool Suite (ETS).
Tools to build, install, upgrade, and uninstall Python packages
Documentation: Easy Install is a python module (easy_install)
bundled with setuptools that lets you automatically
download, build, install, and manage Python packages
- Sphinx: Python documentation generator
- argparse: Python command line parser
- Mercurial : Source control management tool
- IPython: An advanced interactive computing environment
Building Python extensions for Windows with only free tools
- SWIG: Building Python Extensions
Microsoft Common Language Runtime version of Python
- Jython: an implementation of Python for the Java Virtual Machine
- Python debuggers
- py2exe: converts Python scripts into executable Windows programs
A Python extension module which can SOMETIMES greatly speed up the execution of any Python code
- pywin32: Python for Windows extensions
Unofficial Windows Binaries for Python Extension Packages
Stand alone packages (any platform and language)
- GRASS (Geographic Resources Analysis Support System)
is a large open-source GIS program
System for Automated Geocentric Analyses
- is a hybrid GIS software.
- Google Earthprogram for vizualising
imagery of the Earth, and allows you to add your own geospatial data.
Interactive Geographic Data Viewer
GIS for Windows
- Quantum GIS (QGIS)
user friendly Open Source Geographic Information System.
QGIS supports vector, raster, and database formats. QGIS lets you browse and
create map data on your computer.
- uDig is a JAVA open source desktop application framework
- JUMP Unified Mapping Platform (JUMP) project is a suite of JAVA
free, open-source applications that provide an extensible API and graphic user interface
(GUI) for viewing and manipulating spatial data-sets.
commerical integrated GIS and Image Processing software solution providing
over 250 modules for the analysis and display of digital spatial information
- OpenEV is a (C) software library and
application for viewing and analyzing raster and vector geospatial data.
Fragstats: spatial pattern analysis program for categorical maps.
provides advanced geo-spatial image processing for remote sensing,
photogrammetry, and Geographic Information Systems.
- S-GEMS 2.0:
Software for 3D geostatistical modeling
- Opticks: is an open source
remote sensing application and development framework
Spectral Python (SPy) is a python module for processing hyperspectral image (HSI) data.
collection of machine learning algorithms for data mining tasks. Weka contains tools
for data pre-processing, classification, regression, clustering, association rules,
and visualization. It is also well-suited for developing new machine learning schemes.
(limited access from
Python via Jyhon)
MapServer for Windows: The purpose of this package is to allow all levels of
MapServer users to quickly install a working environment for MapServer development
on Windows. It is also an environment for packaging and distributing MapServer
popular graphing utility
- Py-OpenDX :
Python Bindings for OpenDX
- UNIX tools for WINDOWS
- MinGW, a contraction of "Minimalist GNU for Windows",
is a port of the GNU Compiler Collection (GCC), and GNU Binutils, for use in the development of
native Microsoft Windows applications. Often needed(e.g. C++ compiler) to
complete installation of new Pyhton packages
- Cygwin: a Linux-like environment for Windows
- PyNGL :
visualize scientific data, with an emphasis on high quality 2D visualizations.
(runs under Cygwin/X)
- VirtualBox: powerful x86 and AMD64/Intel64 virtualization product
- Uwin:The UWIN package allows UNIX applications to
be built and run on Windows with few, if any, changes necessary
- Documentation: Converting between Unix and Windows text files
- Documentation:Microsoft Windows Services for UNIX
- Documentation:MKS Toolkit for Windows / UNIX interoperability
- Documentation-UnxUtils:ports of common GNU utilities to native Win32
- Documentation:Unix vs. Windows
- Documentation:Cultural differences
A Win32 Python Extension for Accessing Video Devices
A a python library that aims to provide easy USB devices access.
- PyMedia: A Python module for wav, mp3, ogg, avi, divx, dvd, cdda etc files
manipulations. It allows you to parse, demutiplex, multiplex, decode and encode all supported formats.
- Gmsh:An open-source three-dimensional nite element grid generator
with a build-in CAD engine and post-processor. Its design goal is to provide a fast, light and user-friendly
meshing tool with parametric input and advanced visualization capabilities. It has a Python template for solvers.
- FiPy: A Finite-Volume PDE Solver for Python
- sfepy: Full featured finite element library
written in Python and C(new toWindows and not fully tested here)
Fast Finite Elements for Partial Differential Equations
- PyMT is a python module for developing multi-touch enabled
media rich applications
Like Unix Fortran is ancient by computer science standards. However, recent versions of FORTRAN include very modern abilities and many scientists prefer it for both its powerful number crunching abilities and its many robust libraries that have been developed over time. A particularly powerful attraction is FORTRAN’s strong parallel programming capabilities. When FORTRAN’s speed is
linked with Pythons flexibility (e.g. GUI development, data visualization, text manipulation, etc.) you can get the best of both worlds.
- Absoft: Fortran commercial package with integrated OpenMP
- FTN95: Fortran ommercial package with strong support for Microsoft .NET
- Viusal Fortran Commerical package from Intel. Provides highly optimized performance libraries for creating multithreaded applications.
- OpenMP: Supports
shared-memory parallel programming in Fortran
Parallel Programming in Fortran 95
Free Open source Fortran 95 compiler (not known for its support of OpenMP)
- GCC: GNU Compiler Collection that includes Fortran 77
Another Open source Fortran 95 compiler that supports OpenMP
Project developing an implementation of OpenMP for Fortran 95 compilers
- Documentation: The GNU Fortran Compiler
- Documentation: g95 versus gfortran
- Documentation: Training Materials for OpenMP
- F2PY: F2PY is a tool that provides an easy connection between Python and Fortran languages. F2PY is part of NumPy.
- Documentation: Parallel Programming with MPI
- Book: Parallel Programming with MPI
The Message Passing Interface (MPI) standard
- Documentation: Extensive list of Fortran resources