Transcript
Page 1: LocationTech Projects

LocationTechProjects

Page 2: LocationTech Projects

IntroductionGetting the party started

Page 3: LocationTech Projects

Jody GarnettSenior Software Engineer

BoundlessProjects:GeoTools, GeoServer,uDigEclipse FoundationLocationTech PSC, Technology ProjectOSGeoIncubation Chair, GeoTools Officer

Welcome

Andrew RossDirector, Ecosystem Dev.

Eclipse FoundationGroupsLocationTech working groupScience working groupLong Term Support (LTS) programCommon Build Infrastructure programBusiness DevelopmentMembership Services

Page 4: LocationTech Projects

LocationTech

“LocationTech is a working group developing advanced location aware technologies.”

Page 5: LocationTech Projects

Members

Strategic

Participating

Guest

Page 6: LocationTech Projects

Libraries

Page 7: LocationTech Projects

Martin DavisSenior Technical Architect

Vivid Solutions Inc.Projects:JTS, JEQL, JCS, Proj4J, OpenJUMP GISOSGeoCharter Member

JTS Topology Suite

Vivid Solutions

Page 8: LocationTech Projects

JTS Topology Suite● Java API for Geometry

● OGC Standard: Simple Features for SQL● One of the “Hard Parts” of Geospatial

● License● Eclipse Distribution License (== BSD !)● Eclipse Public License

● History● Version 1.0 - 2001● Version 1.13 - 2012● Version 1.14 - 2014 Q4

Page 9: LocationTech Projects

Key to Open Source SpatialProject Language

JTS Topology Suite Java all JVM

LanguagesJSTS JavaScript (Partial Port)Net Topology Suite C#

GEOS C/C++Shapely Python (via GEOS)

RGeo Ruby (via GEOS)

r-GEOS R (via GEOS)

Page 10: LocationTech Projects
Jody Garnett
Would love to have a more up to date copy of this
Page 11: LocationTech Projects

JTS Geometry Model (OGC 99-049)

Page 12: LocationTech Projects

● Spatial Predicates● Intersects, Contains, Within, Covers, etc

● Geometry Validation● Overlay Boolean operations

● Intersection, Union, Difference, SymDifference● Metrics

● Length, Area, Distance, Hausdorff Distance● Buffer

● Pos/Neg, Cap/Join styles● Polygonization● Delaunay Triangulation● Voronoi Diagram

JTS Functions

Page 13: LocationTech Projects

Geometry Example

GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory();

Coordinate coord = new Coordinate(1, 1);Point point = geometryFactory.createPoint(coord);

Page 14: LocationTech Projects

WKT Example

GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory();WKTReader reader = new WKTReader(geometryFactory);

Point point = (Point) reader.read("POINT (1 1)");

Page 15: LocationTech Projects

Buffer Example

GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory();WKTReader reader = new WKTReader( geometryFactory );

LineString line = (LineString) reader.read("LINESTRING(0 2, 2 0, 8 6)");Geometry buffer = line.buffer( 0.75 );

Page 16: LocationTech Projects

JTS Test Builder

Page 17: LocationTech Projects

Mobile Map Tools

Manuel de laCalle Alonso

ProjectsMobile Map ToolsEclipse FoundationLocationTech

Page 18: LocationTech Projects

Mobile Map Tools• SDK For native mobile applications.• Supports:

• Mobile maps in 2D, 2.5D and 3D• Works on iOS, Android, webGL

• Built using C++ and translated to Java and JavaScript• License:

• Eclipse Distribution License 1.0 (BSD)

Page 19: LocationTech Projects

Capabilities

Vector tiles:● Raster● Vectorial● 3D models● offline maps● complex symbology● native

Page 20: LocationTech Projects

New: Vector Tiles● Postgis● GeoJSON pyramid● Native support on MMT

Page 21: LocationTech Projects

● Berkeley DB● Import and orderedpoint process● Point cloud streaming● Native support on MMT● The cloud save the shape(we are always sending meaningful points, that saves the shape of the point cloud)

New: Point Cloud Streaming

Page 22: LocationTech Projects

Anthony FoxDirector, Data Science

Commonwealth Computer ResearchProjects:GeoMesaEclipse FoundationLocationTechLinkedInhttps://www.linkedin.com/pub/anthony-fox/5/467/574

Jody Garnett
Can we provided a LinkedIn link here?
Andrew Hulbert
not sure if its public...i'll find out
Page 23: LocationTech Projects

