<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body bgcolor="#ffffff" text="#000000">
Please post any corrections or additions.<br>
<br>
PRESENTATIONS<br>
<br>
"The __future__ module" by Jason Kirtland -- @cheeseinspector,
<a class="moz-txt-link-freetext" href="http://discorporate.us/jek/">http://discorporate.us/jek/</a><br>
<ul>
  <li>The "__future__" module lets you use features of Python
interpreters from within some older Python interpreters.</li>
  <li>Future features include: using the Python 2.6 "with" statement in
Python 2.5, making "print" a function in Python 2.6 like in 3.0, etc.</li>
  <li>Full set of future features and their documentation:
<a class="moz-txt-link-freetext" href="http://docs.python.org/library/__future__.html">http://docs.python.org/library/__future__.html</a></li>
</ul>
<br>
"Geohash" by Michel Pelletier -- <a class="moz-txt-link-freetext" href="http://idealist.org/">http://idealist.org/</a><br>
<ul>
  <li>Geohash is an algorithm for producing a short code ("hash") that
refers to a geographical location. The longer the hash, the more
precise the latitude/longitude encoded in it. A unique property of the
Geohash is that you can remove characters off the right side of the
string and it'll still be valid, although less precise.</li>
  <li>Overview of Geohash: <a class="moz-txt-link-freetext" href="http://en.wikipedia.org/wiki/Geohash">http://en.wikipedia.org/wiki/Geohash</a></li>
  <li>Site for finding Geohashes: <a class="moz-txt-link-freetext" href="http://geohash.org/">http://geohash.org/</a></li>
  <li>Example of how trimming a Geohash string degrades accuracy:
<a class="moz-txt-link-freetext" href="http://mappinghacks.com/2008/05/29/geohash-implemented-in-python/">http://mappinghacks.com/2008/05/29/geohash-implemented-in-python/</a></li>
  <li>Geohash is included in PostGIS</li>
  <li>There are many python implementations, the python-geohash with a
C extension is fast and actively maintained:
<a class="moz-txt-link-freetext" href="http://code.google.com/p/python-geohash/">http://code.google.com/p/python-geohash/</a></li>
</ul>
<br>
"PostGIS" by Webb Sprague<br>
<ul>
  <li>PostGIS adds support for geographic objects to PostgreSQL
databases.</li>
  <li>Overview of PostGIS: <a class="moz-txt-link-freetext" href="http://en.wikipedia.org/wiki/PostGIS">http://en.wikipedia.org/wiki/PostGIS</a></li>
  <li>Site for PostGIS distribution: <a class="moz-txt-link-freetext" href="http://postgis.refractions.net/">http://postgis.refractions.net/</a></li>
  <li>Manual for PostGIS:
<a class="moz-txt-link-freetext" href="http://postgis.refractions.net/documentation/manual-1.4/">http://postgis.refractions.net/documentation/manual-1.4/</a></li>
  <li>In PostGIS, geography is stored as geometric types: "point" has
latitude/longitude, "line" which has two points, "polygon" has a series
of connected lines, etc. These are stored in PostgreSQL as "geometry"
columns.</li>
  <li>You can run database queries to find centroids of a polygon, get
distances between objects, select items within a polygon, select items
a certain distance from a point, get the Geohash for a geometric
object, etc.</li>
  <li>Performance is an important issue because some operations can be
quite expensive. Ways to address this include adding indexes, creating
lower-resolution copies of complex geometric shapes that are quicker to
run queries on, storing pre-calculated data, etc.</li>
</ul>
<br>
"GeoDjango" by Tim Welch -- @t_doubleuu, <a class="moz-txt-link-freetext" href="http://tdubya.net/">http://tdubya.net/</a><br>
<ul>
  <li>These notes provide additional content to the slides that Tim
posted, you should probably read both:
<a class="moz-txt-link-freetext" href="http://tdubya.net/2010/01/13/geodjango-and-friends/">http://tdubya.net/2010/01/13/geodjango-and-friends/</a></li>
  <li>Tim Welch works on open source Python GIS projects like:<br>
  </li>
  <ul>
    <li>Open OceanMap, "a data collection tool used to effectively
collect local expert knowledge in support of marine spatial planning":
<a class="moz-txt-link-freetext" href="http://www.ecotrust.org/ocean/OpenOceanMap.html">http://www.ecotrust.org/ocean/OpenOceanMap.html</a><br>
    </li>
    <li>MarineMap, "a web-based decision support tool for open and
participatory spatial planning in the marine environment.":
<a class="moz-txt-link-freetext" href="http://marinemap.org/">http://marinemap.org/</a><br>
    </li>
  </ul>
  <li>GeoDjango is a geospatial extension for the Django web framework.</li>
  <ul>
    <li>Site: <a class="moz-txt-link-freetext" href="http://geodjango.org/">http://geodjango.org/</a></li>
  </ul>
  <ul>
    <li>Documentation: <a class="moz-txt-link-freetext" href="http://geodjango.org/docs/">http://geodjango.org/docs/</a></li>
  </ul>
  <ul>
    <li>Tutorial, highly recommended:
<a class="moz-txt-link-freetext" href="http://geodjango.org/docs/tutorial.html">http://geodjango.org/docs/tutorial.html</a></li>
  </ul>
  <li>GeoDjango works best with PostGIS (PostgreSQL), but will also
work with SpatiaLite (SQLite), Oracle Spatial (Oracle), and MySQL.</li>
  <li>GeoDjango provides geometry fields for use in Django models:
PointField, LineStringField, PolygonField, MultiPolygonField, etc.</li>
  <li>GeoManager allows Django models to perform spatial queries:</li>
  <ul>
    <li>Relationship: contains, covers, crosses, intersects, overlaps,
touches.</li>
  </ul>
  <ul>
    <li>Measurement: area, length, perimeter, distance</li>
  </ul>
  <ul>
    <li>Geometry: difference, intersection, union</li>
  </ul>
  <ul>
    <li>Serialization: GeoJSON, KML, SVG, GeoRSS</li>
  </ul>
  <li>The "django.contrib.gis.geos" module provides Python classes for
representing geometric types like Point and Polygon. These classes
include useful methods like calculating area of a polygon, creating a
polygon that's the difference between other polygons, etc. These
classes provide a way to specify the spatial reference system (SRID)
and transform between them, e.g., go from latitude/longitude to x/y
meters from a particular place.</li>
  <li>You can get the PostgreSQL INSERT statement to add PostGIS
support for a particular SRID from: <a class="moz-txt-link-freetext" href="http://spatialreference.org/">http://spatialreference.org/</a></li>
  <li>In Django, you'll need to tell settings.py to use the
"django.contrib.gis.db.backends.postgis" engine for the database and
include "django.contrib.gis" in the INSTALLED_APPS.</li>
  <li>The GeoDjango "ogrinspect" Django manage.py subcommand can read a
dataset and generate the code for a Django model with all its
attributes.</li>
  <li>The GeoDjango admin interface "admin.OSMGeoAdmin" can let you
view and edit your mapping data visually on the web and overlay it on
the Open Street Map data set.</li>
  <li>You may also be interested in GeoExt, a JavaScript toolkit for
rich web mapping: <a class="moz-txt-link-freetext" href="http://www.geoext.org/">http://www.geoext.org/</a></li>
</ul>
</body>
</html>