state of geotools 2012
DESCRIPTION
State of GeoTools 2012 edition for Latinoware conferenceTRANSCRIPT
![Page 1: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/1.jpg)
State of GeoTools
1
![Page 2: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/2.jpg)
About your PresenterJody Garnett
ActivitiesGeoTools PMCGeoServer PSCuDig PSCOSGeo Charter MemberOSGeo Incubation ChairLocationTech
LISAsoft
LISAsoftA great system integration company helping our customers make effective use of open source spatial.
2
![Page 3: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/3.jpg)
Thanks to Previous PresentersJustin Deolivera(PMC)
OpenGeoBringing the best open source geospatial software to organisations around the world.
Andrea Aime(PMC)
GeoSolutionsGeoServer/GeoTools core developers, raster data management, map rendering, spatial data processing
3
![Page 4: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/4.jpg)
GeoToolsThe Java GIS Toolkit
4
![Page 5: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/5.jpg)
GeoTools - the Java GIS Toolkit
5
![Page 6: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/6.jpg)
About GeoTools
6
Open SourceLGPLOpen DevelopmentPublic ProcessAnyone can Play
1994 - PresentReally old for JavaStarted in Leads UniversityOSGeo Project in 2006Active / Diverse committers
![Page 7: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/7.jpg)
History1994 GeoTools (and GeoTool “Lite”)
Version 1 had more users then documentationSolution was to fire the users ...
2002 GeoTools 2We learned - GeoTools 2 leans on the OGC standardsOGC provides public standardsThey are documentation we do not have to write
Benefit: Development was faster without inventing names
2010 GeoToolsBack to simply “GeoTools”
7
![Page 8: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/8.jpg)
Traditional Diagram of Boxes
8
![Page 9: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/9.jpg)
Why Mapping
9
![Page 10: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/10.jpg)
10
Why Mapping
Map for Your Mother!
(or Dad!)
![Page 11: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/11.jpg)
Do your Parents Know what you Do?
11
![Page 12: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/12.jpg)
UML bad / Map good
12
Text GeoServer Gallery by Gérald Estadieu
![Page 13: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/13.jpg)
State of GeoTools
13
2012
![Page 14: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/14.jpg)
Community 261 Andrea Aime (GeoServer) - GeoSolutions 261 Jody Garnett (uDig) - Lisasoft 167 Simone(GeoServer) - GeoSolutions 123 Justin Deoliveira (GeoServer) - OpenGeo 114 Michael Bedward (JAITools) 66 Danielei (GeoServer) GeoSolutions 54 Ben Caradoc Davies - CSIRO 51 Niels Charlier - CSIRO 32 moovida (JGrass) - Hydrologis 28 ang05a - CSIRO 25 groldan - (GeoServer) - OpenGeo 17 mpazos - Axios 15 victortey - CSIRO 9 kengu - Norwegian Uni of Tech & Science 8 ischneider - OpenGeo 7 ianturton - University of Leeds 7 jesseeichar - CampToCamp 7 lmoran - Consultant 6 afabiani - GeoSolutions 2 alfonx (AtlasStyler) - WikiSquare
2010 Stats tracking commits
30 committers10 organisations
14
geotools-devel: 414 members total
geotools-gt2-users: 969 members total
![Page 15: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/15.jpg)
15
Summary• Ohloh summary
Q: Jump in Size?A: Move to SVN then
move to GIT
![Page 16: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/16.jpg)
Issue Tracker Activity
Created vs resolved tickets (click image for update )
16
Real Lock Down thisyear for 8.0 Release!
![Page 17: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/17.jpg)
Name ChangeDropping the “2”
17
![Page 18: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/18.jpg)
GeoTools 2 now called GeoTools• What is in a Name?
• sed/GeoTools 2.8.0/GeoTools 8.0/
• What does this mean?• Not very much - business as usual
• What does that really mean?• It means there is no plans for a “GeoTools 3” rewrite :-)• Confidence in our community• Continue our commitment to stability• Evolution handled with continuous small changes
18
![Page 19: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/19.jpg)
DocumentationIts a feature - really
19
![Page 20: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/20.jpg)
User Guide - Before
20
![Page 21: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/21.jpg)
User Guide - After
21
![Page 22: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/22.jpg)
Code Examples - Before (Wiki)
Compile?What Version?When?
All very good questions with no clear answer.
22
private synchronized static FeatureSourcebuildMemoryFeatureSource(FeatureCollection coll, String typename,FeatureType currentFeatureType, AttributeType newTypes[]){
FeatureType ftState=null; MemoryDataStore MStore=null; try { MStore = new MemoryDataStore(); //---- current attributes AttributeType currentTypes[] = currentFeatureType.getAttributeTypes(); //---- new array of attributes = current array+ new attributes AttributeType typesNew[] = newAttributeType[currentTypes.length+newTypes.length]; for(int i=0;i<currentTypes.length;i++){ typesNew[i] = currentTypes[i]; } for(int i=0;i<newTypes.length;i++){ typesNew[currentTypes.length+i] = newTypes[i]; } ftState = FeatureTypeFactory.newFeatureType(typesNew, typename); MStore.createSchema(ftState); Iterator iterator = coll.iterator(); FeatureCollection newColl = FeatureCollections.newCollection(); Feature feature, newFeature; Object[] objs; try { for( int count=0; iterator.hasNext(); count++) { feature = (Feature) iterator.next();
![Page 23: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/23.jpg)
private synchronized static FeatureSourcebuildMemoryFeatureSource(FeatureCollection coll, String typename,FeatureType currentFeatureType, AttributeType newTypes[]){
FeatureType ftState=null; MemoryDataStore MStore=null; try { MStore = new MemoryDataStore(); //---- current attributes AttributeType currentTypes[] = currentFeatureType.getAttributeTypes(); //---- new array of attributes = current array+ new attributes AttributeType typesNew[] = newAttributeType[currentTypes.length+newTypes.length]; for(int i=0;i<currentTypes.length;i++){ typesNew[i] = currentTypes[i]; } for(int i=0;i<newTypes.length;i++){ typesNew[currentTypes.length+i] = newTypes[i]; } ftState = FeatureTypeFactory.newFeatureType(typesNew, typename); MStore.createSchema(ftState); Iterator iterator = coll.iterator(); FeatureCollection newColl = FeatureCollections.newCollection(); Feature feature, newFeature; Object[] objs; try { for( int count=0; iterator.hasNext(); count++) { feature = (Feature) iterator.next();
SimpleFeatureSource alter(SimpleFeatureCollection collection, String typename, SimpleFeatureType featureType, final List<AttributeDescriptor> newTypes) { try { // Create target schema SimpleFeatureTypeBuilder buildType = new SimpleFeatureTypeBuilder(); buildType.init(featureType); buildType.setName(typename); buildType.addAll(newTypes); final SimpleFeatureType schema = buildType.buildFeatureType(); // Configure memory datastore final MemoryDataStore memory = new MemoryDataStore(); memory.createSchema(schema); collection.accepts(new FeatureVisitor() { public void visit(Feature feature) { SimpleFeatureBuilder builder = new SimpleFeatureBuilder(schema); builder.init((SimpleFeature) feature); for (AttributeDescriptor descriptor : newTypes) { builder.add(DataUtilities.defaultValue(descriptor)); } SimpleFeature newFeature = builder.buildFeature(feature.getIdentifier().getID()); memory.addFeature(newFeature); } }, null); return memory.getFeatureSource(typename);
Code Examples - After (Sphinx)
Pulled Live from Source!
GeoTools Version at the Top of the Page!
23
![Page 24: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/24.jpg)
Code Examples - Example
24
Used for both Java code examples and also configuration files such as maven pom.xml.
![Page 25: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/25.jpg)
Diagrams - Before (Visio)
25
![Page 26: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/26.jpg)
Diagrams - After (Inkscape)
26
![Page 27: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/27.jpg)
Class Diagrams - Before
27
![Page 28: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/28.jpg)
Class Diagrams - After (Object Aid)
28
![Page 29: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/29.jpg)
Tutorials - Before
29
![Page 30: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/30.jpg)
Tutorials - After
30
![Page 31: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/31.jpg)
Advanced TutorialsFunction Finally a nice quick guide to how to create a function!
AbstractDataStore Tutorial - Property DataStore The classic updated for GeoTools 8.
ContentDataStore Tutorial - CSVDataStore New kid on the block; leaner; meaner and ready.
Welcome Introduction for different developer communities.
Update Have not used GeoTools in a while? Guide to updating.
31
![Page 32: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/32.jpg)
Welcome Geomajas
32
![Page 33: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/33.jpg)
Welcome GeoServer
33
![Page 34: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/34.jpg)
Welcome uDig
34
![Page 35: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/35.jpg)
Documentation HighlightsDetails- 291 “Pages”- longest page is 36 pages printed out on paper- Over 100,000 words- Written from Feb through to May- Accounts for every page of the wiki
New features- Extensive FAQ- whole project javadocs- module by module reference- plugins organised by module- build instructions
35
![Page 36: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/36.jpg)
Referencing(do you know where your data is?)
36
![Page 37: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/37.jpg)
Referencing• Ellipsoids, datum, map projections
• Embedded EPSG database, over 5000 supported codes (gt-epsg-hsql module)
• Reprojection utilities
37
Geometry g = ...;CoordinateReferenceSystem wgs84 = CRS.decode("EPSG:4326"); CoordinateReferenceSystem utm32n = CRS.decode("EPSG:32632");Geometry gtx = JTS.transform(g);...SimpleFetureCollection fc = featureSource.getFeature();SimpleFeatureCollection fcTx = new ReprojectingFeatureCollection(fc, utm32n);
![Page 38: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/38.jpg)
Projections
Mollweide
Eckert IV
Winkel Tripel
Robinson
Equidistant conic
Old projections
AitoffAlbers Equal A.CassiniSoldnerCylindrical Equidist.KrovakLambert Conf.MercatorOblique MercatorOrthogonalPolyconicStereographicTransverse Mercator 38
New
![Page 39: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/39.jpg)
Vector PluginsBoth direction and magnitude!
39
![Page 40: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/40.jpg)
Vector Data Sources• Application schema*• ArcSDE• Aggregating *• CouchDb *• CSV *• DXF *• Excel• Edigeo• PreGeneralized• SimpleFeatureService *• Shapefile (directory of)• WFS
• JDBC• DB2• H2 spatial• MySQL• Postgis• Oracle • SQL Server• Spatialite *• Teradata *• Ingress
name* = new entry name = “unsupported”
40
![Page 41: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/41.jpg)
JDBC DataStore "NG"• JDBC stores:
• common base• over 200 ready to use tests, just prepare the test data and
run• Parametric SQL views: define a new data source as a raw
query
• Extensions for native joins
select ST_Union(the_geom) as geom from countrieswhere REGION = %region%
41
![Page 42: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/42.jpg)
Application schema• Complex feature support• Recent development by CSIRO• Feature chaining, polymorphism• Better performance (native DBMS joins), memory use• Usable as vector data source, GML encoding, rendering
42
![Page 43: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/43.jpg)
Raster Formatspixel power
43
![Page 44: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/44.jpg)
Raster Data Sources• ArcGrid• ArcSDE • GeoTiff• GRASS *• GTopo30• Image Mosaic• Image Mosaic JDBC *• Image Pyramid• Image + World file• JP2 direct Kakadu• Matlab• Image collection *
• imageio-ext based• AIG• DTED• ECW• EnviHdr• ErdasImg• EsriHdrJP2• MrSID• NITF*• RPFTOC
name * = new entryname = unsupported land
44
![Page 45: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/45.jpg)
Non geo-referenced data
45
![Page 46: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/46.jpg)
Image mosaic
46
![Page 47: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/47.jpg)
RenderingGotta see it to believe it
47
![Page 48: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/48.jpg)
Rendering
48
![Page 49: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/49.jpg)
Layers
49
• FeatureLayer:any vector + Style(shapefile, spatial db, WFS, ...)
• GridCoverageLayer:in memory raster grid
• GridReaderLayer:dynamic raster read from disk(leverage overviews and tiling)
• WMSLayer:get maps from a WMS server
• DirectLayer: (new feature!)roll your own custom paint method
![Page 50: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/50.jpg)
• Style API is inspired by SLD 1.0 and SE 1.1: • a style is a complex, deep object graph
• StyleBuilder provides a set of hierarchical builders• Build a style easily, just pick the portion you need
StyleBuilder
50
Style style = new StrokeBuilder().color(Color.BLUE) .width(3).dashArray(5, 2) .buildStyle();
![Page 51: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/51.jpg)
StyleBuilder
51
• StyleBuilder allows you to freely mix CQL expressions• Provides “literate” methods allowing you to define your style
using your IDE autocomplete
fts = new FeatureTypeStyleBuilder();fts.rule().filter("pop < 200000") .polygon().fill().colorHex("#66FF66");fts.rule().filter("pop between 200000 and 500000") .polygon().fill().colorHex("#33CC33");fts.rule().filter("pop > 500000") .polygon().fill().colorHex("#009900");
![Page 52: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/52.jpg)
Showing the Map Part 1To start we get the data and create a StyleIn this case we open a file and generate a style from the schema
Similar to SE 1.1 transformations, but open-ended,
52
FileDataStore store = FileDataStoreFinder.getDataStore(file);SimpleFeatureSource featureSource = store.getFeatureSource();SimpleFeatureType schema = featureSource.getSchema();
Style style = SLD.createSimpleStyle( schema );
![Page 53: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/53.jpg)
Showing the Map Part 2Create Map and use JMapFrame to display
Similar to SE 1.1 transformations, but open-ended,
MapContent map = new MapContent();map.setTitle("Quickstart");Layer layer = new FeatureLayer(featureSource, style);map.addLayer(layer);
JMapFrame.showMap(map);
53
![Page 54: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/54.jpg)
Pluggable Mark Factory TTF
<Mark> <WellKnownName>ttf://Wingdings#0xF054</WellKnownName> <Fill> <CssParameter name="fill">#000088</CssParameter> </Fill></Mark>
54
![Page 55: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/55.jpg)
Pluggable Mark Factory Slash
<Fill> <GraphicFill> <Graphic> <Mark> <WellKnownName>shape://slash</WellKnownName> <Stroke> <CssParameter name="stroke">0xAAAAAA</CssParameter> </Stroke> </Mark> <Size>16</Size> </Graphic>
55
![Page 56: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/56.jpg)
Pluggable Mark Factories Interface
public interface MarkFactory { public java.awt.Shape getShape( Graphics2D graphics, Expression symbolUrl, Feature feature) throws Exception;}
org.geotools.renderer.style.WellKnownMarkFactoryorg.geotools.renderer.style.TTFMarkFactoryorg.geotools.renderer.style.ShapeMarkFactory
56
![Page 57: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/57.jpg)
Geometry transform Arrow Head
<PointSymbolizer> <Geometry> <ogc:Function name="endPoint"> <ogc:PropertyName>the_geom</ogc:PropertyName> </ogc:Function> </Geometry> <Graphic> <Mark> <WellKnownName>shape://arrow</WellKnownName> <Fill/> <Stroke/> </Mark> <Rotation> <ogc:Function name="endAngle"> <ogc:PropertyName>the_geom</ogc:PropertyName> </ogc:Function> </Rotation> </Graphic></PointSymbolizer>
Similar to SE 1.1 transformations, but open-ended,
57
![Page 58: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/58.jpg)
Geometry transform Drop Shadow
<Geometry> <ogc:Function name="offset"> <ogc:PropertyName>the_geom</ogc:PropertyName> <ogc:Literal>0.00004</ogc:Literal> <ogc:Literal>-0.00004</ogc:Literal> </ogc:Function> <Geometry>
58
![Page 59: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/59.jpg)
Based on functions, a pluggable extension point
Geometry transform Implementation
public class FilterFunction_offset extends FunctionExpressionImpl implements GeometryTransformation {...public Object evaluate(Object feature) { Geometry geom = getExpression(0).evaluate(feature, Geometry.class); Double offsetX = getExpression(1).evaluate(feature, Double.class); if(offsetX == null) offsetX = 0d; Double offsetY = getExpression(2).evaluate(feature, Double.class); if(offsetY == null) offsetY = 0d;
if (geom != null) { Geometry offseted = (Geometry) geom.clone(); offseted.apply( new OffsetOrdinateFilter(offsetX, offsetY)); return offseted; } else { return null; }
59
![Page 60: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/60.jpg)
Transform data before rendering. Contour extraction, wind maps, geometry clustering. Pluggable, add your function!
Rendering Transform Wind Map
<FeatureTypeStyle> <Transformation> <ogc:Function name="gs:RasterAsPointCollection"> <ogc:Function name="parameter"> <ogc:Literal>data</ogc:Literal>
60
u v
![Page 61: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/61.jpg)
Rendering Transform Contour Extract
<FeatureTypeStyle> <Transformation> <ogc:Function name="gs:Contour"> <ogc:Function name="parameter"> <ogc:Literal>data</ogc:Literal> </ogc:Function> <ogc:Function name="parameter"> <ogc:Literal>levels</ogc:Literal> <ogc:Literal>1100</ogc:Literal> <ogc:Literal>1200</ogc:Literal> .... <ogc:Literal>1700</ogc:Literal> <ogc:Literal>1800</ogc:Literal> </ogc:Function> </ogc:Function> </Transformation>
61
![Page 62: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/62.jpg)
XML(what could be as fun as rendering? not xml)
62
![Page 63: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/63.jpg)
XML
Technology Parse Encode Supports
GeoTools SAX SAX,DOM Filter, GML, SLD
GeoTools DOM DOM Filter, GML, SLD
GeoTools Transform XML Filter, GML, SLD
JAXB SAX,DOM n/a
XDO(Schema Assisted
Generation 1)SAX,DOM XML Filter, GML, SLD, WMS, WFS1.0,
XSD
GTXML(Schema Assisted
Generation 2)SAX,DOM XML Filter, GML, SLD, WMS, WFS1.0,
WFS 1.1, WPS, XSD, and more...
63
![Page 64: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/64.jpg)
Schema Assisted Parsing
64
GeoTools Specific Technology; makes use of the schema information to minimise the code you need to write.You teach GeoTools how to “bind” a object once; and it will work in any schema that uses those objects.
![Page 65: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/65.jpg)
Schema Assisted Encoding
65
The same approach is used when encoding objects; basically using the schema as a cheat sheet to sort out what to emit next.
![Page 66: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/66.jpg)
Extensionshigh value functionality built on top of GeoTools
66
![Page 67: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/67.jpg)
BrewerWraps up the ColorBrewer for Java Developers; generating a normal Style you can use in GeoTools; or export to other applications.FeatureTypeStyle style = StyleGenerator.createFeatureTypeStyle( groups, ff.propertName(“population”), colors, "Generated Style", schema.getGeometryDescriptor(), StyleGenerator.ELSEMODE_IGNORE, 0.95, stroke);
67
![Page 68: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/68.jpg)
Because getting there is half the fun.
Graph
68
BasicLineGraphGenerator graphGen = newBasicLineGraphGenerator();for ( MultiLineString line : lines ) { graphGen.add( line );}Graph graph = graphGen.getGraph();
EdgeWeigter weighter = new EdgeWeighter() { public double getWeight(Edge e) { SimpleFeature feature = (SimpleFeature) e.getObject(); Geometry geometry = (Geometry) feature.getDefaultGeometry(); return gometry.getLength(); }};DijkstraShortestPathFinder pf =new DijkstraShortestPathFinder( graph, start, weighter );
pf.calculate();Path path = pf.getPath( destination );
![Page 69: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/69.jpg)
ProcessStill in Progress
69
![Page 70: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/70.jpg)
ProcessAnnotation Based No more filling in massive data structures; GeoTools will generate based on annotations against a static method.
Bridge Functions and Process Used for rendering transformations; allowing you much greater control of geometry prior to display.
Massive influx of High Quality Processes The full range of processes defined by GeoServer have been back ported resulting in some of the best examples of how to use GeoTools.
WPS Client Still unsupported ... nothing to see here 70
![Page 71: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/71.jpg)
Tutorial Coming soon!
Process Annotation Example
71
@DescribeProcess(title="Buffer", description="Buffers a geometry using distance")@DescribeResult(description="The buffered geometry")static public Geometry buffer( @DescribeParameter(name="geom", description="The geometry to be buffered") Geometry geom, @DescribeParameter(name="distance", description="The distance") double distance) { return geom.buffer(distance);}
![Page 72: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/72.jpg)
Application SchemaGraduated this year!
72
![Page 73: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/73.jpg)
Application SchemaAuScope has completed their work on Application Schema.This is an interesting module that is able to take information from several DataStores and "map" the values into the correct shape for publication against an application schema.
This is used when the data format used cannot be generated and must exactly match that provided by a standards body or expert community.
Thanks to Ben and the AuScope team for their dedication on this very challenging problem.
73
![Page 74: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/74.jpg)
Teradata DataStoreAnother spatial database into the mix!
74
![Page 75: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/75.jpg)
Terradata DataStoreJesse Eichar (Camptocamp) took this module from development, a quick unsupported beta period and to supported status in record time.
75
![Page 76: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/76.jpg)
EFeatureMapping between Eclipse Modelling Framework
and GeoTools Feature Model.
76
![Page 77: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/77.jpg)
EFeature• Kenneth Gulbrandsoy has been an amazingly active
addition to the GeoTools community. Kenneth is a PHD student from Norwegian University of Technology and Science.
• EFeature datastore allows teams to leverage their Java objects into the GeoTools dynamic feature system
• Adding Spatial capabilities to EMF models• 98% finished• Goal is to make it a supported plugin in GeoTools• Docs are comming soon
77
![Page 78: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/78.jpg)
Grass Raster readerCreated and Graduated this year!
78
![Page 79: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/79.jpg)
Grass Raster ReaderAndrea Antonello has pulled together support for the GRASS raster format and donated it to the GeoTools library (going through the effort to match our quality assurance and documentation standards).
79
![Page 80: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/80.jpg)
TemporalMerged into gt-main as core feature
80
![Page 81: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/81.jpg)
TemporalThe temporal module has provided an enhanced range of time and time range operations.Justin has gathered this up into the gt-main module as one of the cornerstones for WFS 2.0 Filter support.
81
after = ff.after( ff.property("date"), ff.literal(temporalInstant));
within = ff.toverlaps( ff.property("constructed_date"), ff.literal(period));
![Page 82: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/82.jpg)
Query ImprovementsJustin takes on WFS 2.0
82
![Page 83: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/83.jpg)
Query ImprovementsJoin
Justin has sorted out how Joins will be represented - finally!Function
Between Jody and Justin Functions now have excellent runtime documentation. Arguments are now listed by name; with specific type information.
Filter Evaluation over a CollectionNiels (AuScope) has sorted out this one allowing you to control how many matches are required (one, any, all) when comparing groups of values.
TemporalAs mentioned temporal filter support has been added; seriously increasing the number of operations available.
83
![Page 84: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/84.jpg)
Swing and SWT(Getting your GUI on)
84
![Page 85: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/85.jpg)
Swing The much loved gt-swing module has been used for years to make the GeoTools tutorials visual. At long last, it is looking to graduate to supported status.
Michael Bedward has been a star contributor this yearcleaning up the code base,making it testable, all thewhile answering questionson the email list.
85
![Page 86: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/86.jpg)
Swing Major clean up of the internals!JMapPane rewritten
Ported to Layer, FeatureLayer, RasterLayer etc...DirectLayer support for Animation / map decorationsNice clean background rendering
Ability to add new InfoTool classes via pluginSupport for InternationalisationSupported Status?
Docs and Test Coverage improving by the day
Coming Soon: Concurrent rendering
86
![Page 87: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/87.jpg)
SWTA new addition to the project is a port of the gt-swing code to an easy to use component for SWT.
Andrea Antonello (HydroloGIS) was responsible for this work and it looks like gt-swing and gt-swt will be able to share the same data models as time progresses.
87
![Page 88: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/88.jpg)
What is Past?Reflections on departed modules
88
![Page 89: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/89.jpg)
Recently DroppedJDBCDataStore and PostGIS-Versioned
The initial proof of concept JDBC datastore created in 2003 has finally been replaced. We had a good 2 year deprecation cycle to allow migration.
GeoAPIThe "opengis" interfaces have been folded back into the library allowing us to take responsibility, improve javadocs and dive into filter improvements for WFS 2.0 work.
89
![Page 90: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/90.jpg)
What is Next?Ideas on the future of GeoTools
90
![Page 91: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/91.jpg)
Future PlansProcess, Process, Process
Web Processing Service is finally attracting funding, with it comes a lot of new process ideas, implementations and directions. Hold on it is going to be a wild ride!
Prep for Java 7 try-with-resourceUpdate our API to mark which items are “Closable”
FeatureCollection as a Result SetFor Java 5 we needed to prevent FeatureCollection extending java.util.Collections - so that iterators could be closed.We are completing this work by removing the deprecated method names (add, remove, etc...)This will allow FeatureCollection to be a simple result set.
91
![Page 92: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/92.jpg)
Future RnD IdeasOSGi Bundles
Branch started to explore this topic with contributors from several projects.
AndroidJody had a chance to look at what it would take to port GeoTools to Android. If you are interested in doing the work talk to us at the Code Sprint.
3DA number of teams hook GeoTools to 3D engines each year. Anyone want to do it as part of the community?
Geometry Curves and 3D Tisham Dhar (CSIRO) evaulated several alternatives. GeoTools has components of ISO 19107 provided by SYS Technologies and the of University Fachhochschule Koeln.MIL2525B
Another classic we revisit each year - any takers? 92
![Page 93: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/93.jpg)
Open DevelopmentIs so much more than open source
93
![Page 94: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/94.jpg)
Get Involved - Open DevelopmentGeoTools provides clear “time boxed” procedures allowing you to plan your community involvement.
Contribute Clean patch + test + description = contribution
Request for Change Open RFC procedure, time boxed allowing commit three days after submitting (we have to meet deadlines as well).
Release Public release process - make a release to match your projects schedule and deadlines.
Procedures are in place just add developers (or money).94
![Page 95: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/95.jpg)
Get Involved - Unsupported AreaUnsupported is a scratch pad used to work on new ideas.
Easy Commit Access Send email and read the developers guide; a PMC member will help you with the paper work.
Unsupported does not mean unloved You get commit access to your module, and your work deployed to maven nightly, and published each release.
Formal review only when Ready Ask for a QA / Docs check at any time and graduate to a formal supported part of the library.
95
![Page 96: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/96.jpg)
Predictable Release Cycle• The “wait” for GeoTools 8 was far too long.
• GeoTools is switching to a 6 month release cycle:
• Stable• monthly releases• New features that do not change the API or Stability
• Master• 1-4: open for change proposals• 5: release candidate• 6: final release!
96
![Page 97: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/97.jpg)
State of GeoToolsAny Questions? Any time?
97
![Page 98: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/98.jpg)
Upstream ProjectsThanks! We don't Do this alone
98
![Page 99: State of GeoTools 2012](https://reader035.vdocument.in/reader035/viewer/2022062307/555077deb4c90524138b50bd/html5/thumbnails/99.jpg)
Upstream ProjectsJTS Topology Suite (JTS) Provides the excellent Geometry support we enjoy in GeoTools. Thanks Martin!imageio-ext Provides geospatial raster formats to the Java Advanced Imaging project we use for coverages. Thanks Simone and GeoSolutions.jaitools Another extension to Java Advanced Imaging this time thanks to Michael Bedward. Really fun for processing and generating rasters.
99