[Marble-devel] Hello
Torsten Rahn
tackat at t-online.de
Sat Aug 29 17:13:13 CEST 2009
Hey Anders,
Am Samstag 29 August 2009 14:20:27 schrieb Anders Lund:
> I just joind marble-devel, with the intention to help improving some
> aspects of gps support in marble.
Great. I suggest that you first make yourself familiar with
http://techbase.kde.org/Projects/Marble/GoMarble
> Specifically, I would like to help making marble suitable for loading,
> creating, displaying, manipulating, exporting and saving waypints, routes,
> and tracks (where applicable).
That's great. As you might have noticed there is a deprecated gps
implementation there already. But as I said it's old and outdated. So just
stay away from everything inside
marble/src/lib/gps <- Deprecated!!!!
marble/src/lib/AbstractLayer <- Deprecated!!!
All the real parsing stuff is located inside
marble/src/lib/geodata <- Use this instead!!
> I have been looking a bit at the source, and it looks like a good starting
> point would be improving gpx loading
Loading would be a good start indeed. However you need to make sure that you
implement it in a way that it's useful to Marble: We are currently working on
making Marble a GeoGraphicsView. See:
http://techbase.kde.org/Projects/Marble/GeoGraphicsViewOverview
In Marble there are two sets of classes that you need to be aware of:
1.) The GeoData classes which represent a model that is designed after KML:
marble/src/lib/geodata/data
Please compare this with:
http://code.google.com/intl/de-DE/apis/kml/documentation/kmlreference.html
So these classes basically represent the "Model" and tool classes in which all
the properties get stored. Basically this means that all kinds of file formats
internally get stored in a KML-like data structure (this has got lots of
advantages).
2.) GeoGraphicsItems: These classes represent the items in the view. They are
the geodesic look-a-likes of QGraphicsItems (with KML geometry classes in
mind).
Now how the implementation of GPS loading should work is this:
In KML every single object has got a Placemark (GeoDataPlacemark in our
classes) assigned. This Placemark has got a pointer to a Geometry object.
For GPS loading we'd do the same: Every single GPS object would get
represented as a Placemark!
So routes and tracks would _not_ be represented as new classes. They would
just be Placemarks that would have a (GeoData)LineString which has got a
(GeoData)Style that makes it look like a route or a track. All the very GPS
specific stuff would get stored in the ExtendedData object (which holds all
kinds of Metadata).
So I'd suggest that you look into all the GeoData stuff and KML parsing first
before you take a look at GPS loading.
Be aware that there are still lots of loose ends and that especially the
actual rendering and model classes still need quite some work.
> and saving
Saving would be cool, too -- once we have proper loading done ;-)
> (via the waypint, routepoint and trackpoint classes).
Nope. Eventually there won't be such classes. There will only be ExtendedData
for the Placemark which will give a cue as to what kind of object is
represented by the Placemark.
> Then, displaying and editing those data would be next.
The beauty of the whole "unified" concept is that the editing will work across
file formats. Andrew has worked a bit on this already (for "OSM" -- but as I
said it will work for all fileformats eventually as the view and model classes
are file format agnostic).
> Editing data could be done either in dialogs
> launched from the context menu, or in sidebars.
Yes, that would be nice. We have pretty high UI standards though -- but that's
another topic.
> A sidebar listing the contents of loaded files would be nice, too.
Yes. Note that this listing would contain all the files loaded ( GPX, KML, OSM,
Shapefiles, etc.). There has already been work on this.
> I can see that data writing is more or less impelemnted, but there is no
> gui representation for that.
Andrew did some initial work on this.
> Now, I do not know if all this is within the scope of the marble
> library/widget, of if some of all of it should be provided as plugins?
Yes, it is inside the scope of the marble/widget. I'm a bit picky about the UI
(i.e. I want it to be simplistic, usable and not to get in the way of casual
users at all). But I guess we can discuss that at later point when we are at
the point where we need to change the UI.
> Also, I do not know marble code very well, so if I think wrong, or you have
> ideas or knowledge that I should know, that would be nice.
As I said: I'd suggest that you read the stuff on techbase. And that you
especially look into the KML data classes and parsing first.
On #marble / #kde-edu you can ask e.g. idis, real_ate, bholst, me, SaroEngels
and jmho if you've got further questions.
> In the hope that I can add a bit to marble,
> Anders
We hope so, too ;-)
Torsten
More information about the Marble-devel
mailing list