Title: Hackers of the World
1- Hackers of the World!
- JUG Presentation
Jody Garnett
2Jody Garnett
- uDig Development Team Leader
- GeoTools Project Management Committee (PMC)
Member - GeoServer contributor
- OSGEO Member
- OGC Member
- Hobbies
- Swordsmanship
- Swing dancing
3Refractions Research
- Victoria, BC, Canada
- Spatial Systems Consulting
- Open Source Software
- PostGISuDig / GeoTools
4What is Geospatial?
- Something you can draw on a Map
- It lets us play with BIG DATA
- This means we can do some real computer science
- It is also visual
- When I have a bug the map is upside down (or
sideways or missing) - My mom can understand what I do
5Why Open Source Geospatial
- Geospatial is hard
- Open source makes it possible (for me)
- Access to .. standards, experts and data
- It is a calling card
- Did you hear of me (or Refractions) because of
uDig and PostGIS? - And the rest
- Shared code, ability to hack, free, ability to
accept patches,
6Java GeoSpatial
- There are lots of players
- GeoTools
- GeoServer
- uDig
- GeoNetwork
-
- But what can you do with them?
7Geospatial Architecture
- Spatial Database
- Concurrency
- Transactions
- Seamlessness
- Internet Publishing
- Feature Access
- Map Access
- Data Manipulation
- Direct Access
- Editing
- Cartography
8ESRI Architecture
ArcSDE
9Open Source Architecture
?
PostGIS
10GeoTools ( GeoAPI)
- Where useful code lives
- GeoTools- Implements Standards
- http//docs.codehaus.org/display/GEOTOOLS
- GeoAPI Interfaces for Standards
- http//docs.codehaus.org/display/GEOAPI
11GeoTools Details
- Part of the OSGEO (woot!)
- Project Management Committee
- Module Maintainers for
- Oracle, DB2, Rendering, Shapefile
- A number of organizations
- but responsibility is always to the individual
12GeoTools James MacGill
- Hobby
- Baby (Rebbeca)
- Working
- Google (now)
- Contact
- geotools-gt2-users_at_lists.sourceforge.net
- geotools-devel_at_lists.sourceforge.net
13GeoServer
- The Open Planning Project
- A J2EE project implementing some of the open
standards - Web Map Server
- for drawing maps
- Web Feature Server
- get the real data
- and change it
14GeoServer Dave Blasby
- History 10 GIS
- PostGIS
- Contact
- dblasby_at_openplans.org
- geoserver-devel_at_lists.sourceforge.net
- http//geoserver.sourceforge.net/
- What he is Doing
- GeoServer Lead
- GeoServer 1.3
- GeoWiki
- Demo site
- What he wants to do
- Feature Versioning
- Community Planning
- Hobbies
- Scuba, Travel
15GeoServer Chris Holmes
- History
- GeoServer in 2002
- z39.50 support
- Released GeoServer 1.0.0
- What he is Doing
- Just visited Africa
- New York Now
- What he wants to do
- Set up Open Spatial Infrastructure using
Open-Source (see EOGEO on web) - Hobbies Travel
- Contact cholmes_at_openplans.org
16Justin Deoliver
- Contact
- jdeoliver_at_refractions.net
- History
- JUMP Developer
- uDig Devleoper
- Known for
- Mad Plans
- What he wants to do
- OpenGL Rendering System
- GeoServer Framework
17GeoServer Demo
- I could talk more but lets see something work
- You are going to see
- GeoServer
- MapBuilder
18Eclipse
- Eclipse - a universal tool platform
- Extensible IDE
- Java based
- Open Source
- The Eclipse Platform
- Provides building blocks and a foundation for
creating tools (plug-ins). - Plug-ins are independent subsystems that
contribute functionality to your application.
19Eclipse RCP
- RCP - Rich Client Platform
- Eclipse RCP is based on a plug-in architecture.
- Group of plug-ins work together within your
Eclipse environment.
- RCP Runtime provides a Platform that acts a
mediator and helps plug-ins get along.
20Eclipse RCP
Eclipse RCP is more than an application framework
system, it is an platform that not only allows
extension via plug-ins, but also organizes the
plug-ins into a rational structure.
vs
21Application Framework
- You may be familiar with working an Application
Frameworks - Customize through sub-classing and tweaking
- Your own contributions are always second rate,
not include in the documentation etc - It took me three months to learn MFC
- Pros
- Very easy to set up a workingapplication
- Cons
- Until you want to do somethingthe outside the
intended use
22Application Platform
- Eclipse RCP is a platform lets look at the
differences - Customize through extentions
- Advertise how you can be customized through
extention points - Your own contributions are on equal termswith
everything else. - It took me an a couple of days to learnEclipse
RCP. - Pros
- Wow is this great
- Cons
- Need to take a fair bit ofresponsibility when
letting othersextend your work.
23Eclipse RCP
Text
Help
Update
Compare
Debug
Search
Team/ CVS
IDE Text
Primary Application
(optional)
(optional)
(optional)
IDE
UI (Generic Workbench)
Resources
Eclipse RCP
JFace
(optional)
SWT
Runtime (OSGi)
24Everything is a Plug-in
- Everything is a plug-in even applications
Plug-ins
. . .
25Eclipse Plug-ins
- Plug-in
- An independent tool that provides a service
within your application environment. - Represented by an instance of a plug-in class.
26Plugin.xml
- Plugin.xml and Manifest file
- Defines your plug-in and contains settings needed
to activate it at runtime.
- Must include the name, id, version, and vendor
name of the plug-in.
- Optional definitions also include elements such
as a plug-in class name and extension points.
27Plugin.xml
Your Eclipse workbench
plugin.xml
28Plugin.xml
Code Sample
ltplugin name "Readme File Editing Tool" id
"org.eclipse.ui.examples.readmetool" version
"0.9" provider-name Object Technology
International, Inc. class"org.eclipse.ui.example
s.readmetool.ReadmePlugin"gt ...
29Plugin.xml
Code Sample
ltrequiresgt ltimport plugin"org.eclipse
.ui /gt lt/requiresgt ...
30Plugin.xml
Code Sample
ltextension point"org.eclipse.ui.views"gt ltview
id"org.eclipse.examples.readmetool.
readmeplugin " namereadme class
"org.eclipse.ui.examples.readmetool.ReadmePlugin
"/gt lt/extensiongt
31Extensions
ToolExtentions
Eclipse Runtime
32Eclipse EMF
- Eclipse Modelling Framework (EMF)
- complex API
- Modeling people will try and talk to you
- Why bother?
- Integrates modelling into programming environment
- Allows rapid changes in application model
- Weeks versus Hours
- Drag-n-drop, events, persistence all built-in
33Eclipse EMF
Compile
Edit
Debug
34Questions
- Is everything clear?
- Still awake?
- Additional details after demo
35uDig
- User Friendly Desktop Internet GIS
- Eclipse RCP Based
- Great for Customization
- Great Platform for your own App
- We have some cool toys
- Java 5, Adaptive rendering, happy community
36Jesse Eichar
- Known For
- Lead Developer
- RCP
- EMF
- Rendering
- Contact
- jeichar_at_refractions.net or freenodeudig
37Richard Gould
- Known For WMS, Silly, Strange Music
38uDig Demo
- Okay lets see this work
- You will see
- Local Data
- Remote Data
- Use of Standards
- Pretty Colours (Themes)
39uDig Architecture
Application
uDig
Eclipse RCP
Platform
EMF
GEF
GeoTools
PostGIS
WMS
WFS
GML
Shape
Libraries
Java Topology Suite (JTS)
Java 1.5
Language
Java Image I/O
JAI
40Where is the Data
- The Catalog contains a list of Services, which
each contain resources.
41A bit of abstraction
42Extensible Interface Pattern
- The IResolve class acts as an extensible
interface within the GIS Platform.
Super Class
extends
43IResolve
- same design as Eclipse IResource class.
- IResolve works as a service handle a proxy for
remote content.
- It can be resolved into real objects, such as
services.
44IResolve
- The following are the core responsibilities of
IResolve
- IResolve.getIdentifier() is a unique URL used to
identify this resource
- IResolve.canResolve( Class type ) is a non
blocking check to see if a type of resource is
available
- IResolve.resolve( Class type, IProgressMonitor
monitor ) will aquire the request resource
45Questions?
46GeoTools
47GeoTools WMS Client
- We wrote generic WMS client
- WMS has 4 versions!
Web Map Server
Specification
1.0.0
1.1.0
1.1.1
1.3.0
48GeoTools WFS Client
- We wrote generic WFS client
- GML handling is hard!
Code Generator
Parser
XML Schema
Source Code
Compile
Classic XML Schema Processing System
JVM
49GeoTools WFS Client
- We wrote generic WFS client
- GML handling is hard!
Parser
Schema
XML Data Objects(XDO)
Our XML Schema Processing System
JVM