Marble/GeoData/GeoDataUse: Difference between revisions

    From KDE TechBase
    No edit summary
    Line 15: Line 15:


    === Actual Implemented Use Details ===
    === Actual Implemented Use Details ===
    * GeoData classes have shared data, in the sense that e.g. copying a GeoDataFeature is a shallow copy, with deep copy happening when one of the instances need to modify a value. This is all for the "ToolClass", and not much useful for the "DataTree".
    * GeoData classes have shared data, in the sense that e.g. copying a GeoDataFeature is a shallow copy, with deep copy happening when one of the instances need to modify a value. This is all for the "ToolClass", and not much useful for the "DataTree". Pure parameter passing benefits from shallow copy.


    * {{class|FileManager|kdeedu|4.x}} uses {{class|FileLoader|kdeedu|4.x}} which build a {{class|GeoDataDocument|kdeedu|4.x}} from files it opens. It internally uses the {{class|GeoParser|kdeedu|4.x}} classes and framework for xml files. Those files then provided through the {{class|GeoDataTreeModel|kdeedu|4.x}} model.
    * {{class|FileManager|kdeedu|4.x}} uses {{class|FileLoader|kdeedu|4.x}} which build a {{class|GeoDataDocument|kdeedu|4.x}} from files it opens. It internally uses the {{class|GeoParser|kdeedu|4.x}} classes and framework for xml files. Those files then provided through the {{class|GeoDataTreeModel|kdeedu|4.x}} model.
    * {{class|PlacemarkManager|kdeedu|4.x}} uses placemarks retrieved from the FileManager, and provides a {{class|PlacemarkModel|kdeedu|4.x}} model which contains them.


    * {{class|PositionTracker|kdeedu|4.x}} keeps a document with past positions retrieved from {{class|PositionProviderPlugin|kdeedu|4.x}} plugins.
    * {{class|PositionTracker|kdeedu|4.x}} keeps a document with past positions retrieved from {{class|PositionProviderPlugin|kdeedu|4.x}} plugins.

    Revision as of 21:51, 14 September 2011

    Using GeoData

    This page tries to summarise the use of GeoData classes in marble so that its implementation details can match the use cases, and understand if any what issues might arise from manipulating them otherwise.

    Use Cases

    The use cases identified so far are:

    1. use any GeoData class as a convenient data holder in APIs.
      It is expected in that regard that classes have shared data.
      Let's call this usecase the "ToolClass" usecase.
    2. use Expression error: Unrecognized word "x". as the root document of a "data file" in-memory representation, or even another grouping of information.
      In this use case, there would exist a "tree" of data matching a logical grouping of information.
      Let's call this usecase the "DataTree" usecase.

    Actual Implemented Use Details

    • GeoData classes have shared data, in the sense that e.g. copying a GeoDataFeature is a shallow copy, with deep copy happening when one of the instances need to modify a value. This is all for the "ToolClass", and not much useful for the "DataTree". Pure parameter passing benefits from shallow copy.
    • Expression error: Unrecognized word "x". uses Expression error: Unrecognized word "x". which build a Expression error: Unrecognized word "x". from files it opens. It internally uses the Expression error: Unrecognized word "x". classes and framework for xml files. Those files then provided through the Expression error: Unrecognized word "x". model.
    • Expression error: Unrecognized word "x". keeps a document with past positions retrieved from Expression error: Unrecognized word "x". plugins.
    • Expression error: Unrecognized word "x". handles routing data in a document with instructions retrieved from Marble Runners Plugins which derive from Expression error: Unrecognized word "x"..

    TODO others??

    Common Issues and Pitfalls

    In the past or present, some issues have appeared and need to be remembered/adressed:

    1. memory ownership is an issue to be determined depending on use case.
    2. Compliance with KML spec is a priority, limiting differing needs.