• Distributed Spatio-temporal Database• Built on Hadoop and Accumulo• Scales to billions of features

• Written in Scala• Apache License, v2.0

Page 24: LocationTech Projects

How GeoMesa Fits in Cloud Stack

Cloud Stack and Distributed Resources

KAFKA

HDFSAccumulo

Page 25: LocationTech Projects

Jumping Into “Big Data”Hop on over from PostGIS….

to GeoMesa

picturespk.com

Page 26: LocationTech Projects

Query Planning

Page 27: LocationTech Projects

Connecting to Spark

Page 28: LocationTech Projects

Spark RDD

Page 29: LocationTech Projects

Aggregating by Day

Page 30: LocationTech Projects

Plotting in R14/08/18 01:05:57 INFO SparkContext: Job finished: collect at Runner.scala:61, took 44.154914093 s(20140801,398)(20140802,409)(20140803,328)(20140804,374)(20140805,354)(20140806,377)(20140807,328)(20140808,326)(20140809,365)(20140810,542)(20140811,1081)(20140812,721)(20140813,666)(20140814,1184)(20140815,964)

Page 31: LocationTech Projects

Predictive Threat Surface

Jody Garnett
What is this - Is this a heat map?
Andrew Hulbert
yeah...still working on this one
Andrew Ross
Slide 25 says click to add title
Page 32: LocationTech Projects

Roadmap and Contact Info• Road Map

• Release Imminent (IP Review)• Analytics

• Contact & TutorialsAnthony Fox & Andrew Hulbert (booth)

http://[email protected]@locationtech.org

Jody Garnett
Thanks for the logo that is better than what I found. You may want to look at your intro slide and add CCRi details there?
Page 33: LocationTech Projects

Spatial4j

David Smiley Apache Software Foundation Committer & PMC of Lucene/SolrEclipse FoundationLocationTech PMC

Freelance Lucene/Solr developer/consultant

Page 34: LocationTech Projects

Spatial4j

Shapes!• Point, Rect, Circle, Line, BufferedLine, Polygon,

and collections of these• Cartesian, Cartesian with world-wrap

(cylindrical), and Spherical/Geodesic• Computes intersection relationship & bbox

Also• Computes point distance & shape area• Extensible WKT parsing and

serialization/deserialization utilitiesLicense: ASLv2

Page 35: LocationTech Projects

