• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdeedu API Reference
  • KDE Home
  • Contact Us
 

marble

  • sources
  • kde-4.14
  • kdeedu
  • marble
  • src
  • plugins
  • runner
  • osm
src/plugins/runner/osm/OsmParser.cpp
Go to the documentation of this file.
1 //
2 // This file is part of the Marble Virtual Globe.
3 //
4 // This program is free software licensed under the GNU LGPL. You can
5 // find a copy of this license in LICENSE.txt in the top directory of
6 // the source code.
7 //
8 // Copyright 2011 Thibaut Gridel <tgridel@free.fr>
9 // Copyright 2011 Konstantin Oblaukhov <oblaukhov.konstantin@gmail.com>
10 // Copyright 2014 Bernhard Beschow <bbeschow@cs.tu-berlin.de>
11 //
12 
13 #include "OsmParser.h"
14 #include "OsmElementDictionary.h"
15 #include "GeoDataDocument.h"
16 
17 namespace Marble {
18 
19 const QColor OsmParser::backgroundColor( 0xF1, 0xEE, 0xE8 );
20 
21 OsmParser::OsmParser()
22  : GeoParser( 0 )
23 {
24  // All these tags can be found updated at
25  // http://wiki.openstreetmap.org/wiki/Map_Features#Landuse
26 
27  m_areaTags.append( "landuse=forest" );
28  m_areaTags.append( "natural=wood" );
29  m_areaTags.append( "area=yes" );
30  m_areaTags.append( "waterway=riverbank" );
31  m_areaTags.append( "building=yes" );
32  m_areaTags.append( "amenity=parking" );
33  m_areaTags.append( "leisure=park" );
34 
35  m_areaTags.append( "landuse=allotments" );
36  m_areaTags.append( "landuse=basin" );
37  m_areaTags.append( "landuse=brownfield" );
38  m_areaTags.append( "landuse=cemetery" );
39  m_areaTags.append( "landuse=commercial" );
40  m_areaTags.append( "landuse=construction" );
41  m_areaTags.append( "landuse=farm" );
42  m_areaTags.append( "landuse=farmland" );
43  m_areaTags.append( "landuse=farmyard" );
44  m_areaTags.append( "landuse=garages" );
45  m_areaTags.append( "landuse=greenfield" );
46  m_areaTags.append( "landuse=industrial" );
47  m_areaTags.append( "landuse=landfill" );
48  m_areaTags.append( "landuse=meadow" );
49  m_areaTags.append( "landuse=military" );
50  m_areaTags.append( "landuse=orchard" );
51  m_areaTags.append( "landuse=quarry" );
52  m_areaTags.append( "landuse=railway" );
53  m_areaTags.append( "landuse=reservoir" );
54  m_areaTags.append( "landuse=residential" );
55  m_areaTags.append( "landuse=retail" );
56 
57  qSort( m_areaTags.begin(), m_areaTags.end() );
58 }
59 
60 OsmParser::~OsmParser()
61 {
62  qDeleteAll( m_dummyPlacemarks );
63  qDeleteAll( m_nodes );
64 }
65 
66 void OsmParser::setNode( quint64 id, GeoDataPoint *point )
67 {
68  m_nodes[id] = point;
69 }
70 
71 GeoDataPoint *OsmParser::node( quint64 id )
72 {
73  return m_nodes.value( id );
74 }
75 
76 void OsmParser::setWay( quint64 id, GeoDataLineString *way )
77 {
78  m_ways[id] = way;
79 }
80 
81 GeoDataLineString *OsmParser::way( quint64 id )
82 {
83  return m_ways.value( id );
84 }
85 
86 void OsmParser::setPolygon( quint64 id, GeoDataPolygon *polygon )
87 {
88  m_polygons[id] = polygon;
89 }
90 
91 GeoDataPolygon *OsmParser::polygon( quint64 id )
92 {
93  return m_polygons.value( id );
94 }
95 
96 bool OsmParser::tagNeedArea( const QString &keyValue ) const
97 {
98  return qBinaryFind( m_areaTags.constBegin(), m_areaTags.constEnd(), keyValue ) != m_areaTags.constEnd();
99 }
100 
101 void OsmParser::addDummyPlacemark( GeoDataPlacemark *placemark )
102 {
103  m_dummyPlacemarks << placemark;
104 }
105 
106 bool OsmParser::isValidRootElement()
107 {
108  return isValidElement(osm::osmTag_osm);
109 }
110 
111 bool OsmParser::isValidElement(const QString& tagName) const
112 {
113  if (!GeoParser::isValidElement(tagName))
114  return false;
115 
116  //always "valid" because there is no namespace
117  return true;
118 }
119 
120 GeoDocument* OsmParser::createDocument() const
121 {
122  return new GeoDataDocument;
123 }
124 
125 }
GeoDataDocument.h
Marble::GeoDataPoint
A Geometry object representing a 3d point.
Definition: GeoDataPoint.h:47
Marble::OsmParser::tagNeedArea
bool tagNeedArea(const QString &keyValue) const
Definition: src/plugins/runner/osm/OsmParser.cpp:96
Marble::OsmParser::node
GeoDataPoint * node(quint64 id)
Definition: src/plugins/runner/osm/OsmParser.cpp:71
Marble::OsmParser::polygon
GeoDataPolygon * polygon(quint64 id)
Definition: src/plugins/runner/osm/OsmParser.cpp:91
Marble::OsmParser::setWay
void setWay(quint64 id, GeoDataLineString *way)
Definition: src/plugins/runner/osm/OsmParser.cpp:76
Marble::OsmParser::addDummyPlacemark
void addDummyPlacemark(GeoDataPlacemark *placemark)
Definition: src/plugins/runner/osm/OsmParser.cpp:101
Marble::GeoParser
Definition: GeoParser.h:40
OsmElementDictionary.h
QList::append
void append(const T &value)
Marble::GeoDataPolygon
A polygon that can have "holes".
Definition: GeoDataPolygon.h:81
Marble::OsmParser::setPolygon
void setPolygon(quint64 id, GeoDataPolygon *polygon)
Definition: src/plugins/runner/osm/OsmParser.cpp:86
Marble::OsmParser::setNode
void setNode(quint64 id, GeoDataPoint *point)
Definition: src/plugins/runner/osm/OsmParser.cpp:66
QString
QColor
Marble::OsmParser::OsmParser
OsmParser()
Definition: src/plugins/runner/osm/OsmParser.cpp:21
Marble::GeoDataLineString
A LineString that allows to store a contiguous set of line segments.
Definition: GeoDataLineString.h:75
QList::end
iterator end()
Marble::GeoParser::isValidElement
virtual bool isValidElement(const QString &tagName) const
Definition: GeoParser.cpp:117
Marble::osm::osmTag_osm
const char * osmTag_osm
Definition: OsmElementDictionary.cpp:19
Marble::OsmParser::way
GeoDataLineString * way(quint64 id)
Definition: src/plugins/runner/osm/OsmParser.cpp:81
Marble::OsmParser::backgroundColor
static const QColor backgroundColor
Definition: src/plugins/runner/osm/OsmParser.h:47
Marble::OsmParser::~OsmParser
virtual ~OsmParser()
Definition: src/plugins/runner/osm/OsmParser.cpp:60
QList::constEnd
const_iterator constEnd() const
QList::constBegin
const_iterator constBegin() const
OsmParser.h
Marble::GeoDataPlacemark
a class representing a point of interest on the map
Definition: GeoDataPlacemark.h:54
QList::begin
iterator begin()
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:13:41 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

marble

Skip menu "marble"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdeedu API Reference

Skip menu "kdeedu API Reference"
  • Analitza
  •     lib
  • kalgebra
  • kalzium
  •   libscience
  • kanagram
  • kig
  •   lib
  • klettres
  • marble
  • parley
  • rocs
  •   App
  •   RocsCore
  •   VisualEditor
  •   stepcore

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal