OSGeo planet

Syndicate content
Planet OSGeo - http://planet.osgeo.org
Updated: 2 hours 49 min ago

Cédric Moullet: Happy New Year !

3 hours 46 min ago
a href=http://www.osgeo.orgimg src=http://2.bp.blogspot.com/_LDKAMHrPsbE/SWLXwrafjJI/AAAAAAAAEiA/n5_TCwcgKbI/s400/OSGeo-Gift-Certificate.png alt= border=0 style=cursor: pointer; cursor: hand; width: 400px; height: 200px; id=BLOGGER_PHOTO_ID_5288026143773920402 //a

Cameron Shorter: UbuntuGIS Package Thermometer

4 hours 55 min ago
I've been pleasantly surprised to discover that a href=https://wiki.ubuntu.com/UbuntuGISUbuntu GIS/a packages are tracking the a href=http://wiki.debian.org/DebianGisDebian GIS/a project very closely. The one noteful regression I see is that QGIS is not packaged with either Debian or Ubuntu any more.br /br /br /br /br /br /table cellpadding=5 border=0 cellspacing=10tbodytrtd valign=topbr /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /table class=pkgcaptionh3DebianGIS/UbuntuGIS Package Thermometer/h3/captiontbodytr align=right class=titlethPackage/ththstable/ththtesting/ththunstable/ththbpo/ththjaunty/ththintrepid/ththhardy/ththgutsy/ththdapper/th/trtr class=upToDatetdstrongavce00/strong (a href=http://packages.qa.debian.org/avce00PTS/a,a href=http://avce00.maptools.org/avce00/UP/a)/tdtd1.3.0-2/tdtd2.0.0-2/tdtd2.0.0-2/tdtdbr //tdtd2.0.0-2/tdtd2.0.0-2/tdtd2.0.0-1/tdtd2.0.0-1/tdtd1.3.0-2/td/trtr class=upToDatetdstrongbatik/strong (a href=http://packages.qa.debian.org/batikPTS/a,a href=http://xmlgraphics.apache.org/batik/UP/a)/tdtd1.6-3/tdtd1.6-4/tdtd1.6-4/tdtdbr //tdtd1.7.dfsg-0ubuntu1/tdtd1.7.dfsg-0ubuntu1/tdtd1.6-3/tdtd1.6-3/tdtd1.6-2/td/trtr class=unpackagedtdstrongbeam/strong (a href=http://brockmann-consult.de/beam/tutorials.htmlUP/a)/tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //td/trtr class=unpackagedtdstrongbeat/strong (a href=http://www.science-and-technology.nl/beat/UP/a)/tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //td/trtr class=upToDatetdstrongbuoy/strong (a href=http://packages.qa.debian.org/buoyPTS/a,a href=http://buoy.sourceforge.net/UP/a)/tdtd1.6-2/tdtd1.9-1/tdtd1.9-1/tdtdbr //tdtd1.9-1/tdtd1.9-1/tdtd1.8-1/tdtd1.6-2/tdtdbr //td/trtr class=unpackagedtdstrongcartoweb/strong (a href=http://cartoweb.org/UP/a)/tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //td/trtr class=ubuntuOutOfDatetdstrongcgal/strong (a href=http://packages.qa.debian.org/cgalPTS/a,a href=http://www.cgal.org/UP/a)/tdtd3.2.1-2/tdtd3.3.1-4/tdtd3.3.1-4/tdtdbr //tdtd3.3.1-2ubuntu1/tdtd3.3.1-2ubuntu1/tdtd3.3.1-2ubuntu1/tdtd3.3-2/tdtdbr //td/trtr class=unpackagedtdstrongchameleon-gis/strong (a href=http://www.dmsolutions.ca/technology/chameleon.htmlUP/a)/tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //td/trtr class=unpackagedtdstrongdeegree/strong (a href=http://deegree.sourceforge.net/UP/a)/tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //td/trtr class=unpackagedtdstrongdemeter/strong (a href=http://www.tbgsoftware.com/index.htmlUP/a)/tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //td/trtr class=upToDatetdstrongdrawmap/strong (a href=http://packages.qa.debian.org/drawmapPTS/a,a href=http://www.ttc-cmc.net/%7Efme/drawmap.htmlUP/a)/tdtd2.5-2/tdtd2.5-3/tdtd2.5-3/tdtdbr //tdtd2.5-3/tdtd2.5-3/tdtd2.5-3/tdtd2.5-3/tdtd2.5-1.1/td/trtr class=upToDatetdstronge00compr/strong (a href=http://packages.qa.debian.org/e00comprPTS/a,a href=http://avce00.maptools.org/e00compr/index.htmlUP/a)/tdtd1.0.0-6/tdtd1.0.0-7/tdtd1.0.0-7/tdtdbr //tdtd1.0.0-7/tdtd1.0.0-7/tdtd1.0.0-6/tdtd1.0.0-6/tdtd1.0.0-2/td/trtr class=upToDatetdstrongearth3d/strong (a href=http://packages.qa.debian.org/earth3dPTS/a,a href=http://www.earth3d.org/UP/a)/tdtd1.0.5-1/tdtd1.0.5-1.1/tdtd1.0.5-1.1/tdtdbr //tdtd1.0.5-1.1/tdtd1.0.5-1.1/tdtd1.0.5-1/tdtd1.0.5-1/tdtd1.0.4-1/td/trtr class=unpackagedtdstrongefoto/strong (a href=http://e-foto.sourceforge.net/index-e.htmlUP/a)/tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //td/trtr class=unpackagedtdstrongfdo/strong (a href=http://fdo.osgeo.org/downloads.htmlUP/a)/tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //td/trtr class=unpackagedtdstronggarmin-utils/strong (a href=ftp://ftp.snafu.org/pub/garmin-utils-2.5.tar.gzUP/a)/tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //td/trtr class=upToDatetdstronggdal/strong (a href=http://packages.qa.debian.org/gdalPTS/a,a href=http://svn.debian.org/wsvn/pkg-grass/packages/gdal/trunk/debian/TODO?op=fileamp;rev=0amp;sc=0TODO/a,a href=http://www.gdal.org/UP/a)/tdtd1.3.2-4/tdtd1.5.2-3/tdtd1.5.2-3/tdtd1.5.2-3~bpo40+1/tdtd1.5.2-3/tdtd1.5.2-2/tdtd1.4.4-1ubuntu3/tdtd1.4.1-6build1/tdtd1.2.6-1.3build1/td/trtr class=unpackagedtdstronggeoinformatica/strong (a href=http://geoinformatics.tkk.fi/twiki/bin/view/Main/GeoinformaticaSoftwareUP/a)/tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //td/trtr class=upToDatetdstronggeoip/strong (a href=http://packages.qa.debian.org/geoipPTS/a,a href=http://www.maxmind.com/app/cUP/a)/tdtd1.3.17-1.1/tdtd1.4.4.dfsg-3/tdtd1.4.4.dfsg-3/tdtd1.4.4.dfsg-1~bpo40+1/tdtd1.4.4.dfsg-3/tdtd1.4.4.dfsg-2/tdtd1.4.4.dfsg-1/tdtd1.3.17-1.1/tdtd1.3.14-2/td/trtr class=unpackagedtdstronggeojasper/strong (a href=http://www.dimin.net/software/sources.htmlUP/a)/tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //td/trtr class=unpackagedtdstronggeopy/strong (a href=http://exogen.case.edu/projects/geopy/UP/a)/tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //td/trtr class=upToDatetdstronggeos/strong (a href=http://packages.qa.debian.org/geosPTS/a,a href=http://geos.refractions.net/UP/a)/tdtd2.2.3-3/tdtd3.0.0-5/tdtd3.0.0-5/tdtdbr //tdtd3.0.0-5/tdtd3.0.0-5/tdtd2.2.3-4/tdtd2.2.3-3/tdtd2.1.4-2/td/trtr class=unpackagedtdstronggeotools/strong (a href=http://www.geotools.org/UP/a)/tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //td/trtr class=unpackagedtdstronggmap/strong (a href=http://gmap.sourceforge.net/UP/a)/tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //td/trtr class=upToDatetdstronggmt/strong (a href=http://packages.qa.debian.org/gmtPTS/a,a href=http://gmt.soest.hawaii.edu/UP/a)/tdtd4.1.2-1.1/tdtd4.3.1-3/tdtd4.3.1-3/tdtdbr //tdtd4.3.1-3/tdtd4.3.1-3/tdtd4.2.0-1build1/tdtd4.1.4-0ubuntu1/tdtd4.0-2build1/td/trtr class=upToDatetdstronggosmore/strong (a href=http://packages.qa.debian.org/gosmorePTS/a,a href=http://wiki.openstreetmap.org/index.php/GosmoreUP/a)/tdtdbr //tdtd0.0.0.20080704-1/tdtd0.0.0.20080704-1/tdtdbr //tdtd0.0.0.20080704-1/tdtd0.0.0.20070901-3/tdtd0.0.0.20070901-2.1build1/tdtdbr //tdtdbr //td/trtr class=upToDatetdstronggpsbabel/strong (a href=http://packages.qa.debian.org/gpsbabelPTS/a,a href=http://gpsbabel.sourceforge.net/UP/a)/tdtd1.3.2-2/tdtd1.3.5-1.1/tdtd1.3.5-1.1/tdtdbr //tdtd1.3.5-1.1/tdtd1.3.5-0ubuntu1/tdtd1.3.3-2/tdtd1.3.3-2/tdtd1.2.7-1/td/trtr class=ubuntuOutOfDatetdstronggpsd/strong (a href=http://packages.qa.debian.org/gpsdPTS/a,a href=http://gpsd.berlios.de/UP/a)/tdtd2.33-4etch1/tdtd2.37-6/tdtd2.37-7/tdtd2.37-6~bpo40+1/tdtd2.37-6/tdtd2.37-4/tdtd2.36-2/tdtd2.33-5/tdtd2.30-1ubuntu3/td/trtr class=upToDatetdstronggpsdrive/strong (a href=http://packages.qa.debian.org/gpsdrivePTS/a,a href=http://svn.debian.org/wsvn/pkg-grass/packages/gpsdrive/trunk/debian/TODO?op=fileamp;rev=0amp;sc=0TODO/a,a href=http://www.gpsdrive.cc/UP/a)/tdtd2.09-2.1/tdtd2.10~pre4-6.dfsg-1/tdtd2.10~pre4-6.dfsg-1/tdtdbr //tdtd2.10~pre4-6.dfsg-1ubuntu1/tdtd2.10~pre4-3/tdtd2.10~pre4-1/tdtd2.09-2.2/tdtd2.09-2ubuntu1/td/trtr class=ubuntuOutOfDatetdstronggpsman/strong (a href=http://packages.qa.debian.org/gpsmanPTS/a,a href=http://www.ncc.up.pt/gpsman/UP/a)/tdtd6.3.1-1/tdtd6.3.2-1/tdtd6.4-1/tdtdbr //tdtd6.3.2-1/tdtd6.3.2-1/tdtd6.3.2-1/tdtd6.3.2-1/tdtd6.2.1-1/td/trtr class=upToDatetdstronggpstrans/strong (a href=http://packages.qa.debian.org/gpstransPTS/a,a href=http://gpstrans.sourceforge.net/UP/a)/tdtdbr //tdtd0.41-1/tdtd0.41-1/tdtdbr //tdtd0.41-1/tdtd0.40-3.1/tdtd0.40-3.1/tdtd0.40-2/tdtd0.39-3/td/trtr class=upToDatetdstronggpx2shp/strong (a href=http://packages.qa.debian.org/gpx2shpPTS/a,a href=http://gpx2shp.sourceforge.jp/UP/a)/tdtd0.69-2/tdtd0.69-3/tdtd0.69-3/tdtdbr //tdtd0.69-3/tdtd0.69-3/tdtd0.69-3/tdtd0.69-2/tdtd0.69-1/td/trtr class=upToDatetdstronggrace/strong (a href=http://packages.qa.debian.org/gracePTS/a,a href=ftp://plasma-gate.weizmann.ac.il/pub/grace/src/UP/a)/tdtd1:5.1.20-5/tdtd1:5.1.22-1/tdtd1:5.1.22-1/tdtdbr //tdtd1:5.1.22-1/tdtd1:5.1.22-1/tdtd1:5.1.21-1build1/tdtd1:5.1.21-1/tdtd1:5.1.18-4ubuntu1/td/trtr class=upToDatetdstronggrace6/strong (a href=http://packages.qa.debian.org/grace6PTS/a,a href=ftp://plasma-gate.weizmann.ac.il/pub/grace/src/UP/a)/tdtd5.99.1+dev4-3/tdtd5.99.1+dev4-5.1/tdtd5.99.1+dev4-5.1/tdtdbr //tdtd5.99.1+dev4-5.1/tdtd5.99.1+dev4-5.1/tdtd5.99.1+dev4-4build1/tdtd5.99.1+dev4-3/tdtd5.99.0+final-9ubuntu3/td/trtr class=upToDatetdstronggrass/strong (a href=http://packages.qa.debian.org/grassPTS/a,a href=http://svn.debian.org/wsvn/pkg-grass/packages/grass/trunk/debian/TODO?op=fileamp;rev=0amp;sc=0TODO/a,a href=http://grass.itc.it/UP/a)/tdtd6.0.2-6/tdtd6.2.3-2.1/tdtd6.2.3-2.1/tdtd6.2.3-2.1~bpo40+1/tdtd6.2.3-2.1/tdtd6.2.3-2.1/tdtd6.2.2-2ubuntu1/tdtd6.2.2-1ubuntu1/tdtd6.0.1-1ubuntu2/td/trtr class=upToDatetdstronggts/strong (a href=http://packages.qa.debian.org/gtsPTS/a,a href=http://gts.sourceforge.net/UP/a)/tdtd0.7.6-1.1/tdtd0.7.6+darcs080704-2/tdtd0.7.6+darcs080704-2/tdtdbr //tdtd0.7.6+darcs080704-2/tdtd0.7.6-1.1/tdtd0.7.6-1.1/tdtd0.7.6-1.1/tdtd0.7.3-2/td/trtr class=unpackagedtdstronggvsig/strong (a href=http://www.gvsig.gva.es/UP/a)/tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //td/trtr class=upToDatetdstrongh5utils/strong (a href=http://packages.qa.debian.org/h5utilsPTS/a,a href=http://hdf.ncsa.uiuc.edu/UP/a)/tdtd1.10-5/tdtd1.10-7/tdtd1.10-7/tdtdbr //tdtd1.10-7ubuntu2/tdtd1.10-7ubuntu2/tdtd1.10-7ubuntu1/tdtd1.10-7/tdtd1.10-3/td/trtr class=upToDatetdstronghdf5/strong (a href=http://packages.qa.debian.org/hdf5PTS/a,a href=http://hdf.ncsa.uiuc.edu/UP/a)/tdtd1.6.5-3/tdtd1.6.6-4/tdtd1.6.6-4/tdtdbr //tdtd1.6.6-4ubuntu1/tdtd1.6.6-4ubuntu1/tdtd1.6.5-5.2build1/tdtd1.6.5-5/tdtd1.6.4-4/td/trtr class=upToDatetdstrongircmarkers/strong (a href=http://packages.qa.debian.org/ircmarkersPTS/a,a href=http://www.df7cb.de/projects/ircmarkers/UP/a)/tdtd0.12-1/tdtd0.14-1/tdtd0.14-1/tdtdbr //tdtd0.14-1/tdtd0.14-1/tdtd0.13-1/tdtd0.12-1/tdtd0.8-1/td/trtr class=upToDatetdstrongjama/strong (a href=http://packages.qa.debian.org/jamaPTS/a,a href=http://math.nist.gov/javanumerics/jama/UP/a)/tdtd1.0.2-2/tdtd1.0.2-2/tdtd1.0.2-2/tdtdbr //tdtd1.0.2-2/tdtd1.0.2-2/tdtd1.0.2-2/tdtd1.0.2-2/tdtd1.0.2-2/td/trtr class=unpackagedtdstrongjgrass/strong (a href=http://www.hydrologis.com/html/jgrass/jgrass_en.htmlUP/a)/tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //td/trtr class=upToDatetdstrongjosm/strong (a href=http://packages.qa.debian.org/josmPTS/a,a href=http://josm.eigenheimstrasse.de/wikiUP/a)/tdtdbr //tdtd0.0.0.20080713-1/tdtd0.0.0.20080713-1/tdtdbr //tdtd0.0.0.20080713-1ubuntu1/tdtd0.0.0.20080713-1ubuntu1/tdtd0.0.0.20080330-1/tdtdbr //tdtdbr //td/trtr class=upToDatetdstrongjosm-plugins/strong (a href=http://packages.qa.debian.org/josm-pluginsPTS/a,a href=http://svn.openstreetmap.org/applications/editors/josm/pluginsUP/a)/tdtdbr //tdtd0.0.0.20080413-2/tdtd0.0.0.20080413-2/tdtdbr //tdtd0.0.0.20080413-2/tdtd0.0.0.20080413-2/tdtdbr //tdtdbr //tdtdbr //td/trtr class=upToDatetdstrongjts/strong (a href=http://packages.qa.debian.org/jtsPTS/a,a href=http://www.vividsolutions.com/jts/jtshome.htmUP/a)/tdtd1.6-2/tdtd1.7-1/tdtd1.7-1/tdtdbr //tdtd1.7-1/tdtd1.7-1/tdtd1.7-1/tdtd1.7-1/tdtd1.6-2/td/trtr class=unpackagedtdstrongjump/strong (a href=http://vividsolutions.com/jump/UP/a)/tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //td/trtr class=obsoletetdstrongkflog/strong (a href=http://packages.qa.debian.org/kflogPTS/a,a href=http://www.kflog.org/kflog/UP/a)/tdtd2.1.1-3.1/tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtd2.1.1-3.1/tdtd2.1.1-3ubuntu2/td/trtr class=upToDatetdstronglibgdal-grass/strong (a href=http://packages.qa.debian.org/libgdal-grassPTS/a,a href=http://www.gdal.org/UP/a)/tdtd1.3.2-1/tdtd1.5.2-1/tdtd1.5.2-1/tdtd1.5.2-1~bpo40+1/tdtd1.5.2-1/tdtd1.5.2-1/tdtd1.4.4-1/tdtd1.4.1-1ubuntu1/tdtd1.2.6-1build1/td/trtr class=upToDatetdstronglibgeotiff-dfsg/strong (a href=http://packages.qa.debian.org/libgeotiff-dfsgPTS/a,a href=http://www.gdal.org/UP/a)/tdtdbr //tdtd1.2.4-3/tdtd1.2.4-3/tdtdbr //tdtd1.2.4-3/tdtd1.2.4-3/tdtd1.2.4-3/tdtdbr //tdtdbr //td/trtr class=upToDatetdstronglibgeotiff-epsg/strong (a href=http://packages.qa.debian.org/libgeotiff-epsgPTS/a,a href=http://www.gdal.org/UP/a)/tdtdbr //tdtd1.2.4-3/tdtd1.2.4-3/tdtdbr //tdtd1.2.4-3/tdtd1.2.4-3/tdtd1.2.4-3/tdtdbr //tdtdbr //td/trtr class=upToDatetdstronglibhdf4/strong (a href=http://packages.qa.debian.org/libhdf4PTS/a,a href=http://hdf.ncsa.uiuc.edu/UP/a)/tdtd4.1r4-18.1/tdtd4.1r4-22/tdtd4.1r4-22/tdtdbr //tdtd4.1r4-22/tdtd4.1r4-22/tdtd4.1r4-21/tdtd4.1r4-21/tdtd4.1r4-18.1ubuntu1/td/trtr class=ubuntuOutOfDatetdstronglibjogl-java/strong (a href=http://packages.qa.debian.org/libjogl-javaPTS/a,a href=https://jogl.dev.java.net/UP/a)/tdtdbr //tdtd1.1.1-1/tdtd1.1.1+dak1-4/tdtdbr //tdtd1.1.1+dak1-1ubuntu2/tdtd1.1.1-2ubuntu1/tdtdbr //tdtdbr //tdtdbr //td/trtr class=unpackagedtdstronglibkml/strong (a href=http://code.google.com/p/libkml/UP/a)/tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //td/trtr class=unpackagedtdstrongliblas/strong (a href=http://liblas.org/UP/a)/tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //td/trtr class=obsoletetdstronglibterralib/strong (a href=http://packages.qa.debian.org/libterralibPTS/a,a href=http://www.terralib.org/UP/a)/tdtd3.0.3b2-3.1/tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtd3.0.3b2-3.1build1/tdtd3.0.3b2-3/td/trtr class=unpackagedtdstrongmapbender/strong (a href=http://www.mapbender.org/UP/a)/tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //td/trtr class=unpackagedtdstrongmapguide/strong (a href=https://mapguide.osgeo.org/UP/a)/tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //td/trtr class=unpackagedtdstrongmapit/strong (a href=http://bugs.debian.org/147998WNPP/a,a href=http://www.mapit.de/index.en.htmlUP/a)/tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //td/trtr class=upToDatetdstrongmapnik/strong (a href=http://packages.qa.debian.org/mapnikPTS/a,a href=http://www.mapnik.org/UP/a)/tdtdbr //tdtd0.5.1-3/tdtd0.5.1-3/tdtd0.5.1-1~bpo40+1/tdtd0.5.1-3ubuntu1/tdtd0.5.1-2ubuntu1/tdtd0.4.0-2/tdtd0.4.0-2/tdtdbr //td/trtr class=upToDatetdstrongmapserver/strong (a href=http://packages.qa.debian.org/mapserverPTS/a,a href=http://mapserver.gis.umn.edu/UP/a)/tdtd4.10.0-5.1+etch2/tdtd5.0.3-3/tdtd5.0.3-3/tdtdbr //tdtd5.0.3-3/tdtd5.0.3-2/tdtd5.0.0-3/tdtd4.10.3-1/tdtd4.6.1-6ubuntu2/td/trtr class=ubuntuOutOfDatetdstrongmarble/strong (a href=http://packages.qa.debian.org/marblePTS/a,a href=http://edu.kde.org/marble/UP/a)/tdtdbr //tdtd0.6+svn837399-2/tdtd0.6+svn837399-2/tdtd0.4.3-2~bpo40+1/tdtdbr //tdtdbr //tdtd0.4.3-2/tdtd0.4.3-1build1/tdtdbr //td/trtr class=upToDatetdstrongmkgmap/strong (a href=http://packages.qa.debian.org/mkgmapPTS/a,a href=http://www.parabola.me.uk/mkgmap/index.htmlUP/a)/tdtdbr //tdtd0.0.0+svn630-1/tdtd0.0.0+svn630-1/tdtdbr //tdtd0.0.0+svn630-1/tdtdbr //tdtdbr //tdtdbr //tdtdbr //td/trtr class=unpackagedtdstrongmusmap/strong (a href=http://bugs.debian.org/344345WNPP/a,a href=http://musmap.sourceforge.net/UP/a)/tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //td/trtr class=upToDatetdstrongnetcdf/strong (a href=http://packages.qa.debian.org/netcdfPTS/a,a href=http://www.unidata.ucar.edu/software/netcdf/UP/a)/tdtd3.6.1-1/tdtd1:3.6.2-3.1/tdtd1:3.6.2-3.1/tdtdbr //tdtd1:3.6.2-3.1/tdtd1:3.6.2-3.1/tdtd1:3.6.2-2/tdtd3.6.1-1/tdtd3.6.0+3.6.1-beta3-0ubuntu1/td/trtr class=obsoletetdstrongnetcdf-perl/strong (a href=http://packages.qa.debian.org/netcdf-perlPTS/a,a href=http://starship.python.net/crew/hinsen/scientific.htmlUP/a)/tdtd1.2.1-8/tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtd1.2.3-1/tdtd1.2.1-7ubuntu1/td/trtr class=upToDatetdstrongogdi-dfsg/strong (a href=http://packages.qa.debian.org/ogdi-dfsgPTS/a,a href=http://ogdi.sourceforge.net/UP/a)/tdtdbr //tdtd3.2.0~beta1-3.1/tdtd3.2.0~beta1-3.1/tdtd3.2.0~beta1-3~bpo.1/tdtd3.2.0~beta1-3.1/tdtd3.2.0~beta1-3.1/tdtd3.2.0~beta1-3ubuntu1/tdtd3.2.0~beta1-3ubuntu1/tdtdbr //td/trtr class=upToDatetdstrongopencv/strong (a href=http://packages.qa.debian.org/opencvPTS/a,a href=http://sourceforge.net/projects/opencvlibrary/UP/a)/tdtd0.9.7-4/tdtd1.0.0-6.1/tdtd1.0.0-6.1/tdtdbr //tdtd1.0.0-6.1build1/tdtd1.0.0-6.1/tdtd1.0.0-4ubuntu1/tdtd1.0.0-3ubuntu3/tdtd0.9.6-4.1build1/td/trtr class=unpackagedtdstrongopenev/strong (a href=http://bugs.debian.org/291562WNPP/a,a href=http://openev.sourceforge.net/UP/a)/tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //td/trtr class=upToDatetdstrongopenjump/strong (a href=http://packages.qa.debian.org/openjumpPTS/a,a href=http://jump-pilot.sourceforge.net/UP/a)/tdtd1.0-2/tdtd1.0-3/tdtd1.0-3/tdtdbr //tdtd1.0-3/tdtd1.0-3/tdtd1.0-3/tdtd1.0-2/tdtdbr //td/trtr class=upToDatetdstrongopenscenegraph/strong (a href=http://packages.qa.debian.org/openscenegraphPTS/a,a href=http://www.openscenegraph.org/UP/a)/tdtd1.2.0-2/tdtd2.4.0-1.1/tdtd2.4.0-1.1/tdtdbr //tdtd2.4.0-1.1/tdtd2.4.0-1.1/tdtd2.2.0-2ubuntu2/tdtd1.2.0-4build1/tdtd0.9.9-7ubuntu5/td/trtr class=unpackagedtdstrongopticks/strong (a href=https://opticks.ballforge.net/UP/a)/tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //td/trtr class=unpackagedtdstrongorfeo/strong (a href=http://smsc.cnes.fr/PLEIADES/lien3_vm.htmUP/a)/tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //td/trtr class=upToDatetdstrongosm2pgsql/strong (a href=http://packages.qa.debian.org/osm2pgsqlPTS/a,a href=http://svn.openstreetmap.org/applications/utils/export/osm2pgsql/UP/a)/tdtdbr //tdtd0.52.20080408-2/tdtd0.52.20080408-2/tdtd0.52.20080408-2~bpo40+1/tdtd0.52.20080408-2build1/tdtd0.52.20080408-2build1/tdtd0.08.20071007-1/tdtdbr //tdtdbr //td/trtr class=unpackagedtdstrongossim/strong (a href=http://www.ossim.org/UP/a)/tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //td/trtr class=upToDatetdstrongparaview/strong (a href=http://packages.qa.debian.org/paraviewPTS/a,a href=http://www.paraview.org/HTML/Index.htmlUP/a)/tdtdbr //tdtd3.2.2-1/tdtd3.2.3-4/tdtdbr //tdtd3.2.3-4ubuntu1/tdtd3.2.2-1/tdtdbr //tdtdbr //tdtdbr //td/trtr class=upToDatetdstrongpostgis/strong (a href=http://packages.qa.debian.org/postgisPTS/a,a href=http://postgis.refractions.net/UP/a)/tdtd1.1.6-2/tdtd1.3.3-3/tdtd1.3.3-3/tdtdbr //tdtd1.3.3-3/tdtd1.3.3-3/tdtd1.3.3-1/tdtd1.2.1-2/tdtd1.0.0-1/td/trtr class=unpackagedtdstrongprimagis/strong (a href=http://primagis.fi/UP/a)/tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //td/trtr class=upToDatetdstrongproj/strong (a href=http://packages.qa.debian.org/projPTS/a,a href=http://svn.debian.org/wsvn/pkg-grass/packages/proj/trunk/debian/TODO?op=fileamp;rev=0amp;sc=0TODO/a,a href=http://proj.maptools.org/UP/a)/tdtd4.4.9d-2/tdtd4.6.0-2/tdtd4.6.0-2/tdtd4.6.0-1~bpo40+1/tdtd4.6.0-2/tdtd4.6.0-1/tdtd4.6.0-1/tdtd4.5.0-2/tdtd4.4.9d-2/td/trtr class=unpackagedtdstrongpygps/strong (a href=http://pygps.org/UP/a)/tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //td/trtr class=unpackagedtdstrongpython-pcl/strong (a href=http://zcologia.org/cartography/UP/a)/tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //td/trtr class=upToDatetdstrongpython-scientific/strong (a href=http://packages.qa.debian.org/python-scientificPTS/a,a href=http://starship.python.net/crew/hinsen/scientific.htmlUP/a)/tdtd2.4.11-1/tdtd2.4.11-2/tdtd2.4.11-2/tdtdbr //tdtd2.4.11-2/tdtd2.4.11-1.2/tdtd2.4.11-1ubuntu3/tdtd2.4.11-1ubuntu1/tdtd2.4.9-3ubuntu2/td/trtr class=obsoletetdstrongqgis/strong (a href=http://packages.qa.debian.org/qgisPTS/a,a href=http://qgis.org/UP/a)/tdtd0.7.4-5/tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtd0.8.0-5ubuntu2/tdtd0.7.4-2ubuntu1/td/trtr class=unpackagedtdstrongroadmap/strong (a href=http://bugs.debian.org/276135WNPP/a,a href=http://roadmap.digitalomaha.net/UP/a)/tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //td/trtr class=unpackagedtdstrongroadnav/strong (a href=http://bugs.debian.org/405428WNPP/a,a href=http://roadnav.sourceforge.net/UP/a)/tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //td/trtr class=unpackagedtdstrongroadster/strong (a href=http://roadsterproject.wordpress.com/UP/a)/tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //td/trtr class=unpackagedtdstrongsavi/strong (a href=http://bugs.debian.org/436511WNPP/a,a href=http://savi.sourceforge.net/UP/a)/tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //td/trtr class=upToDatetdstrongshapelib/strong (a href=http://packages.qa.debian.org/shapelibPTS/a,a href=http://shapelib.maptools.org/UP/a)/tdtd1.2.10-3/tdtd1.2.10-4.1/tdtd1.2.10-4.1/tdtdbr //tdtd1.2.10-4.1/tdtd1.2.10-4/tdtd1.2.10-3/tdtd1.2.10-3/tdtd1.2.10-3/td/trtr class=upToDatetdstrongthuban/strong (a href=http://packages.qa.debian.org/thubanPTS/a,a href=http://thuban.intevation.org/UP/a)/tdtd1.0.1-1.2/tdtd1.2.0-2.1/tdtd1.2.0-2.1/tdtdbr //tdtd1.2.0-2.1ubuntu1/tdtd1.2.0-2.1ubuntu1/tdtd1.2.0-2.1ubuntu1/tdtd1.2.0-2/tdtd1.0.0-1ubuntu5/td/trtr class=unpackagedtdstrongudig/strong (a href=http://udig.refractions.net/confluence/display/UDIG/HomeUP/a)/tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //td/trtr class=upToDatetdstrongviking/strong (a href=http://packages.qa.debian.org/vikingPTS/a,a href=http://viking.sourceforge.net/UP/a)/tdtdbr //tdtd0.9.6-2/tdtd0.9.6-2/tdtd0.9.4-1~bpo40+1/tdtd0.9.6-2/tdtd0.9.6-2/tdtd0.9.3-2build1/tdtdbr //tdtdbr //td/trtr class=upToDatetdstrongworldwind/strong (a href=http://packages.qa.debian.org/worldwindPTS/a,a href=http://worldwind.arc.nasa.gov/java/UP/a)/tdtdbr //tdtd0.5.0-1/tdtd0.5.0-6/tdtdbr //tdtd0.5.0-6/tdtd0.5.0-1/tdtdbr //tdtdbr //tdtdbr //td/trtr class=unpackagedtdstrongworldwind2d/strong (a href=http://bugs.debian.org/326600WNPP/a,a href=http://ww2d.org/UP/a)/tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //tdtdbr //td/tr/tbody/tablebr //tdtd valign=topbr /br //td/tr/tbody/tablebr /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /br /table border=0captionh3Color legend/h3/captiontbodytrtdbr /br /br /br /br /table class=pkgtbodytr class=upToDatetdbr //td/tr/tbody/tablebr //tdtdbr /smallUbuntu version gt;= Debian/smallbr //td/trtrtdbr /br /br /br /br /br /table class=pkgtbodytr class=ubuntuOutOfDatetdbr //td/tr/tbody/tablebr //tdtdbr /smallUbuntu behind Debian unstable/smallbr //td/trtrtdbr /br /br /br /br /table class=pkgtbodytr class=unpackagedtdbr //td/tr/tbody/tablebr /br //tdtdbr /smallNot packaged/smallbr //td/trtrtdbr /br /br /br /br /table class=pkgtbodytr class=obsoletetdbr //td/tr/tbody/tablebr //tdtdbr /smallObsolete/smallbr /br //td/tr/tbody/tablebr / pStatus at: Mon Jan 5 10:35:39 2009/pbr / pSee also the a href=http://pkg-grass.alioth.debian.org/debiangis-status.htmlDebianGis packages thermometer/a./pbr / psmallGenerated by a derivative of a href=http://svn.debian.org/wsvn/pkg-grass/scripts/dgis-status.pl?op=fileamp;rev=0amp;sc=0this GPL licensed perl script/a /small/psmallbr /br / /smallpsmallwritten by: a href=mailto:frankie@debian.orgFrancesco P. Lovergine/a for DebianGis use./small/p