The Shape interface• interface Shape {

• Point getCenter();• Rectangle getBoundingBox();• boolean hasArea();• double getArea();• SpatialRelation relate(Shape other);

• Must support Point & Rectangle

• enum SpatialRelation• DISJOINT, INTERSECTS, WITHIN, CONTAINS• Note: simpler set than the “DE-9IM” spatial standard

• no “equals” or “touches”

Page 36: LocationTech Projects

A romance in many dimensions

Shape Euclidean Cylindrical Spherical

Point Y Y Y

Rectangle Y Y Y

Circle Y Y

LineString Y

Buffered L/S Y

Polygon Y Y

Shape Collection Y Y Y

Page 37: LocationTech Projects

Distance example

SpatialContext ctx = SpatialContext.GEO;

Circle sydney=ctx.makeCircle(151.3,33.9, 0.3);Point perth=ctx.makePoint(115.8,32.9);double distance=ctx.calcDistance(sydney.getCenter(), perth);

double km=DistanceUtils.degrees2Dist( distance, DistanceUtils.EARTH_MEAN_RADIUS_KM)

Page 38: LocationTech Projects

More code samplesSpatialContext ctx = SpatialContext.GEO;Rectangle r = ctx.makeRectangle(-71, -70, 42, 43);Circle c = ctx.makeCircle(-72, 42, 1);SpatialRelation rel = r.relate(c);System.out.println(rel);rel.intersects();//boolean

ctx = JtsSpatialContext.GEO;Shape s = ctx.readShape(“POLYGON ((30 10, 10 20, 20 40, 40 40, 30 10))”);

double distanceDegrees = ctx.getDistCalc().distance( ctx.makePoint(2, 2), ctx.makePoint(3, 3) );

Distances (including circle radius) are in “Degrees”, not

radians or KM

Page 39: LocationTech Projects

Thanks to the interns!:● Rebecca Alford via Open-Academy:

○ geodesic polygons● Chris Pavlicek via Open-Academy:

○ geodesic buffered lines● Evana Gizzi, MITRE intern:

○ geodesic circle polygonizer

Recent Activity

Page 40: LocationTech Projects

Processing

Page 41: LocationTech Projects

RobertCheethamFounder and CEO

AzaveaProjectsGeoTrellisEclipse FoundationLocationTech

GeoTrellis

Page 42: LocationTech Projects

GeoTrellis• Scala geospatial library and platform for

distributed real-time and batch processing• Supports:

• Low latency & Distributed processing of raster data• Highly scalable• Based on Scala, Akka, & Spark

• License:• Apache License, Version 2.0

Page 43: LocationTech Projects

GeoTrellis Chattanooga Demo

http://demo.geotrellis.com/chatta

Page 44: LocationTech Projects

GeoTrellis subprojects● proj4

● Port\Wrapper of Proj4j● vector

● Scala wrapper for JTS● Reprojection support● GeoJSON read\write

● slick● Vector data to/from PostGIS

● raster● Raster IO, map algebra● Vector <-> Raster

operations● engine

● Distributed Akka execution engine for raster processing

Page 45: LocationTech Projects

GeoTrellis subprojects (cont.)● gdal

● Read over 130 raster file formats using GDAL● Wrapper around GDAL java bindings

● spark● Aims to add comprehensive geospatial support to Apache

Spark● Reproject, mosaic, tile and pyramid geotiff raster data

stored in HDFS into Accumulo or HDFS.● RasterRDD with tile-based distributed operations● Fast tile selection out of Accumulo.

Page 46: LocationTech Projects

Zonal Summary Example

Page 47: LocationTech Projects

Weighted Overlay Example

Page 48: LocationTech Projects

GeoTrellis Spark

geospatial @ scale

Page 49: LocationTech Projects

GeoTrellis Spark

Page 50: LocationTech Projects

GeoTrellis● Functional programming with Scala

● To quote Anthony Fox of GeoMesa, “There’s a confluence of geo and spark happening at LocationTech”

● Big data, cluster computing with Apache Spark & Accumulo● Both GeoMesa and GeoTrellis use Accumulo. Spark is

becoming a very popular alternative to Hadoop.

Page 51: LocationTech Projects

Ahmed EldawyUniversity of Minnesota

ProjectsGeoJini (SpatialHadoop)Eclipse FoundationLocationTech

GeoJini

Jody Garnett
Andrew need contact details for geoJini
Page 52: LocationTech Projects

GeoJini• Batch processing

• MapReduce framework for efficient processing of spatial operations

• Supports: • Spatial data types & indexing• Based on Hadoop• Highly scalable

• License:• Apache License, Version 2.0

Page 53: LocationTech Projects

Applications

Page 54: LocationTech Projects

Geo Fast Forward (GeoFF)

Erdal Karaca

ProjectsGeoFFEclipse FoundationLocationTech

Page 55: LocationTech Projects

Geo Fast Forward (GeoFF)● Embed Simple Maps in Eclipse RCP

● Querying a geocoding service● Use OpenLayers 3.0 as a resource bundle● SWT Component wrapping embedded browser● Fluent API so you do not have to know EMF

● License:● Eclipse Public License 1.0

Page 56: LocationTech Projects

Define GeoMap for RCP Developers

Page 57: LocationTech Projects

New: GeoFF in Eclipse 4

Page 58: LocationTech Projects

GeoGig

GabrielRoldán

Software DeveloperBoundless

ProjectsGeoGig(GeoGit), GeoTools, GeoServerEclipse FoundationLocationTechOSGeoCharter Member

Page 59: LocationTech Projects

GeoGig• Distributed data storage and collaboration

• “geogig isn’t git”• Supports:

• Distributed, off-line operation• Versioning, compare & merge• Push/pull data

• License:• Eclipse Distribution License (BSD)

Page 60: LocationTech Projects

~$ geogig helpList geogig commands

~/new-folder $ geogig initInitialise a geogig repository in new-folder

~/new-folder $ geogig shp import your_shapefileImport a .shp file (or OSM, SpatialLite or PostGIS)

~/new-folder $ geogig lsWhat's in your geogig repository

~/new-folder $ geogig statusWhat you can commit to a snapshot

Quickstart

Page 61: LocationTech Projects

GeoGig branching

Page 62: LocationTech Projects

QGIS plugin

Page 63: LocationTech Projects

GeoGig spatial diffs

Page 64: LocationTech Projects

News:● Download: 1.0-beta1 today● Thanks Ben for a great FOSS4G workshopIncubation:● LGPL → BSD● packages → org.locationtech.geogig● “initial code contribution” submitted

(Thanks to Sharon for patient Q&A)

GeoGig Update

Page 65: LocationTech Projects

GeoScript

JustinDeoliveira

VP EngineeringBoundless

ProjectsGeoScript, GeoTools,GeoServer,OpenGeo SuiteEclipse FoundationLocationTechOSGeoCharter Member

Page 66: LocationTech Projects

GeoScript● Adds spatial capabilities

to dynamic scripting languages.● Supports:

● Groovy, JavaScript, Python, and Scala● Backed by the GeoTools library

● geometry, data access and rendering● Use stand-alone or embedded

● License: MIT License● http://geoscript.github.io/foss4g2014-talk/#/

Page 67: LocationTech Projects

JavaScript

>> var geom = require("geoscript/geom");>> var p = new geom.Point([-111.0, 45.7]);>> p<Point [-111, 45.7]>>> var proj = require("geoscript/proj");>> var p2 = proj.transform(p, "epsg:4326", "epsg:26912");>> p2<Point [500000, 5060716.31816507]>>> var poly = p2.buffer(100);>> poly.area31214.451522458345

Page 68: LocationTech Projects

Python

>>> from geoscript import geom>>> p = geom.Point(-111.0, 45.7)>>> pPOINT(-111 45.7)>>> from geoscript import proj>>> p2 = proj.transform(p, 'epsg:4326', 'epsg:26912')>>> p2POINT (499999.42501775385 5060716.092032814)>>> poly = p2.buffer(100)>>> poly.getArea()31214.45152247697

Page 69: LocationTech Projects

Scala

scala> import org.geoscript.geometry._scala> import org.geoscript.projection._scala> val p = Point(-110, 45.7) in Projection("EPSG:4326")p: org.geoscript.geometry.Point = POINT (-110 45.7)

scala> val p2 = p in Projection("EPSG:26912")p2: org.geoscript.geometry.Point = POINT (-370416.94184711506 -7935053.5498699695)

scala> p2.buffer(100).areares0: Double = 31214.451522477902

Page 70: LocationTech Projects

Groovy

groovy:000> import geoscript.geom.*groovy:000> import geoscript.proj.Projectiongroovy:000> p = new Point(-111, 45.7)===> POINT (-111 45.7)groovy:000> p2 = Projection.transform(p, 'epsg:4326', 'epsg:26912')===> POINT (499999.42501775385, 5060716.092032814)groovy:000> poly = p2.buffer(100)groovy:000> poly.area===> 31214.451522477902

Page 71: LocationTech Projects

● Jared working hard● Curved geometries, GeoPackage, MBTiles

● Working on a common versioning scheme● Standardizing on GeoTools version● Early stages of incubation● TODO: Logo :)

