root/tools/osm2pgrouting/trunk/src/math_functions.cpp

Revision 189, 1.8 KB (checked in by murray, 2 years ago)

osm2pgrouting: add a new tool to this project, which converts and imports osm data to a pgrouting
table

Line 
1/***************************************************************************
2 *   Copyright (C) 2008 by Daniel Wendt                                                                    *
3 *   gentoo.murray@gmail.com                                                                                       *
4 *                                                                         *
5 *   This program is free software; you can redistribute it and/or modify  *
6 *   it under the terms of the GNU General Public License as published by  *
7 *   the Free Software Foundation; either version 2 of the License, or     *
8 *   (at your option) any later version.                                   *
9 *                                                                         *
10 *   This program is distributed in the hope that it will be useful,       *
11 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
12 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
13 *   GNU General Public License for more details.                          *
14 *                                                                         *
15 *   You should have received a copy of the GNU General Public License     *
16 *   along with this program; if not, write to the                         *
17 *   Free Software Foundation, Inc.,                                       *
18 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
19 ***************************************************************************/
20
21#include "stdafx.h"
22#include "math_functions.h"
23#include <math.h>
24
25// calculation of the lenght is correct???
26double getLength(Node* a, Node* b)
27{
28        int R = 6371; //km
29        double PI =3.141592653589793238462643;
30
31        double dLat=(b->lat -a->lat)*PI/180;
32        double dLon=(b->lon -a->lon)*PI/180;
33
34        double c = sin(dLat/2) * sin(dLat/2) + cos(a->lat*PI/180) * cos(b->lat*PI/180) * sin(dLon/2) * sin(dLon/2);
35
36        double d = 2 * atan2(sqrt(c), sqrt(1-c));
37
38        return R*d;
39
40}
41
Note: See TracBrowser for help on using the browser.