saving money with open source gis
DESCRIPTION
2010 Fall ILGISA WorkshopTRANSCRIPT
Saving Money UsingOpen Source Software
Bryan [email protected]
What is Open Source Software?
http://notinventedhe.re/on/2010-10-13
Wikipedia Says...
Open-source software (OSS) is computer software that is available in source code form for which the source code and certain other rights normally reserved for copyright holders are provided under a software license that permits users to study, change, and improve the software.
What does that mean to me?
• FREE!
• You can make changes to the software
• You can learn from experienced coders
• Oh, yeah... FREE!
Types of Licenses
BSD
GPL
MITApache
LGPLCreative Commons
Public Domain
CDDL
MPL
Eclipse
Artistic license
(so don’t sue me)
• Check with your lawyer if you are unsure
• JUST AS YOU SHOULD WITH ANY DEAL!
• Example: RFP’s, Microsoft CAL’s, developer licenses.
End of Scary Legal Stuff
Where do I find it?
How do I know if it’s good?
Recently updated?
Good documentation?
How many people maintain it?Not a good
choice
Active Community?
Are there companies selling support?
Books?
Buzz?
OK so what do I use?
Programming Language of Choice
def greet puts "Hello world"end
http://www.ruby-lang.org
GET TO THE GIS SOFTWARE!!!
Desktop Apps
uDighttp://udig.refractions.net/
• Uses Eclipse GUI
• Reads most standard GIS formats (PostGIS, shapefile, WMS, WFS, WCS, GeoRSS, KML, and images)
• Limited map making ability
• Simple editing is OK
GRASShttp://grass.osgeo.org
• One of the first GIS systems
• Initially developed by US Army Construction Engineering Research Laboratory in Champaign, IL
• Incredible powerful for geoprocessing both raster and vector
• Gives ArcInfo 7 a run for it’s money on the UI (i.e. not good)
Quantum GIShttp://www.qgis.org/
• Good middle ground
• Reasonably decent UI
• Power of GRASS
• Almost comparable to ArcView
• Before you buy another license at least give this a try
Databases
PostGIShttp://postgis.refractions.net/
• Nearly part of the PostgreSQL core
• Based off well documented standards (OGC)
• Fast and Stable
• Large community developing and documenting
MySQL Spatial Extensions
• Incomplete and not well documented
• Not recommended unless you MUST use MySQL
Spatialitehttp://www.gaia-gis.it/spatialite/
• Uses much of the same guts as PostGIS
• Based on SQLite so very small and portable
• Possible exchange format
• Can use on iOS devices (GIS on your phone)
• A little young
http://www.opengeospatial.org/standards/sfs
Most SQL vendors implement geography using a version of the:
OpenGIS Implementation Specification for Geographic information - Simple feature access
Data Formats
Most Common
• ESRI Shapefile
• De facto standard
• Documented by ESRI
http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf
Well Known Text (WKT)&
Well Known Binary (WKB)
• Used in database records
• Well documented
• Compact
Example
POINT(6 10) =010100000000000000000018400000000000002440
LINESTRING(3 4,10 50,20 25) = 010200000003000000000000000000084000000000000010400000000000002440000000000000494000000000000034400000000000003940
GMLhttp://en.wikipedia.org/wiki/
Geography_Markup_Language
• OGC/ISO Standard
• Encoded in XML and like XML can be used for good or evil
• Most other open formats take their cue from this format
Example
<gml:Point gml:id="p21" srsName="urn:ogc:def:crs:EPSG:6.6:4326"> <gml:coordinates>45.67, 88.56</gml:coordinates></gml:Point>
GeoJSONhttp://geojson.org
• JavaScript Object Notation (JSON) encoded
• Very similar to GML but a little more streamlined
• Different than the ESRI JSON format
Example{ "type": "Point", "coordinates": [100.0, 0.0] }
{ "type": "Polygon", "coordinates": [ [ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0] ] ]}
GeoRSShttp://georss.org
• Essentially a streamlined version of GML
• Used in RSS feeds
• Used by Yahoo in a lot of data streams
Example
<georss:point> 45.256 -71.92</georss:point>
KMLhttp://code.google.com/apis/kml/documentation
• Initially developed for Keyhole (Keyhole Markup Language) which was changed to Google Earth after being acquired
• As it’s name implies this is a markup language and is more suited to presenting GIS data than exchanging it
• Now an open standard and supported by Google Earth, NASA Worldwind, and ESRI
<?xml version="1.0" encoding="UTF-8"?><kml xmlns="http://www.opengis.net/kml/2.2"> <Placemark> <name>Simple placemark</name> <description>Attached to the ground. Intelligently places itself at the height of the underlying terrain.</description> <Point> <coordinates>-122.0822035425683,37.42228990140251,0</coordinates> </Point> </Placemark></kml>
Example
GPXhttp://www.topografix.com/gpx.asp
• GPS eXchange Format
• XML based
• Fairly easy to read and write
• Lots of support in consumer GPS devices
<?xml version="1.0" encoding="UTF-8" standalone="no" ?><gpx ...> <metadata> <link href="http://www.garmin.com"> <text>Garmin International</text> </link> <time>2009-10-17T22:58:43Z</time> </metadata> <trk> <name>Example GPX Document</name> <trkseg> <trkpt lat="47.644548" lon="-122.326897"> <ele>4.46</ele> <time>2009-10-17T18:37:26Z</time> </trkpt> <trkpt lat="47.644548" lon="-122.326897"> <ele>4.94</ele> <time>2009-10-17T18:37:31Z</time> </trkpt> <trkpt lat="47.644548" lon="-122.326897"> <ele>6.87</ele> <time>2009-10-17T18:37:34Z</time> </trkpt> </trkseg> </trk></gpx>
Image Formats(some)
GeoTIFFGeoJPG PNG
USGS DEM DOQNetCDF
NITF
JP2
Erdas Imagine ESRI GRID
ECW
ERMapper
BMP MrSID
PCI And many more!!!
GDAL/OGRhttp://www.gdal.org/
• Swiss army knife of GIS!
• Converts, slices and dices data anyway you like
• Really fast!
• Used in a bunch of OS and commercial applications
• Using ArcGIS? - You are already using GDAL
Web Mapping
Openlayershttp://openlayers.org/
• Only totally open, full featured, web map viewer
• Well documented
• Can be used with ESRI ArcGIS Server as well as many other data sources WMS, WFS, GeoRSS, etc...
MapServerhttp://mapserver.org/
• Original open source web mapping solution
• Akin to ESRI ArcIMS... will lead you into madness with it’s broken HTML
• Using just the map rendering capability is OK
Mapnikhttp://mapnik.org/
• Beautiful Rendering
• Exceptionally difficult to compile
• May be a little slow compared to MapServer
• Used by Google and Apple
Tilecachehttp://tilecache.org/
• Nice small python web service
• Will serve tiles ala Google Maps statically or on demand
• Lots of options for increasing web serving performance (memcached, HTTP headers)
GeoDjangohttp://geodjango.org/
• Django is a python web framework for designing applications quickly
• This is a very nice extension that adds a variety of methods for interacting with spatial data using PostGIS, GEOS, and PROJ4
Free but not open
• Google Earth
• Google Maps
• Microsoft Bing
• Yahoo Maps
• Mapquest
Other Cool Geo API’s
• 4Square
• Flickr
Open Streetmaphttp://www.openstreetmap.org/
• Totally open dataset of features
• Based on TIGER (in USA) and updated by individuals
• Variable precision
• Excellent cartography
• Made using open source GIS software
EveryBlockhttp://everyblock.com
• Second evolution of ChicagoCrime.org
• Excellent User Interface
• Uses Openlayers and Mapnik
Warning!
Extreme Technical Content ahead!
libLAShttp://liblas.org
• Library and executables
• Can convert raw LAS to a variety of formats using advanced filtering
• Can get detailed info and compare LAS files
• Supported by Iowa DNR and US Army
GEOShttp://trac.osgeo.org/geos/
• Geometry Engine, Open Source (GEOS)
• Backbone of PostGIS and Spatialite
• Also used in Quantum GIS, GRASS, OGR, Ingres, MapServer, and GeoDjango
PROJhttp://trac.osgeo.org/proj/
• Library and executable
• Will project to and from anything
• Used in almost all OS GIS projects
A little note about projections
EPSG/WKID Codeshttp://www.epsg.org/Geoodetic.html
• European Petroleum Survey Group (EPSG) initially developed a list of projections for easy reference
• Also known as Well Known ID’s (WKID)
• A good searchable index is: spatialreference.org
PROJCS["NAD83 / Illinois East (ftUS)", GEOGCS["NAD83", DATUM["North_American_Datum_1983", SPHEROID["GRS 1980",6378137,298.257222101, AUTHORITY["EPSG","7019"]], AUTHORITY["EPSG","6269"]], PRIMEM["Greenwich",0, AUTHORITY["EPSG","8901"]], UNIT["degree",0.01745329251994328, AUTHORITY["EPSG","9122"]], AUTHORITY["EPSG","4269"]], UNIT["US survey foot",0.3048006096012192, AUTHORITY["EPSG","9003"]], PROJECTION["Transverse_Mercator"], PARAMETER["latitude_of_origin",36.66666666666666], PARAMETER["central_meridian",-88.33333333333333], PARAMETER["scale_factor",0.999975], PARAMETER["false_easting",984250.0000000002], PARAMETER["false_northing",0], AUTHORITY["EPSG","3435"], AXIS["X",EAST], AXIS["Y",NORTH]]
EPSG:3435
vs