GeoScript Update

Page 72: LocationTech Projects

Jody GarnettSenior Software Engineer

Boundless

Projects:GeoTools, GeoServer,uDig

Frank GasdorfSoftware Developer

& GIS ProfessionalPlath GmbH

ProjectsuDigEclipse FoundationLocationTech

uDig

Page 73: LocationTech Projects

● User-friendly Desktop Internet GIS● Based on Eclipse Framework● Reusable RCP components● Java core libraries

(JTS, GeoTools, jgrasstools,imageio-ext)● Supports:

● Industry standards formats and services formats(WMS, WFS, KML, GeoTiff, etc)

● License: Eclipse Public License EPL and BSD

uDig

Page 74: LocationTech Projects

Provides the best of Open Source Mapping for the Eclipse RCP Developer

uDig SDK

Page 75: LocationTech Projects

User-friendly Desktop Internet GIS

Page 76: LocationTech Projects

JGrass - Hydrological Modeling

Page 77: LocationTech Projects

DEWS Distance Early Warning System

https://www.youtube.com/watch?v=-lGgkOd-Tl4

Page 78: LocationTech Projects

Globema - ELGrid

Page 79: LocationTech Projects

LocationTech

Page 80: LocationTech Projects

Full Service Foundation

IPmgmt

Dev Process

LicenseModel

Forge&

Build

CommunityMemberNetwork

Governance

Page 81: LocationTech Projects

Infrastructure

Page 82: LocationTech Projects

Events: Tour 2014

18 Cities around the world.Speaking & sponsorship opportunities.Great spirit of camraderie & learning

Page 84: LocationTech Projects

Questions?(Hand up for a microphone, project leads to the front)

Page 85: LocationTech Projects

● Q: Do I have to use Eclipse infrastructure?A: See https://github.com/locationtech(Thanks to the Verte.x for sorting out how)

Q&A


Top Related