Post on 23-Jan-2018
Development of GeoTools/Geoserver extension for handling 3-dimensional
geospatial informationHyung-Gyu Ryoo (hgryoo@pnu.edu)Soojin Kim (soojin.kim@pnu.edu)Joonseok Kim (joonseok@pnu.edu)Ki-Joune Li (lik@pnu.edu)
Pusan National University, South KoreaFOSS4G Kyoto.Kansai 2017
1
3D GIS
NASA World Wind 3.0 2
Common Open Source 2D GIS Architecture
Spatial Databases
File Sources
Geospatial Server
Desktop Client
Web Client
PostGIS
OpenLayers
QGIS
GeoServer
ESRI Shapefile
Data Source Client
3
Bad Architecture
My Super Server
My Super Server2
My Super Server3
My Super Server4
Data Source
PostGIS
ESRI Shapefile
Client
OpenLayers
QGIS
4
Solution?
?
General 3D Spatial Server!Data Source Client
OpenLayers
QGISSpatial Databases
File
GeoServer (3D)
5
66
GeoServer has limitations in handling 3D!GeoServer can handle and store points, curves and surfaces with z coordinates
But!It is impossible to store spatial information with solidsSpatial query processing is performed without z coordinates
GeoServer ignore z coordinates
Front ViewView from Above
7
JTS - limitation for supporting 3D in GeoServer● JTS geometries can carry a Z coordinate● What about solid geometries?● What about 3D spatial operations?
OGC::Simple Feature Access
based on
<Java Class>JTS::Geometry
8
ISO 19107 spatial schema-based interface
<Java Interface> ISO 19107 Spatial Schema
<Java Class> ISO 19107 Geometries
Implementation
gt-geometry
● Implementations of ISO Geometry supported as an unsupported module
● 3D spatial operations are not implemented
9
How to support 3D spatial operations
● Existing open source library for 3D spatial operations○ CGAL (GNU LGPL 3+, GNU GPL 3+)
■ C++, A variety of robust computational geometry algorithms in 3D spaces as well as 2D
■ Different from those in GIS domains○ Simple Feature CGAL (GNU LGPL 2+) by Oslandia
■ C++, Based on CGAL and Boost■ Supporting OGC Simple Features Access 1.2 and ISO 19107:2013 for 3D
operations.
10
11
New ISO 19107 Geometry Module
● Support 3D Geometry including Solid
● Support 3D operations○ distance, area, volume, convexHull...○ intersects, contains, within...○ intersection, difference, union...
12
Codes are coupled with JTS!
13
Simple Strategy
1. Use a well-defined interfaces in GeoServer/GeoTools2. Copy and rewrite classes to support ISO 19107 geometries 3. Leave codes that are not coupled with JTS as much as possible4. For copied codes, perform unit tests
New Open Source 3D GIS Stack
DBMS/File
GeoTools
GeoServer
Services/Applications
OS
Cesium/NASA World Wind/QGIS
Ubuntu/CentOSOracle/PostGIS
FeatureStore(Well defined)
GML/ShapeFile...
I/O Plugins[GeoJSON, ShapeFIle…]
DataStores[JDBCDataStore/FileDataStore]
Query/Filter(JTS Only)
WPS Process(JTS Only)
SQLDialect
Data Management[Vector, DB]
Services[WFS, WCS, WPS, WMS]
Web Administration UI
Oracle PostGISSFCGAL Extension
New DataStores(uses ISO Geometry)
New SQLDialect, I/O Plugin(type mapping to ISO Geometry)
New FilterFactory,(uses SFCGAL query evaluation)
WPS Process(new proc using ISO geometry)
GeoServer 3D Extension
XML Binidng(JTS Only)
XML Binding(uses ISO geometry)
WFS 1.1 Service(uses ISO geometry)
14
Demo
GeoServer 3D
Draw
WFSRequest
3D DataStore
WFS Client Highlighting
WFSResponse
RegisterStore
15
Demonstration Video
16
Next Steps
● Documentation!● Administration GUI for 3D● Making a switch between JTS and ISO Geometry● Supporting WFS 2.0 version to support rich set of advanced
functions● Test and improve again and again to be stable
17
18
“People think that computer science is the art of geniuses but the actual reality is the opposite,
just many people doing things that build on each other, like a wall of mini stones.”
– Donald E. Knuth
Thank you
19
hgryoo@pnu.edu | @hg_ryoo (twitter)soojin.kim@pnu.edu | @soojin_kim_gis (twitter)https://github.com/STEMLab/geotools-3d-extensionhttps://github.com/STEMLab/geoserver-3d-extension