Paul Ramsey: Data For Decision

Mon, 05/01/2009 - 19:05
I have to blog this so the links are somewhere I can find them again! From Anselm Hook on Geowankers, links to the National Film Board of Canada 1968 short on GIS, “a href=http://www3.nfb.ca/collection/films/fiche/?id=18208Data For Decision/a”, parts a href=http://www.youtube.com/watch?v=eAFG6aQTwPk[1]/a, a href=http://www.youtube.com/watch?v=3kFYsOHgDSo[2]/a and a href=http://www.youtube.com/watch?v=ryWcq7Dv4jE[3]/a.br /br /Beep, beep, boop, boop, boop!br /

Mark Leslie: Beauty and the Beast

Mon, 05/01/2009 - 06:48
A link came across my desk this morning, with a note citing a href=http://publicus.opengeo.org/landgate_demo/vespucci/index.htmlanother sooo sweet openlayers [span style=font-style: italic;sic/span] application./a I expect I'm behind the curve on this, as I don't sit on the open layers lists, but I wanted to bring this to the attention of anyone who, like me, is tired of the overly cluttered and obfuscated applications that tend to bury beautiful functionality under a steaming pile of it can also.... I really can't say much about the app. Everything I know is in that link, but I'm impressed by the cleanliness of the interface, the clarity of the map and the simplicity of the application as a whole. My only question is, why do I need to add a note to see the legend?br /br /For some contrast, a href=http://beta.landgate.wa.gov.au/projects/wfsv/this is an example/a is another version of what seems to be the same application (no version details were obvious). The latter provides the same interface, but includes far more variety of markers, higher volume and a smaller minscale. Throw in the raster background and you end up with a fairly ugly map that personally find useless until the fifth highest scale level and unpleasant until the second. There seems to be no map at the first. While I certainly appreciate the value a raster can add at high scales, I much prefer the clean and clear effect of the NYC map.

