state of the geodata

Download State of the Geodata

If you can't read please download the document

Upload: marble-virtual-globe

Post on 19-May-2015

401 views

Category:

Technology


0 download

DESCRIPTION

Presentation made at Marble Sprint 2010

TRANSCRIPT

  • 1. State of the GeoDataState of the GeoData T GridelT Gridel 06-07.11.2010 | Marble Sprint06-07.11.2010 | Marble Sprint

2. T Gridel edu.kde.org/marble/ 2 Agenda Design Goals Tour of the Classes Serialisation Model/View Uses Todo 3. T Gridel edu.kde.org/marble/ 3 GeoData Classes Modelled after KML spec http://code.google.com/intl/de/apis/kml/documentation/kmlreference.html Copy-on-write features (shared data) Data in Private D-Pointer Copy Ctor copies Private D-Pointer Setters trigger a deep copy of the Private Tree features Document Folder Feature First topic Current topic Third Topic 4. T Gridel edu.kde.org/marble/ 4 Class Hierarchy 5. T Gridel edu.kde.org/marble/ 5 Features Common Properties Name Description Visibility Style... Placemarks add: Geometry Coordinates Containers add: List of Features 6. T Gridel edu.kde.org/marble/ 6 Geometries Live through a Placemark Rendered with GeometryLayer Recursive parsing of GeoDatadocument Rendering with GeoPainter 7. T Gridel edu.kde.org/marble/ 7 Styles Limited equivalent of Qt styling Needs marble extensions? 8. T Gridel edu.kde.org/marble/ 8 Serialisation GeoDataParser API GeoDataParser parser( GeoData_UNKNOWN ); QFile file( filename ); file.open( QIODevice::ReadOnly ); GeoDocument* document = parser.releaseDocument(); GeoDataParser Internals GeoTagHandler and GeoStackItem GeoTagHandler::QualifiedName qName( name().toString(), namespaceUri().toString() ); GeoStackItem stackItem( qName, 0 ); if ( const GeoTagHandler* handler = GeoTagHandler::recognizes( qName )) { stackItem.assignNode( handler->parse( *this )); } 9. T Gridel edu.kde.org/marble/ 9 Model/View GeoDataTreeModel Encapsulates a GeoDataDocument Provides the Tree model for interested views Proxies for filtered Lists (todo) Limited use outside generic views Model/View is signals/slots for update notification View inherits widget, we need Layers or custom observers (PlacemarkLayout...) Model::data() and ModelIndex suffer leaking interface syndrome 10. T Gridel edu.kde.org/marble/ 10 Uses (I): FileManager Write parsing code Serialise into a GeoDataDocument Append to list of files Show in a List Enjoy ;) 11. T Gridel edu.kde.org/marble/ 11 Uses (II): PositionProvider Write Position Providers Enable Position Tracking Store positions in a geometry Display with GeometryLayer Enjoy ;) 12. T Gridel edu.kde.org/marble/ 12 Uses (III): Routing Write Routing query backend Store result in a GeoDataDocument Wrap into Routing Layer Enjoy ;) 13. T Gridel edu.kde.org/marble/ 13 Todo Use for Vector maps (Pnt files) and clean VectorMap and GeoPolygon Full Potential of GeoPainter Use a ProxyModel to clean the PlacemarkModel Cure the Model diarrhea UI for files/placemarks/visibility Improve GeometryLayer performance 2D culling filter Federate file loading (route restore/casual file) Use GeoData in your pet Use Case 14. T Gridel edu.kde.org/marble/ 14 Thanks! techbase.kde.org/Projects/Marble/GeoData