[[TOC]] = GeoDjango Background = The content herein is a loosely structured collection of notes and links that we have found useful, not necessarily what will be supported in the future. Feel free to add in your own notes, links, and comments. == What's GIS? == * Series [http://cfis.savagexi.com/articles/2006/04/20/on-coordinate-systems 1], [http://cfis.savagexi.com/articles/2006/04/23/geocentric-coordinate-systems 2], [http://cfis.savagexi.com/articles/2006/04/29/geodetic-coordinate-systems 3], [http://cfis.savagexi.com/articles/2006/04/30/projections 4], [http://cfis.savagexi.com/articles/2006/05/02/coordinate-systems-putting-everything-together 5], [http://cfis.savagexi.com/articles/2006/05/03/google-maps-deconstructed 6], [http://cfis.savagexi.com/articles/2006/06/30/mouse-coordinates-to-lat-long 7] of blog posts by Charles Savage giving intro to GIS; choice quote from [http://cfis.savagexi.com/articles/2006/04/20/on-coordinate-systems#comments an early post]: "If you feel like ending a conversation with a developer then simply bring up the topic of character encodings ... [o]r ... coordinate systems. ... So in the spirit of Tim Bray's and Joel Spolsky's wonderful writeups of character encodings, I thought I'd put together a basic survival guide to coordinate systems over my next few posts and then tie it back to Google Maps." * More on [http://en.wikipedia.org/wiki/Map_projection map projections], including why people can't agree on just one (utf-8). * [http://en.wikipedia.org/wiki/Geodesy geodesy] the field of science for this stuff. == Useful Code == * [http://postgis.refractions.net/ PostGIS], the [http://www.opengis.org/docs/99-049.pdf OpenGIS SQL Types (pdf)] implementation for Postgresql * [http://geos.refractions.net/ GEOS], low-level C++ port of [http://www.jump-project.org/project.php?PID=JTS Jave Topology Suite], used by PostGIS * [http://zcologia.com/news/14/python-geos-module/ PyGEOS, now outdated due to PCL, below], and shedloads more stuff on "python, geospatial, and the web" * [http://gispython.org/ Python Cartographic Library] - [http://trac.gispython.org/projects/PCL actively maintained], huge GIS package, GPL. * There are direct SWIG Python bindings in GEOS 3.0.0RC1 and above. In other words, the entire GEOS API may be called directly from Python. * [http://www.initd.org/tracker/psycopg/wiki/GeoTypes GeoTypes] is a type (and conversion) library for PostGIS via psycopg. * [http://exogen.case.edu/projects/geopy/ Geopy] * Calculates distances using (very accurate) [http://www.movable-type.co.uk/scripts/LatLongVincenty.html Vincenty], and uses the [http://en.wikipedia.org/wiki/World_Geodetic_System WGS 84] datum by default. * Has utility functions for unit of measurement (UOM) conversions (e.g. meters -> kilometers, kilometers -> miles, etc.) * Excellent GeoCoding capabilites. Has interfaces for Google, Yahoo, Microsoft Live, MediaWiki, and [http://www.geocoder.us/ Geocoder.us]. * [http://www.gdal.org/ GDAL/OGR], a library for fiddling with raster geo images. * Has a Python interface. A SWIG interface is in development, but not yet stable (no access to ''full'' API). * [http://shapelib.maptools.org/ shapelib] and [http://www.gdal.org/ogr/ogr2ogr.html ogr2ogr] are useful for ESRI shapefile manipulations. [http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf ESRI shapefiles] are a lingua frana GIS format. * [http://search.cpan.org/~sderle/Geo-Coder-US/ Geo::Coder::US] An excellent ''Perl'' library for GeoCoding that powers [http://www.geocoder.us/ Geocoder.us]. Users can create their own Geographic databases using the Census Bureau's TIGER/Line data (see below). * [https://svn.greenpeace.org/projects/custard/browser/doc/geodata GeoRosetta], CC-BY-SA licensed, quality-controlled, collection of geocoding data. Not yet released to public(?). * [http://mapserver.gis.umn.edu/ MapServer]: University of Minnesota (UMN) "open source development environment for building spatially-enabled internet applications." * [http://www.mapnik.org/ Mapnik]: C++ and Python toolkit for developing mapping applications. Claimed benefits over MapServer: "It uses the AGG library and offers world class anti-aliasing rendering with subpixel accuracy for geographic data. It is written from scratch in modern C++ and doesn't suffer from design decisions made a decade ago." ''See'' [http://www.mapnik.org/faq/ MapNik FAQ]. * [http://code.google.com/p/pyproj/ pyproj]: Pyrex generated python interface to PROJ.4 library. * Ruby on Rails * [http://rubyforge.org/projects/georuby/ GeoRuby]: Interface for PostGIS and MySQL spatial extensions, but not sure about spatial querying. * [http://www.ivygis.org/ IvyGIS]: Google-maps type displays with RoR and UMN's MapServer * [http://thepochisuperstarmegashow.com/ProjectsDoc/spatialadapter-doc/index.html Spatial Adapter for Rails]: A plugin for Rails which manages the MySql Spatial and PostGIS geometric columns in a transparent way (that is like the other base data type columns). This might have some useful techniques for when we try to support other spatial extensions other than PostGIS. * [http://cartographer.rubyforge.org/ Cartographer] GMaps plugin == Useful Data == * [http://www.census.gov/geo/www/tiger/index.html TIGER/Line Shapefiles] "are spatial extracts from the US Census Bureau's MAF/TIGER database, containing features such as roads, railroads, rivers, as well as legal and statistical geographic areas." This data is useful in creating your own geocoding database service. Currently 2009 is the latest release.