Tom Kralidis: Python templating

Sun, 04/01/2009 - 20:57
Awhile back, I started using Genshi as a templating solution for some Python application development.  Easy to use, we were able to come up with a SensorML generator for description and discovery of monitoring stations. Lately, I’ve been helping out a bit on the new MapServer website, driven by Sphinx.  Digging deeper, I noticed Sphinx using [...]

Tom Kralidis: Really Easy Coordinate Transformation

Sun, 04/01/2009 - 20:29
One of the most frequent questions I get from clients is how to transform lat/long to LCC coordinates in a very lightweight fashion, in their webapps.  There are many solutions and approaches under the MetaCRS umbrella to choose from, depending on your requirements. Here’s a super lightweight way to do it with proj4js: lt;script src=http://svn.osgeo.org/metacrs/proj4js/trunk/lib/proj4js-compressed.jsgt;lt;/scriptgt; lt;script src=http://svn.osgeo.org/metacrs/proj4js/trunk/lib/defs/EPSG42304.jsgt;lt;/scriptgt; ... var x [...]

Sean Gillies: OpenLayers and Djakota imagery

Sun, 04/01/2009 - 19:51
pHugh Cayless has written an OpenURL image layer for OpenLayers that pulls imagery from a href=http://philomousos.blogspot.com/2008/12/openlayers-and-djatoka.html class=referenceDjakota/a. I'm eager to see it in action. I've heard other library folks talking about doing this kind of thing with GeoPDF; my hope (I'm not speaking for Hugh or UNC) is that they'll take a look at this kind of non-proprietary solution before they do./p

