Title: OpenOceanMap:
1 OpenOceanMap Deploying cross-platform
geospatial desktop applications for decision
support utilizing Python, QGIS, and QT
Presented at FOSS4G 2007 by Aaron Racicot
GIS Programmer, GISP Ecotrust
(www.ecotrust.org) aaronr_at_ecotrust.org
2Socio-Economic Data - MLPA
3Decision Support Pattern
Field Work Back at
the Office
Field Data Collection
Data Analysis
QA/QC/Feedback
Inform Decision Makers
4Old Version of Tool
5New Version of Tool
6Being Developed in the Open
7Why Open Source?
Cost Freedom Community Get Good
Karma Opportunity to innovate Very Fast
Development Cycle Very Low Barrier To Dev
Community Entry
8Tools Used
9(No Transcript)
10Requirements to build
11QT and QGIS API exposed
PyQt4 includes for python bindings to QT from
PyQt4.QtCore import from PyQt4.QtGui import
QGIS bindings for mapping functions from
qgis.core import from qgis.gui import
12Windows inherit from QT
Main window used for houseing the canvas,
toolbars, and dialogs class MainWindow(QMainWindo
w, Ui_MainWindow) def __init__(self,splash)
QMainWindow.__init__(self) required by
Qt4 to initialize the UI self.setupUi(self)
13Create a map canvas from QGIS
create map canvas self.canvas
QgsMapCanvas(self) self.canvas.setCanvasColor(QCol
or(255,255,255)) self.canvas.enableAntiAliasing(Tr
ue) self.canvas.useQImageToRender(False) self.canv
as.show()
14Hook up simple toolsZoom In
create a little toolbar for map
tool self.toolbar parent.addToolBar(MapTool") s
elf.toolbar.addAction(parent.mpActionZoomIn) sel
f.toolZoomIn QgsMapToolZoom(self.canvas,False) s
elf.toolZoomIn.setAction(parent.mpActionZoomIn)
Connect the button signal to a
slot QObject.connect(parent.mpActionZoomIn, SIGNA
L("triggered()"), self.zoomIn) Signal handler
for zoom in button def zoomIn(self) self.canvas.
setMapTool(self.toolZoomIn)
15Embedded Python Interpreter
16Bundle it all up py2exe
from py2exe.build_exe import py2exe from
distutils.core import setup opts
"py2exe" "includes" "sip",
"packages" "qgis","PyQt4", "dist_dir"
"bin", setup(options opts,
console"script" "openoceanmap.py"
) C\openoceanmapgtpython setup.py py2exe
17OpenOceanMap
18Post Interview - Raw Shapes
19Post Interview - Sum
20Other parts QA/QC
Field Work Back at
the Office
Field Data Collection
Data Analysis
QA/QC/Feedback
Inform Decision Makers
21User Driven QA/QC
22Other parts of the processDSTs
Field Work Back at
the Office
Field Data Collection
Data Analysis
QA/QC/Feedback
Inform Decision Makers
23What else am I doingDSTs
24Where to go for more info
- Ecotrust
- http//www.ecotrust.org
- Reprojected
- http//www.reprojected.com
- OSGeo
- http//www.osgeo.org
- OpenOceanMap
- http//trac.infodrizzle.org/openocean/
- PyQGIS
- Bindings - http//wiki.qgis.org/qgiswiki/PythonBin
dings - API - http//svn.qgis.org/api_doc/html/classes.htm
l - QT API - http//doc.trolltech.com/4.3/index.html
- PyQT Docs - http//www.riverbankcomputing.com/Docs
/PyQt4/pyqt4ref.html - SIP Docs - http//www.riverbankcomputing.com/Docs/
sip4/sipref.html - Desktop
- QGIS - http//qgis.org/
- GRASS - http//grass.itc.it/
- OSSIM - http//www.ossim.org/
- UDIG - http//udig.refractions.net/