Python
Tools for Spatial Analytics Under Windows
Python supports a wide variety of Free Open Source Software (FOSS) packages
that include both specialized GIS and
scientific software.
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:
Numerical
- NumPyAdds a fast and sophisticated
array facility to the Python language
- SciPy (pronounced "Sigh Pie") is open-source software for
mathematics, science, and engineering
- Documentation:
Quick introduction to Numpy and Scipy
- CVXOPT convex optimization with
efficient Python classes for dense and sparse matrices
- Pysparse:
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
on Windows)
- •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)
- Numexpr:
a fast numerical array expression evaluator
- PyWavelets:
a package for discrete wavelet transforms
- Ndimage :
any-dimensional image processing
- SciMath:
includes packages to support scientific and mathematical calculations,
beyond the capabilities offered by SciPy(can install
with "easy_install SciMath") .
- PyAMG
is a library of Algebraic Multigrid (AMG) solvers with
a convenient Python interface.
Spatial Analytics
- 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
- PySAL:
an open source cross-platform library of spatial analysis functions
- PSL:
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.
- Basemap:
Module for plotting data on maps with matplotlib
- Graphviz:
Graph Visualization Software
- Vectorformats:
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).
- pyproj:
Pyrex generated python interface to the
PROJ.4 library
that performs cartographic transformations and geodetic computations.
- Documentation:
Cartographic Projections Library
- Documentation:
The main users manual for PROJ
- Documentation:
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
- Geopy:
A Geocoding Toolbox for Python
- Rtree: Spatial indexing to speed up
the search for objects that intersect with a spatial bounding box.
- Simplejson:
simple, fast, extensible JSON encoder/decoder
-
pygoogleearth:
APython wrapper for Google Earth COM API
- Documentation:
- 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.
- PyQt
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
- Mayavi:
MayaVi1 is a free, easy to use scientific data visualizer built under VTK
- Vislt:
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
filters built-in
- Chaco
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:
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"
Statistics
- 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
- python-statlib
combines several python statistics modules into a single package
-
Pycluster clustering software
-
python-cluster
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
- HPGL
- High Performance Geostatistics Library
- PyChem:
graphical environment for multivariate
analysis incorporating a number of categorical and
quanitative multivariate modelling routines
- PyMVPA
(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.
Data Base
- 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
- SnakeSQL
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
- Pyodbc:
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.
- netCDF:
This module can read and write files in the netCDF 4 format, and can create files
that are readable by HDF5 clients.
Artificial Intelligence
- Decision Analysis is an easily-extensible expert system to help
users make decisions of all types.
- ffnet
is a fast and easy-to-use feed-forward neural network training
solution for python
- Pyke:
a knowledge-based inference engine (expert system) written
in 100% python
- PyCLIPS
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.
- PywordNet:
A Python interface to the Wordnet (2.0 version ONLY)database of word
meanings and lexical relationships.
- PyBrain:
modular Machine Learning Library for Python
- PyMVPA:
multivariate pattern analysis
System Development
- 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
- argparse:
Python command line parser
- SCons:
Software construction tool (a python based alternative to "make")
- CUDA:
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
in Python
- OpenCL:
A standard for parallel programming on heterogeneous devices
including CPUs, GPUs, and others processors
- greenlet:
Lightweight in-process concurrent programming
- Cython:
language for writing Python C extensions
- PiCloud:
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).
- Setuptools:
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
- Documentation:
Building Python extensions for Windows with only free tools
- SWIG: Building Python Extensions
- IronPython:
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
- Psyco:
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
- SAGA
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.
- Thuban
Interactive Geographic Data Viewer
- MapWindows:
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.
- IDRISI
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.
- OSSIM
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
- SPy
Spectral Python (SPy) is a python module for processing hyperspectral image (HSI) data.
- Weka:
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
applications
- Gnuplot:
popular graphing utility
- Py-OpenDX :
Python Bindings for OpenDX
General Tools
- 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
- VideoCapture:
A Win32 Python Extension for Accessing Video Devices
- PyUSB:
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)
- Escript/Finley:
Fast Finite Elements for Partial Differential Equations
- PyMT is a python module for developing multi-touch enabled
media rich applications
FORTRAN
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
- Documentation:
Parallel Programming in Fortran 95
- G95:
Free Open source Fortran 95 compiler (not known for its support of OpenMP)
- GCC: GNU Compiler Collection that includes Fortran 77
- gFortran:
Another Open source Fortran 95 compiler that supports OpenMP
- GOMP:
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
- Documentation:
The Message Passing Interface (MPI) standard
- Documentation: Extensive list of Fortran resources
Useful Documentation
Python-ESRI GIS