Sean Gillies: More decoration

Fri, 02/01/2009 - 20:03
pChristopher Schmidt a href=http://crschmidt.net/blog/352/python-decorators-what-they-are-underneath/ class=referenceexplains/a the traditional approach to wrapping functions and methods, one I use regularly; Python's built-in property function, as a decorator, produces read-only properties, but can provide read-write property access when used traditionally./p pAre decorators merely cosmetic? I'm of the opinion that some syntaxes are better than others. You're likely to agree that:/p pre class=code-block python literal-block span class=ogt;gt;gt;/span span class=mf1/span span class=o+/span span class=mf2/span span class=mf3/span /pre pis more concise, readable, and intuitive than/p pre class=code-block python literal-block span class=ogt;gt;gt;/span span class=nbint/spanspan class=p(/spanspan class=mf1/spanspan class=p)/spanspan class=o./spanspan class=n__add__/spanspan class=p(/spanspan class=mf2/spanspan class=p)/span span class=mf3/span /pre pbut may not agree that Python's decorators are a syntactic improvement. PEP 318 was hotly debated, but is final; decorators are in, and they'll be expanded in 3.0./p pThe a href=http://www.python.org/dev/peps/pep-0318/#motivation class=referencemotivation/a for decorators is compelling:/p blockquote pThe current method of applying a transformation to a function or method places the actual transformation after the function body. For large functions this separates a key component of the function's behavior from the definition of the rest of the function's external interface. For example:/p pre class=literal-block def foo(self): perform method operation foo = classmethod(foo) /pre pThis becomes less readable with longer methods. It also seems less than pythonic to name the function three times for what is conceptually a single declaration. A solution to this problem is to move the transformation of the method closer to the method's own declaration. The intent of the new syntax is to replace:/p pre class=literal-block def foo(cls): pass foo = synchronized(lock)(foo) foo = classmethod(foo) /pre pwith an alternative that places the decoration in the function's declaration:/p pre class=literal-block @classmethod @synchronized(lock) def foo(cls): pass /pre /blockquote pEven if calling code isn't exactly broken, wrapping a function more than likely changes the function's signature in some way; keeping all signature specification (such as it is in Python) at the head of a function is a good thing and requires some syntax like that of PEP 318. GIS programmers who've come to Python in the past several years via ArcGIS should get with @. If you can't or won't, that's fine too; there's another way, as Christopher shows./p pOn prettier code: all else being equal, prettier code is more readable code. It's code that can teach, that can be more easily modified by others. In some ways, better code./p pOne downside of the decorator syntax: ability to test decorators in a doctest eludes me. The following:/p pre class=code-block python literal-block span class=kdef/span span class=nfnoisy/spanspan class=p(/spanspan class=nfunc/spanspan class=p):/span span class=sd gt;gt;gt; @noisy gt;gt;gt; print foo() Blah, blah, blah 1 /span span class=kdef/span span class=nfwrapper/spanspan class=p(/spanspan class=o*/spanspan class=nargs/spanspan class=p):/span span class=kprint/span span class=sBlah, blah, blah/span span class=kreturn/span span class=nfunc/spanspan class=p(/spanspan class=o*/spanspan class=nargs/spanspan class=p)/span span class=kreturn/span span class=nwrapper/span span class=nd@noisy/span span class=kdef/span span class=nffoo/spanspan class=p():/span span class=kreturn/span span class=mf1/span /pre pfails:/p pre class=literal-block Exception raised: Traceback (most recent call last): ... @noisy ^ SyntaxError: unexpected EOF while parsing /pre pCould be ignorance on my part./p

