R ECENT EVOLUTION OF GEOSPATIAL STANDARDS ¡ and their implementation in Apache SIS Mar%n ¡Desruisseaux ¡ September ¡2015 ¡ h7p://sis.apache.org ¡ Note: ¡ those ¡slides ¡are ¡s%ll ¡incomplete. ¡ They ¡will ¡be ¡completed ¡for ¡the ¡conference. ¡ ¡
What ¡is ¡a ¡standard ¡ “An ¡agreed ¡way ¡of ¡doing ¡something” ¡ • Standards ¡are ¡dis.lled ¡wisdom ¡ – of ¡peoples ¡with ¡exper%se ¡in ¡their ¡subject ¡ – from ¡collabora%on ¡in ¡standardiza%on ¡organiza%ons ¡ • ISO ¡— ¡Interna%onal ¡Organiza%on ¡for ¡Standardiza%on ¡ • OGC ¡— ¡Open ¡Geospa%al ¡Consor%um ¡ • W3C ¡— ¡World ¡Wide ¡Web ¡Consor%um ¡ • Standards ¡are ¡knowledge ¡ – Help ¡to ¡drive ¡innova%on ¡ – Like ¡a ¡blueprint ¡that ¡guides ¡people ¡who ¡build ¡things ¡
Useful ¡for ¡Apache? ¡ • Some ¡projects ¡have ¡needs ¡addressed ¡by ¡standards ¡ – Example: ¡storing ¡the ¡“ where ¡is ¡<something> ” ¡informa%on ¡ Metadata ¡ └─ ¡ Iden.fica.on ¡info ¡ └─ ¡Extent ¡ └─ ¡Geographic ¡element ¡ ├─ ¡West ¡bound ¡longitude ¡…………………………… ¡179°10ʹ″W ¡ ├─ ¡East ¡bound ¡longitude ¡…………………………… ¡65°W ¡ ├─ ¡South ¡bound ¡la%tude ¡…………………………… ¡17°37ʹ″30″₻N ¡ └─ ¡North ¡bound ¡la%tude ¡…………………………… ¡71°30ʹ″N ¡ • Use ¡of ¡standards ¡help ¡to ¡an%cipate ¡future ¡needs ¡ Iden.fica.on ¡ Lineage ¡ Maintenance ¡ Content ¡informa%on ¡ Metadata ¡ Distribu%on ¡ Spa%al ¡representa%on ¡ Data ¡quality ¡ Constraints ¡
Can ¡Apache ¡use ¡that? ¡ Open ¡standards ¡ Open ¡source ¡ Freely ¡and ¡publicly ¡available ¡ Free ¡redistribu%on ¡ • • Non ¡discriminatory ¡ Non ¡discriminatory ¡ • • Vendor ¡and ¡data ¡neutral ¡ Technology-‑neutral ¡license ¡ • • Driven ¡by ¡consensus ¡process ¡ Allow ¡deriva%ve ¡work ¡ • •
From ¡standards ¡to ¡API ¡ Frequently ¡used ¡approach ¡ UML ¡ XSD ¡files ¡ JAXB ¡compiler ¡ Generated ¡classes ¡ Interna%onal ¡standards ¡ Provided ¡by ¡OGC ¡ Run ¡by ¡each ¡project ¡ Project-‑specific ¡ Interoperability ¡in ¡XML ¡files ¡ Not ¡in ¡Java ¡API ¡
From ¡standards ¡to ¡API ¡– ¡an ¡issue ¡ XSD ¡is ¡not ¡an ¡accurate ¡representa%on ¡of ¡conceptual ¡models ¡ Deriving ¡from ¡UML ¡ UML ¡feature ¡ Available ¡in ¡Java ¡ Used ¡in ¡OGC’s ¡XSD ¡ ❌ ¡ ✅ ¡ Union ¡ ✅ ¡ ❌ ¡ Covariant ¡type ¡ Deriving ¡from ¡XSD ¡ UML ¡feature ¡ Used ¡in ¡Java ¡ ❌ ¡ Union ¡ ❌ ¡ Covariant ¡type ¡
Covariant ¡type ¡in ¡UML ¡versus ¡XSD ¡ Example ¡derived ¡from ¡UML ¡of ¡ISO ¡19111 ¡ SingleCRS ¡ Proper.es: ¡ § CoordinateSystem � § (other ¡proper%es ¡omi7ed) ¡ ProjectedCRS ¡ Ver%calCRS ¡ Type ¡of ¡inherited ¡“ coordinateSystem ” ¡ Type ¡of ¡inherited ¡“ coordinateSystem ” ¡ property ¡is ¡narrowed ¡to ¡ ¡ CartesianCS ¡ ¡type. ¡ property ¡is ¡narrowed ¡to ¡ ¡ VerticalCS ¡ ¡type. ¡ This ¡is ¡“type ¡covariance”. ¡
Covariant ¡type ¡in ¡UML ¡versus ¡XSD ¡ Same ¡example, ¡but ¡derived ¡from ¡XSD ¡of ¡GML ¡ SingleCRS ¡ ProjectedCRS ¡ Ver%calCRS ¡ Proper.es: ¡ Proper.es: ¡ § CartesianCS � § VerticalCS � § (other ¡proper%es ¡omi7ed) ¡ § (other ¡proper%es ¡omi7ed) ¡ No ¡type ¡covariance ¡— ¡each ¡subclass ¡declares ¡the ¡property ¡separately. ¡
Impact ¡for ¡Java ¡users ¡ Using ¡an ¡API ¡derived ¡manually ¡from ¡UML: ¡ That’s ¡all! ¡ cs = crs.getCoordinateSystem(); � Using ¡an ¡API ¡generated ¡from ¡XSD ¡with ¡JAXB: ¡ if (crs instanceof ProjectedCRS ) { � First ¡case ¡in ¡previous ¡slide ¡ cs = (( ProjectedCRS ) crs).getCartesianCS(); � } else if (crs instanceof VerticalCRS ) { � Second ¡case ¡in ¡previous ¡slide ¡ cs = (( VerticalCRS ) crs).getVerticalCS(); � } else if (crs instanceof GeodeticCRS ) { � GeodeticCRS geodeticCRS = ( GeodeticCRS ) crs; � cs = geodeticCRS.getEllipsoidalCS(); � if (cs == null) { � Other ¡case ¡(not ¡shown ¡in ¡previous ¡slide) ¡ cs = geodeticCRS.getSphericalCS(); � Not ¡even ¡the ¡worst ¡case! ¡ if (cs == null) { � cs = geodeticCRS.getCartesianCS(); � } � } � } else if (crs instanceof …) { � 6 ¡other ¡cases… ¡ … � } �
Hiding ¡XML ¡complexity ¡ JAXB ¡ UML ¡ GeoAPI ¡(Java) ¡ Libraries ¡ Interna%onal ¡standards ¡ Provided ¡by ¡OGC ¡ Project-‑specific ¡ Interoperability ¡in ¡Java ¡API ¡ Also ¡in ¡XML ¡files ¡if ¡implementors ¡wish ¡
Model ¡and ¡sooware ¡stack ¡ h7p://www.opengeospa%al.org/ ¡ h7p://www.geoapi.org/ ¡ h7p://sis.apache.org/ ¡ Interna.onal ¡standards ¡for: ¡ Java ¡interfaces ¡for: ¡ Par.al ¡implementa.on ¡of: ¡ • Web ¡Map ¡Service ¡(WMS) ¡ • Metadata ¡ • Metadata ¡ • Web ¡Coverage ¡Service ¡(WCS) ¡ • Referencing ¡by ¡coordinates ¡ • Referencing ¡by ¡coordinates ¡ • Web ¡Feature ¡Service ¡(WFS) ¡ • Well ¡Known ¡Text ¡(1 ¡and ¡2) ¡ • Sensor ¡Web ¡Enablement ¡(SWE) ¡ ¡ • Geography ¡Markup ¡Language ¡ • Geography ¡Markup ¡Language ¡(GML) ¡ • GeoPackage ¡ • … ¡and ¡many ¡more ¡… ¡
ISO ¡19115 ¡ Geographic ¡metadata ¡ Published ¡in ¡2003 ¡ Revised ¡in ¡2014 ¡
ISO ¡19115 ¡sub-‑tree ¡sample ¡ Metadata ¡ ├─ ¡Contact ¡ │ ├─ ¡Role ¡(author, ¡collaborator, ¡distributor, ¡sponsor, ¡…) ¡ │ └─ ¡Party ¡(individual ¡or ¡organiza%on) ¡ │ ├─ ¡Name ¡ │ └─ ¡Contact ¡info ¡(phone ¡number, ¡address, ¡email, ¡hours ¡of ¡service…) ¡ ├─ ¡Data ¡iden%fica%on ¡ │ ├─ ¡Abstract ¡ │ ├─ ¡Status ¡(under ¡development, ¡completed, ¡historical ¡archive, ¡…) ¡ │ ├─ ¡Resource ¡maintenance ¡(update ¡frequency, ¡maintenance ¡scope, ¡…) ¡ │ ├─ ¡Descrip%ve ¡keywords ¡ │ ├─ ¡Spa%al ¡representa%on ¡type ¡(grid, ¡vector, ¡triangulated ¡irregular ¡network, ¡video, ¡…) ¡ │ ├─ ¡Topic ¡category ¡(meteorology, ¡health, ¡environment, ¡transporta%on, ¡…) ¡ │ └─ ¡Extent ¡ │ ├─ ¡Geographic ¡element ¡(north ¡bound ¡la%tude, ¡west ¡bound ¡longitude, ¡…) ¡ │ ├─ ¡Ver%cal ¡element ¡ │ └─ ¡Temporal ¡element ¡ ├─ ¡Content ¡info ¡ │ ├─ ¡A7ribute ¡group ¡ │ │ ├─ ¡Content ¡type ¡(physical ¡measurement, ¡thema%c ¡classifica%on, ¡…) ¡ │ │ └─ ¡Range ¡dimension ¡ │ │ ├─ ¡Name ¡ │ │ ├─ ¡Unit ¡ │ │ ├─ ¡Scale ¡factor ¡ 〜 500 ¡proper.es ¡ │ │ ├─ ¡Offset ¡ │ │ └─ ¡Nominal ¡spa%al ¡resolu%on ¡ in ¡the ¡full ¡standard ¡ │ └─ ¡Cloud ¡cover ¡percentage ¡ └─ ¡Distribu%on ¡info ¡ └─ ¡Distribu%on ¡format ¡
Some ¡new ¡metadata ¡elements ¡ ISO ¡19115 ¡defined ¡in ¡2003 ¡ ISO ¡19115 ¡revised ¡in ¡2014 ¡ Band ¡descrip%on ¡was ¡restricted ¡to ¡ Sample ¡dimension ¡generalized ¡to ¡any ¡ • • electromagne%c ¡spectrum. ¡ physical ¡parameters. ¡ • Horizontal ¡resolu%on ¡only, ¡ • Allow ¡resolu%on ¡in ¡angular ¡units. ¡ in ¡linear ¡units. ¡ • Ver%cal ¡and ¡temporal ¡resolu%on. ¡
Some ¡metadata ¡changes ¡ • Categoriza%on ¡of ¡keywords. ¡ • Common ¡a7ributes ¡moved ¡for ¡reducing ¡duplica%on. ¡ • Individual/organisa%on ¡descrip%on ¡reorganised: ¡ 2003 ¡version ¡ 2014 ¡version ¡ Responsible ¡party ¡ Responsibility ¡ ├─ ¡Organisa%on ¡name ¡ ├─ ¡Party ¡(Individual ¡or ¡Organisa%on) ¡ ├─ ¡Individual ¡name ¡ │ ├─ ¡Name ¡ ├─ ¡Contact ¡info ¡ │ └─ ¡Contact ¡info ¡ │ ├─ ¡Telephone ¡ │ ├─ ¡Telephone ¡ │ │ ├─ ¡Voice │ │ ├─ ¡Number │ │ └─ ¡Facsimile │ │ └─ ¡Number ¡type │ ├─ ¡Address ¡ │ ├─ ¡Address ¡ │ │ └─ ¡(usual ¡stuff…) │ │ └─ ¡(usual ¡stuff…) │ └─ ¡Online ¡resource ¡ │ └─ ¡Online ¡resource ¡ │ └─ ¡(other ¡stuff…) ¡ │ └─ ¡(other ¡stuff…) ¡ └─ ¡Role ¡ └─ ¡Role ¡ ¡
Recommend
More recommend