Development of GeoTools/Geoserver
extension for handling 3-dimensional
geospatial information
Hyung-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 Korea
FOSS4G 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
QGIS
Spatial 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 solids
Spatial 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/GeoTools
2. Copy and rewrite classes to support ISO 19107 geometries
3. Leave codes that are not coupled with JTS as much as possible
4. 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/CentOS
Oracle/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
PostGIS
SFCGAL 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
WFS
Request
3D DataStore
WFS Client
Highlighting
WFS
Response
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-extension
https://github.com/STEMLab/geoserver-3d-extension

Foss4 g 2017-kansai-ryoo-kim

  • 1.
    Development of GeoTools/Geoserver extensionfor handling 3-dimensional geospatial information Hyung-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 Korea FOSS4G Kyoto.Kansai 2017 1
  • 2.
  • 3.
    Common Open Source2D GIS Architecture Spatial Databases File Sources Geospatial Server Desktop Client Web Client PostGIS OpenLayers QGIS GeoServer ESRI Shapefile Data Source Client 3
  • 4.
    Bad Architecture My Super Server MySuper Server2 My Super Server3 My Super Server4 Data Source PostGIS ESRI Shapefile Client OpenLayers QGIS 4
  • 5.
    Solution? ? General 3D SpatialServer! Data Source Client OpenLayers QGIS Spatial Databases File GeoServer (3D) 5
  • 6.
    66 GeoServer has limitationsin handling 3D! GeoServer can handle and store points, curves and surfaces with z coordinates But! It is impossible to store spatial information with solids Spatial query processing is performed without z coordinates
  • 7.
    GeoServer ignore zcoordinates Front ViewView from Above 7
  • 8.
    JTS - limitationfor 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
  • 9.
    ISO 19107 spatialschema-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
  • 10.
    How to support3D 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.
    11 New ISO 19107Geometry Module ● Support 3D Geometry including Solid ● Support 3D operations ○ distance, area, volume, convexHull... ○ intersects, contains, within... ○ intersection, difference, union...
  • 12.
  • 13.
    13 Simple Strategy 1. Usea well-defined interfaces in GeoServer/GeoTools 2. Copy and rewrite classes to support ISO 19107 geometries 3. Leave codes that are not coupled with JTS as much as possible 4. For copied codes, perform unit tests
  • 14.
    New Open Source3D GIS Stack DBMS/File GeoTools GeoServer Services/Applications OS Cesium/NASA World Wind/QGIS Ubuntu/CentOS Oracle/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 PostGIS SFCGAL 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
  • 15.
    Demo GeoServer 3D Draw WFS Request 3D DataStore WFSClient Highlighting WFS Response RegisterStore 15
  • 16.
  • 17.
    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.
    18 “People think thatcomputer 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
  • 19.
    Thank you 19 hgryoo@pnu.edu |@hg_ryoo (twitter) soojin.kim@pnu.edu | @soojin_kim_gis (twitter) https://github.com/STEMLab/geotools-3d-extension https://github.com/STEMLab/geoserver-3d-extension