SEXTANTE Team: SEXTANTE en la Web

Wed, 31/12/2008 - 12:36
El futuro, sin duda, está en la Web, y los clientes ligeros SIG están dejando de ser tan ligeros. Una cosa que aún no tienen son capacidades serias de análisis, pero para eso está SEXTANTE, ¿no?. :-)br /br /Para despedir el año (y ésta ya sí que va a ser la última entrada antes de irme de viaje...), os dejo a href=http://www.unex.es/eweb/sextantegis/test.htmun enlace/a para que podáis ver en qué línea estoy trabajando para que SEXTANTE dé el salto a la Web en el lado del cliente (en el del servidor, ya tenemos a la gente de GeoServer y 52N dándole a las teclas). No es nada oficial, y lo he estado haciendo en mis ratos libres, pero creo que ahí está el futuro de SEXTANTE. Y si no, tiempo al tiempo.br /br /¡Feliz año!

Sean Gillies: How to decorate Python GIS code

Tue, 30/12/2008 - 21:42
pLast month I blogged about Python logging and a href=http://sgillies.net/blog/832/python-logging/ class=referencehow to avoid using print statements/a in geoprocessing code. But your crufty old code isn't going to rewrite itself, and you're overworked already. An efficient fix would be optimal, and I've got one that only requires a little time to learn how to use Python a href=http://www.python.org/dev/peps/pep-0318/ class=referencedecorators/a./p pSay you have a module and function that does some geoprocessing work and prints various messages along the way. Something like this:/p pre class=code-block python literal-block span class=kdef/span span class=nfwork/spanspan class=p():/span span class=kprint/span span class=sStarting some work./span span class=kprint/span span class=sDoing some work .../span span class=kprint/span span class=sFinished the work .../span span class=kif/span span class=n__name__/span span class=o==/span span class=s__main__/spanspan class=p:/span span class=nwork/spanspan class=p()/span /pre pwhich, when run, produces output in your terminal:/p pre class=literal-block seang$ python work.py Starting some work. Doing some work ... Finished the work ... /pre pNow, your function is much more gnarly than work(), and rewriting it will only sap your goodwill toward its author. You'd think it would be possible to somehow wrap the work() function, catching those print statements and redirecting them to a logger – while not breaking code that calls work() – all in a reusable fashion. And it is possible, using a decorator like the 'logprints' class in the code below:/p pre class=code-block python literal-block span class=kimport/span span class=nnlogging/span span class=kfrom/span span class=nnStringIO/span span class=kimport/span span class=nStringIO/span span class=kimport/span span class=nnsys/span span class=nlogging/spanspan class=o./spanspan class=nbasicConfig/spanspan class=p(/span span class=nlevel/spanspan class=o=/spanspan class=nlogging/spanspan class=o./spanspan class=nDEBUG/spanspan class=p,/span span class=nformat/spanspan class=o=/spanspan class=s'/spanspan class=si%(asctime)s/spanspan class=s /spanspan class=si%(levelname)s/spanspan class=s /spanspan class=si%(message)s/spanspan class=s'/spanspan class=p,/span span class=nfilename/spanspan class=o=/spanspan class=s'work.log'/spanspan class=p,/span span class=nfilemode/spanspan class=o=/spanspan class=s'w'/span span class=p)/span span class=kclass/span span class=nclogprints/spanspan class=p(/spanspan class=nbobject/spanspan class=p):/span span class=kdef/span span class=nf__init__/spanspan class=p(/spanspan class=bpself/spanspan class=p,/span span class=nfunc/spanspan class=p):/span span class=c# Called when function is decorated/span span class=bpself/spanspan class=o./spanspan class=nfunc/span span class=o=/span span class=nfunc/span span class=kdef/span span class=nf__call__/spanspan class=p(/spanspan class=bpself/spanspan class=p,/span span class=o*/spanspan class=nargs/spanspan class=p,/span span class=o**/spanspan class=nkwargs/spanspan class=p):/span span class=c# Called when decorated function is called/span span class=c# save reference to stdout/span span class=nsaved/span span class=o=/span span class=nsys/spanspan class=o./spanspan class=nstdout/span span class=c# make a string buffer and redirect stdout/span span class=nnet/span span class=o=/span span class=nStringIO/spanspan class=p()/span span class=nsys/spanspan class=o./spanspan class=nstdout/span span class=o=/span span class=nnet/span span class=c# call original function/span span class=nretval/span span class=o=/span span class=bpself/spanspan class=o./spanspan class=nfunc/spanspan class=p(/spanspan class=o*/spanspan class=nargs/spanspan class=p,/span span class=o**/spanspan class=nkwargs/spanspan class=p)/span span class=c# restore stdout/span span class=nsys/spanspan class=o./spanspan class=nstdout/span span class=o=/span span class=nsaved/span span class=c# read captured lines and log them/span span class=nnet/spanspan class=o./spanspan class=nseek/spanspan class=p(/spanspan class=mf0/spanspan class=p)/span span class=kfor/span span class=nline/span span class=owin/span span class=nnet/spanspan class=o./spanspan class=nreadlines/spanspan class=p():/span span class=nlogging/spanspan class=o./spanspan class=ninfo/spanspan class=p(/spanspan class=nline/spanspan class=o./spanspan class=nrstrip/spanspan class=p())/span span class=c# return original function's return value(s)/span span class=kreturn/span span class=nretval/span span class=nd@logprints/span span class=kdef/span span class=nfwork/spanspan class=p():/span span class=kprint/span span class=sStarting some work./span span class=kprint/span span class=sDoing some work .../span span class=kprint/span span class=sFinished the work .../span span class=kif/span span class=n__name__/span span class=o==/span span class=s__main__/spanspan class=p:/span span class=nwork/spanspan class=p()/span /pre pThe statement @logprints is interpreted as decorate the immediately following function with the 'logprints' class. On import of this module, the method logprints.__init__() is called with 'work' as the sole argument. Afterwards, when work() is interpreted, logprints.__call__() is called. That method acts as a proxy for the original, now decorated, function. Here is the print capturing and logging decorator in action:/p pre class=literal-block seang$ python work2.py seang$ cat work.log 2008-12-30 12:14:44,044 INFO Starting some work. 2008-12-30 12:14:44,044 INFO Doing some work ... 2008-12-30 12:14:44,044 INFO Finished the work ... /pre pYes, you could have redirected the output of the original script in the terminal, but remember that Python's logging module sets you up to do much more./p pI've recently learned how to use parameterized decorators by following the examples in Bruce Eckel's a href=http://www.artima.com/weblogs/viewpost.jsp?thread=240845 class=referencearticle/a. I'm using one to deprecate functions in Shapely:/p pre class=code-block python literal-block span class=kimport/span span class=nnwarnings/span span class=kclass/span span class=ncdeprecated/spanspan class=p(/spanspan class=nbobject/spanspan class=p):/span span class=sdMark a function deprecated. /span span class=kdef/span span class=nf__init__/spanspan class=p(/spanspan class=bpself/spanspan class=p,/span span class=nversion/spanspan class=o=/spanspan class=s'unknown'/spanspan class=p):/span span class=bpself/spanspan class=o./spanspan class=nversion/span span class=o=/span span class=nversion/span span class=bpself/spanspan class=o./spanspan class=nmsg_tmpl/span span class=o=/span span class=sCall to deprecated function '/spanspan class=si%s/spanspan class=s', to be removed in version /spanspan class=si%s/spanspan class=s/span span class=kdef/span span class=nf__call__/spanspan class=p(/spanspan class=bpself/spanspan class=p,/span span class=nfunc/spanspan class=p):/span span class=kdef/span span class=nfwrapping/spanspan class=p(/spanspan class=o*/spanspan class=nargs/spanspan class=p,/span span class=o**/spanspan class=nkwargs/spanspan class=p):/span span class=nwarnings/spanspan class=o./spanspan class=nwarn/spanspan class=p(/spanspan class=bpself/spanspan class=o./spanspan class=nmsg_tmpl/span span class=o%/span span class=p(/spanspan class=nfunc/spanspan class=o./spanspan class=n__name__/spanspan class=p,/span span class=bpself/spanspan class=o./spanspan class=nversion/spanspan class=p),/span span class=neDeprecationWarning/spanspan class=p,/span span class=nstacklevel/spanspan class=o=/spanspan class=mf2/span span class=p)/span span class=kreturn/span span class=nfunc/spanspan class=p(/spanspan class=o*/spanspan class=nargs/spanspan class=p,/span span class=o**/spanspan class=nkwargs/spanspan class=p)/span span class=nwrapping/spanspan class=o./spanspan class=n__name__/span span class=o=/span span class=nfunc/spanspan class=o./spanspan class=n__name__/span span class=nwrapping/spanspan class=o./spanspan class=n__doc__/span span class=o=/span span class=nfunc/spanspan class=o./spanspan class=n__doc__/span span class=nwrapping/spanspan class=o./spanspan class=n__dict__/spanspan class=o./spanspan class=nupdate/spanspan class=p(/spanspan class=nfunc/spanspan class=o./spanspan class=n__dict__/spanspan class=p)/span span class=kreturn/span span class=nwrapping/span /pre pMarking a function deprecated like:/p pre class=code-block python literal-block span class=ogt;gt;gt;/span span class=kfrom/span span class=nnshapely.deprecation/span span class=kimport/span span class=ndeprecated/span span class=ogt;gt;gt;/span span class=nd@deprecated/spanspan class=p(/spanspan class=nversion/spanspan class=o=/spanspan class=s1.1/spanspan class=p)/span span class=o.../span span class=kdef/span span class=nffoo/spanspan class=p():/span span class=o.../span span class=kreturn/span span class=bpNone/span span class=o.../span /pre pcauses a warning to be emitted when the function is called:/p pre class=code-block python literal-block span class=ogt;gt;gt;/span span class=nfoo/spanspan class=p()/span span class=o//spanspan class=nUsers/spanspan class=o//spanspan class=nseang/spanspan class=o//spanspan class=ncode/spanspan class=o//spanspan class=ngispy/spanspan class=o-/spanspan class=nlab/spanspan class=o//spanspan class=nbin/spanspan class=o//spanspan class=nlabpy/spanspan class=p:/spanspan class=mf1/spanspan class=p:/span span class=neDeprecationWarning/spanspan class=p:/span span class=nCall/span span class=nto/span span class=ndeprecated/span span class=nfunction/span span class=s'foo'/spanspan class=p,/span span class=nto/span span class=nbe/span span class=nremoved/span span class=owin/span span class=nversion/span span class=mf1.1/span /pre pDeprecation-marking decorators are a great solution (which I first saw used, in a different form, in Zope 3). Why would you want to rewrite a function that's going away in the next software version?/p pDecorators can also be chained. In Shapely I've factored the check for non-nullness of GEOS geometries into a decorator and chain it with the built-in property decorator:/p pre class=code-block python literal-block span class=nd@property/span span class=nd@exceptNull/span span class=kdef/span span class=nfgeoms/spanspan class=p(/spanspan class=bpself/spanspan class=p):/span span class=kreturn/span span class=nGeometrySequence/spanspan class=p(/spanspan class=bpself/spanspan class=p,/span span class=nLineString/spanspan class=p)/span /pre pTo this effect:/p pre class=code-block python literal-block span class=ogt;gt;gt;/span span class=kfrom/span span class=nnshapely.geometry/span span class=kimport/span span class=nMultiPoint/span span class=ogt;gt;gt;/span span class=nm/span span class=o=/span span class=nMultiPoint/spanspan class=p()/span span class=ogt;gt;gt;/span span class=nm/spanspan class=o./spanspan class=ngeoms/span span class=nTraceback/span span class=p(/spanspan class=nmost/span span class=nrecent/span span class=ncall/span span class=nlast/spanspan class=p):/span span class=o.../span span class=neValueError/spanspan class=p:/span span class=nNull/span span class=ngeometry/span span class=nsupports/span span class=nno/span span class=noperations/span /pre pThe exception is raised by the 'exceptNull' decorator./p pNot much specifically about GIS here, I'll admit, but GIS programming in Python is, or should be, just Python programming. Feel free to comment if you see any interesting applications of decorators./p

