[Marble-devel] Re: KDE Geolocation Services
Torsten Rahn
tackat at t-online.de
Thu Nov 4 00:20:38 CET 2010
Hi,
I agree that this will be likely one of the important topics at the Marble
Sprint indeed.
Am Mittwoch, 3. November 2010 21:42:22 schrieb John Layt:
> part of the Meego platform. The problem comes in the api to access
> Geoclue, which is a DBus based service with C bindings, as we would
> obviously prefer a Qt-ish C++ wrapper for convenience.
And for Marble we have a GeoClue plugin (I don't know whether it currently
works since the DBUS API had been subject to changes at one point).
> Added to this is another issue I want to discuss with Marble: geo-related
> astronomical calculations. With at least 4 different places in the SC with
> code for sunrise/sunset/moon phases (KHolidays, Plasma dataengine, KStars,
> Marble), and my needing them for the astronomical based calendars, it also
> seems a good candidate for a shared library somewhere.
That's something I'd like to see as well.
> Some of what I know about QtMobility:
> * Location api
I think that it probably makes sense to use the Location API for determining
the position on platforms where Qt Mobility is widely deployed and where the
implementation of the Location API is fully available. This would at least be
the case for MeeGo and possibly for Windows (haven't tried).
> * Landmarks api
I think we have a big clash of design goals with regard to the Landmark API:
- One of the big ideas behind Marble is that internally it's modelled after
the open OGC standard KML ( http://www.opengeospatial.org/standards/kml/ ):
KML is popular, widely known and used in the world of GIS.
This has several advantages:
* It's quite easy to learn Marble's API for anyone who knows KML
* We basically have an implementation guide for all the classes and
properties since everything is described as part of an open specification.
* KML is a pretty pragmatic and at the same time powerful approach to
modelling data. It goes way beyond just Placemarks (=Landmarks).
* Due to the internal KML modelled design import of the open standard KML is
quite easy to do. Also since KML is quite generic it's possible to map the
parsing result of other formats (gpx, etc.) to KML.
- The idea behind the Qt Mobility API is to model a significant part of the
API after Ovimaps' LMX format, see the "Landmarks Exchange Format
Specification":
http://www.forum.nokia.com/dp?uri=http%3A%2F%2Fsw.nokia.com%2Fid%2F9001c8de-
c19e-41a0-87d3-5be4297e4d4c%2FS60_Platform_Landmarks_Exchange_Specification_v1_0_en.pdf
From what I can tell it's barely known and barely supported outside the
Ovimaps Symbian world.
While the Landmarks Exchange Specification is more detailed with regard to
some topics (and with regard to actual implementation) it lacks other parts
(at least from what I can see) that are covered by KML. There are certainly
some interesting aspects about the Landmark API (filters and categories) and
parts where the Landmark API is more mature.
The problem I see with using the Qt Mobility Landmark API is that we'd trade
an internal design (and a public API) that is modelled after an open widely
used specification and standard for a design that embraces Ovimaps internal
design. In theory the advantage would be that this would allow for better
usage of Ovimaps data (at expense of possible 1:1 KML import which I'd regard
more important).
But there's a catch even with regard to the "better" Ovimaps import:
> * Maps and Navigation api and widgets, including an Ovi backend
From looking at the current state of the Terms and Conditions of the Ovi Maps
API I'm not sure whether we can legally make use of it:
http://qt.gitorious.org/qt-mobility/qt-
mobility/blobs/master/plugins/geoservices/nokia/OVI_SERVICES_TERMS_AND_CONDITIONS.txt
has some terms such as:
"4. USE OF OVI MAPS API DEVELOPER PACKAGE
[...]
You will not:
(i) use or incorporate the Ovi Maps Service, Ovi Maps API Developer Package or
any part thereof, in connection with any Application or other service (a)
which has the primary functionality of providing turn-by-turn navigation
services, real time navigation or route guidance; or (b) where such
Application's functionality is substantially similar to the Ovi Maps or
navigation/location-based products distributed by Nokia or its affiliates;"
Not sure whether this is supposed to stay like this in the shipped version of
Qt Mobility and whether it affects Marble (which provides turn-by-turn
navigation services, real-time navigation and route guidance e.g.).
Also in Marble we have the policy to only provide geoservices that are free in
the sense of free software in the shipped version. Shipping Ovimaps with the
current Terms and Conditions would surely break that policy (which is one of
our selling points).
Technically Marble already has full support in our stable versions for what
you need to fetch Ovimaps pixmaps tiles (adding support is mostly about
changing a server Url in an XML file AFAIK).
> Against the Qt option, we obviously already have our own superb geo tools
> in Marble that we could work with to produce our own api, but somewhat
> smaller in scope than QtMobility or Marble itself:
> * basic geo classes like coordinates, location, address etc
> * Location api
> * Celestial Mechanics api
* Stuff like the GeoPainter which works well with projections
* Initial Qt Quick binding support
... and lots more.
Personally I think that it would be nice to have at least "conversion
wrappers" available for Qt Mobility in some Marble classes (like e.g. for Qt
Mobility's QGeoCoordinates vs. Marble's GeoDataCoordinates).
Best Regards,
Torsten
More information about the Marble-devel
mailing list