source: subversion/libs/libosm/test3.cpp @ 2327

Revision 2327, 1.4 KB checked in by jonb, 7 years ago (diff)

Fix lat/lon precision, generate self-closing tags, indent output, error check parsing

Line 
1#include "Parser.h"
2#include "Client.h"
3#include "Node.h"
4#include <iostream>
5#include <fstream>
6#include <sstream>
7
8using std::cout;
9using std::cerr;
10using std::endl;
11
12void dotest(OSM::Components *comp1);
13
14int main(int argc,char* argv[])
15{
16        if(argc != 2)
17        {
18                cerr<<"Usage: test InOsmFile > out.osm" << endl;
19                exit(1);
20        }
21       
22        std::ifstream in(argv[1]);
23        OSM::Components *comp1 = OSM::Parser::parse(in);
24        in.close();
25
26        if (comp1 == NULL) {
27                cerr << "Error occurred while parsing: " << argv[1] << endl;
28                return 1;
29        }
30       
31        comp1->toXML(std::cout);
32
33        delete comp1;
34
35        return 0;
36}
37
38void dotest(OSM::Components *comp1)
39{
40        comp1->rewindNodes();
41        comp1->rewindSegments();
42        comp1->rewindWays();
43
44        while(comp1->hasMoreNodes())
45        {
46                OSM::Node *n = comp1->nextNode();
47                cout << "Node id: " << n->id << " lat: " << n->getLat()
48                                <<" lon: " << n->getLon() << endl << "tags:" << endl;
49
50                std::vector<std::string> keys = n->getTags();
51
52                for(int count=0; count<keys.size(); count++)
53                {
54                        cout  << "Key: " << keys[count] << " Value: " << 
55                                n->tags[keys[count]] << endl;
56                }
57        }
58        while(comp1->hasMoreWays())
59        {
60                OSM::Way *w = comp1->nextWay();
61                cout << "Way id: " << w->id << " tags:" << endl;
62
63                std::vector<std::string> keys = w->getTags();
64
65                for(int count=0; count<keys.size(); count++)
66                {
67                        cout  << "Key: " << keys[count] << " Value: " << 
68                                w->tags[keys[count]] << endl;
69                }
70        }
71}
Note: See TracBrowser for help on using the repository browser.