Tom Kralidis: Cheers to 2008

Tue, 30/12/2008 - 17:14
Since I did this last year, I thought I’d try this again for 2008. Here’s the lowdown for my 2008: Geospatial Catalogues: the saga continues.  I have dug deeper into this area this year as part of my day-job, and find that interoperability is difficult to achieve in the OGC Catalogue space.  Clearly there is [...]

Tom Kralidis: Shiny New MapServer Website

Tue, 30/12/2008 - 01:12
Check out the new MapServer website.  Based on Sphinx, the website now has a glossary, full PDF documentation, and a snazzy front page demo to boot.  I think this will result in a much more manageable and up-to-date website for the community. Kudos to hobu for an amazing job! Written from home: [...]

SEXTANTE Team: Geomorphometry

Mon, 29/12/2008 - 17:43
Después de miles de lios y problemas varios, por fin me ha llegado a casa el ejemplar de cortesía que la gente de Elsevier me ha enviado por participar en el libro Geomorphometry. Concepts, Software and Applications. Eso quiere decir, por supuesto, que el libro ya está a la venta, así que todo aquel que lo quiera puede comprarlo en a href=http://www.elsevier.com/wps/find/bookdescription.librarians/716403/description#descriptionesta pagina/a (altamente recomendable, ya que participan personajes de la talla de Ian Evans, y además sale por unos bastante asequibles 90 euros, bastante buen precio para el tipo de libro que es).br /br /Yo en particular aporto los capítulos Geomorphomery in SAGA y Basic morphometrical parameters, y los curiosos podrán encontrar además en el prologo un par de fotos mías, cortesía del editor que es un tipo cachondo y ha añadido algún que otro comentario divertido. Me gusta que los libros de ciencia seria no sean siempre tan serios :-)br /br /No aparece SEXTANTE, pero si alguno quiere saber mas sobre lo que hay por detrás de los algoritmos de geomorfometría e hidrología de SEXTANTE, o bien mira el código fuente, o si no siempre puede comprar este libro...

Cédric Moullet: JavaScript for Object-Oriented Programmers

Mon, 29/12/2008 - 08:38
a href=http://4.bp.blogspot.com/_LDKAMHrPsbE/SVhs0py_qHI/AAAAAAAADzQ/5YH8MANoVvo/s1600-h/Lever_de_Soleil_2.jpgimg src=http://4.bp.blogspot.com/_LDKAMHrPsbE/SVhs0py_qHI/AAAAAAAADzQ/5YH8MANoVvo/s400/Lever_de_Soleil_2.jpg alt= border=0 style=cursor: pointer; cursor: hand; width: 400px; height: 300px; id=BLOGGER_PHOTO_ID_5285093814548015218 //abr /I have to confess that I'm novice in JavaScript development. I used to developp in C# (I spent several years with a friend to developp the computation part of a href=http://topobaseinsiders.typepad.com/the_topobase_insiders/2008/08/surveyor.htmlTopobase Survey/a), in C (for a a href=http://www.gis.ethz.ch/Research/gis/assets/ravis_heiligkreuz.mov3D Raster visualization package/a) or in Java (a href=http://www.inser.ch/fr-ch/defaut/ilix.htmlIlix/a).br /I heard JavaScript is object oriented, so I thought Fine, it will be a piece of cake to write some JavaScript code... As I had vacation and tons of ideas, I started to copy-paste some code. Quite easy at the the beginning, but when I wanted to organize my code and use complex code, I had to admit that I didn't understood everything what I copied... br /The light came when I read the fantastic text: a href=http://developers.sun.com/scripting/javascript/ajaxinaction/Ajax_in_Action_ApB.htmlJavaScript for Object-Oriented Programmers/a... and at the end of the lecture, I remembered what a href=http://erilem.wordpress.com/Eric /asaid to me Why do you say that JavaScript is unclear when you don't know it ? (cf. a href=http://javascript.crockford.com/javascript.htmlThe World's Most Misunderstood Programming Language/a) ...br /It's now the good time to read the a href=http://extjs.com/learn/Ext_ManualExt Manual/a.

Jackie Ng: The more Microsoft tightens its grip, the more internet users will slip through its fingers

Mon, 29/12/2008 - 08:35
I was doing a fresh install of windows xp on my old laptop for my (not-so computer literate) mum on the weekend.br /br /One of the first things she said to me was (paraphrased):br /br /So where's that a href=http://www.mozilla.org/firefoxFirefox/a that we had on the old one?br /br /So I happily went off and downloaded a copy straight away :-)

Sean Gillies: ESRI users discover setuptools and easy_install

Mon, 29/12/2008 - 06:15
pMy work is a href=http://www.spatiallyadjusted.com/2008/12/28/have-arcmap-twitter-when-scripts-are-finished/ class=referencedone/a. Or, at least, the part of my work not involved with deprogramming OGC web services cult members. And the part of my work not involved with tooting my own horn. For example, check out this blog post from 2005 (2005!) on a href=http://sgillies.net/blog/90/emailing-python-script-errors/ class=referenceemailing Python script errors/a. Prescient, huh? Too bad I didn't write or send a message not exceeding 140 characters -- a 'tweet', so to speak -- to your 'followers'. instead of or ping your enterprise's paging system. If I had done that, you'd never hear the end of it./p

Cédric Moullet: Introduction to OpenLayers in Linux.com

Sat, 27/12/2008 - 09:21
Have a look at this interesting article: a href=http://www.linux.com/feature/154814http://www.linux.com/feature/154814?/a

SEXTANTE Team: SEXTANTE se va de vacaciones

Fri, 26/12/2008 - 18:03
Para lo que seguís atentamente las novedades del programa, esta entrada es para avisaros de que no va a haber muchas en los proximos 2 meses (hasta el 28 de febrero, para ser más exactos). Como este es un geo-blog, en lugar de escribir la razón de este parón, os pongo a href=http://maps.google.com/maps/ms?hl=enamp;ie=UTF8amp;oe=UTF8amp;msa=0amp;msid=111246589297772720431.00044326d07d58ab6bf69un mapa/a que seguro que lo deja bastante claro. Es muy poco detallado y probablemente sea poco fiel a lo que realmente acabe haciendo, pero sirve como idea general ;-)br /br /Aunque quien esto escribe se va a ausentar una buena temporada, no hay que olvidar que el equipo SEXTANTE va creciendo y otros ya colaboran con el proyecto, y es probable que sigan aportando su granito de arena. La integración GeoServer-SEXTANTE sigue en marcha por parte de la gente de OpenGeo (y espero poder escribir algo interesante sobre este tema cuando regrese), y Nacho seguirá trabajando en los bindings con Kosmo. Yo por mi parte me desconecto de listas de correo, blogs y similares...aunque prometo volver con energías renovadas con que poner en práctica las muchas ideas que tengo para seguir mejorando SEXTANTE.br /br /Feliz navidad a todos, y nos vemos a la vuelta :-)

Jo Cook: Happy Hols

Wed, 24/12/2008 - 18:08
span class=Z3988 title=ctx_ver=Z39.88-2004amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adcamp;rfr_id=info%3Asid%2Focoins.info%3Ageneratoramp;rft.title=Happy+Holsamp;rft.aulast=Cookamp;rft.aufirst=Joanneamp;rft.subject=generalamp;rft.source=Computing%2C+GIS+and+Archaeology+in+the+UKamp;rft.date=2008-12-24amp;rft.type=blogPostamp;rft.format=textamp;rft.identifier=http://www.archaeogeek.com/blog/2008/12/24/happy-hols/amp;rft.language=English/span abbr class=unapi-id title=http://www.archaeogeek.com/blog/?p=294/abbr pI’m off to stuff myself silly with mince pies and red wine now, so a very Merry Christmas to everyone!/p div class=feedflare a href=http://feeds.feedburner.com/~f/ComputingGisAndArchaeologyInTheUk?a=iX6zOimg src=http://feeds.feedburner.com/~f/ComputingGisAndArchaeologyInTheUk?i=iX6zO border=0 //a a href=http://feeds.feedburner.com/~f/ComputingGisAndArchaeologyInTheUk?a=xK3soimg src=http://feeds.feedburner.com/~f/ComputingGisAndArchaeologyInTheUk?i=xK3so border=0 //a a href=http://feeds.feedburner.com/~f/ComputingGisAndArchaeologyInTheUk?a=nB6yoimg src=http://feeds.feedburner.com/~f/ComputingGisAndArchaeologyInTheUk?i=nB6yo border=0 //a a href=http://feeds.feedburner.com/~f/ComputingGisAndArchaeologyInTheUk?a=DAenoimg src=http://feeds.feedburner.com/~f/ComputingGisAndArchaeologyInTheUk?i=DAeno border=0 //a /divimg width=1 height=1 src=http://feeds.feedburner.com/~r/ComputingGisAndArchaeologyInTheUk/~4/494146241 /

OpenLayers Team: OpenLayers Holiday Present: Case Studies

Wed, 24/12/2008 - 17:14
pHere’s an OpenLayers Holiday Present, for those of you working on getting OpenLayers in more places in your organization:/p blockquotep a href=http://docs.openlayers.org/casestudies/indexOpenLayers Case Studies/a: Examples showing the usage of OpenLayers inside of organizations, and how the use of OpenLayers has helped that organization. /p/blockquote pCurrently, the number of case studies is small, but we’re working on growing these case studies so that for any particular application, there is an example of someone who has used OpenLayers to do something similar. /p pIf you’re interested in sharing a case study with the OpenLayers project, feel free to comment here, or follow up to the a href=http://openlayers.org/pipermail/users/2008-December/009486.htmlmailing list post/a made on the topic. /p pHappy Holidays! /p