Pobierz plik

advertisement
api.orange.pl
api.orange.pl/locateterminal
tutorial dla budujacych
˛
aplikacje lokalizacyjne (i nie tylko)
wer. 1.1
Grzegorz Sabak, Orange Polska, SiPU
październik 2012
api.orange.pl
Spis treści
Spis treści
1
Intro
2
api.orange.pl
Wprowadzenie
Przykład - przegladarka
˛
Przykład - Python 2 i 3
Przykład - PHP
Przykład - Java
3
Integracja WWW
WordPress
Krok po kroku
Plugin Lemon Mini
W strone˛ klienta: JavaScript
4
Lokalizacja w sieci Orange
Informacje podstawowe
Dokładność lokalizacji
5
Zakończenie
api.orange.pl
Intro
O tutorialu...
Ten przewodnik przeznaczony jest dla osób, które chca˛ rozpoczać
˛ korzystanie z API telekomunikacyjnego udostepnianego
˛
(obecnie testowo przez Orange Polska). Zawiera przykłady kodu źródłowego w różnych jezykach
˛
programowania, które
moga˛ być wykorzystanie do testowania swojego środowiska, badź
˛ jako ziarno na bazie którego zbudowana zostanie
wieksza
˛
funkcjonalność.
Pożyteczne techniki/narz˛edzia/protokoły
Aby efektywnie skorzystać z tego przewodnika potrzebna jest podstawowa znajomość takich jezyków
˛
programowania jak
Java, Perl i PHP (nieznajacy
˛ któregoś z nich moga˛ pominać
˛ pewne fragmenty). Dodatkowo, w trakcie czytania tutoriala
warto uzupełnić swoja˛ wiedz˛e w nastepuj
˛ acych
˛
tematach (pod logami sa˛ linki do stron domowych projektów):
- Ajax -pozwala na asynchroniczne uzupełnienie zawartości strony WWW,
- jQuery - biblioteka JavaScript,
- geoJSON - format kodowania obiektów GIS jako obiektów JSON,
- Firebug - dodatek do Firefoxa wspierajacy
˛ development dla Internetu,
- WampServer - Apache, PHP, MySQL na Windowsie,
- WordPress - oprogramowanie do publikacji w Internecie,
- Eclipse - zintegrowane środowisko programistyczne.
api.orange.pl
api.orange.pl
1
Intro
2
api.orange.pl
Wprowadzenie
Przykład - przegladarka
˛
Przykład - Python 2 i 3
Przykład - PHP
Przykład - Java
3
Integracja WWW
WordPress
Krok po kroku
Plugin Lemon Mini
W strone˛ klienta: JavaScript
4
Lokalizacja w sieci Orange
Informacje podstawowe
Dokładność lokalizacji
5
Zakończenie
api.orange.pl
api.orange.pl
Wprowadzenie
Wprowadzenie
api.orange.pl - portal informacyjny
portal poświecony
˛
Telecom Web Services w sieci Orange Polska
informacje umożliwiajace
˛ szybki start
dokumentacja i FAQ
udostepnione
˛
usługi: SMS, USSD, lokalizacja
przykłady aplikacji
hasło dostepu:
˛
przydzielane indywidualnie
api.orange.pl - API do usług telco
URL do wywoływania usług telekomunikacyjnych
Komunikacja szyfrowana z autoryzacja˛ HTTP Basic
bezpłatne (na chwile˛ obecna)
˛
bezpieczne dla abonentów sieci Orange
w fazie testów - nie wszystko zawsze działa
hasło dostepu:
˛
uzyskuje sie˛ wysyłajac
˛ SMSa o treści: API na
numer 551
api.orange.pl
api.orange.pl
Przykład - przegladarka
˛
Przykłady
Korzystanie z API - przykłady
W przedstawionych przykładach należy wprost w kodzie źródłowym zastapić
˛ wartościami nastepuj
˛ ace
˛ ciagi
˛ znaków:
API_USER - indywidualny login użytkownika API, najcz˛eściej w postaci 48501XXXXXX.
API_PASSWORD - hasło (coś w rodzaju D873MFO0QEDF56E),
API_MSISDN - nr tel. dla którego wywoływana jest funkcja API (np. lokalizowanego terminala) w postaci 501YYYYYY.
Korzystanie z API przez przegladark˛
˛
e WWW
W oknie przegladarki
˛
wpisujemy:
https://api.orange.pl/sendussd/?to=API_MSISDN&msg=Orange+API+rules+OK
Serwer pyta o autoryzacje.
˛ Podajemy w odpowiednich polach API_USER i API_PASSWORD
Użytkownik o numerze telefonu API_MSISDN otrzymuje ciekawe hasło.
W oknie przegladarki
˛
widzimy potwierdzenie przyjecia
˛
wiadomości przez serwer:
1
2
3
4
1
2
3
4
5
<?xml version="1.0" encoding="utf-8" ?>
<response>
<result>4f423e1d6978c683799495</result>
<deliveryStatus>MessageWaiting</deliveryStatus>
</response>
api.orange.pl
api.orange.pl
Przykład - Python 2 i 3
Przykład - Python 2
Korzystanie z API w skryptach Python 2
Poniżej przedstawiono przykładowy kod źródłowy w jezyku
˛
Python wysyłajacy
˛ zapytanie o lokalizacje˛ terminala. Plik jest
również załaczony
˛
tutaj:
orangeapi2.py
1
2
from base64 import b64encode
from httplib import HTTPSConnection
3
4
import urllib
5
6
7
8
#dane uzytkownika API
apiusr = b"API_USER"
apipwd = b"API_PASSWORD"
9
10
11
12
#parametry wywolania API
params_loc = urllib.urlencode({’msisdn’: API_MSISDN})
params_msg = urllib.urlencode({’msg’: ’Orange API rules OK’, ’to’: API_MSISDN})
13
14
15
16
#zapytanie do serwera
userpasswd = b64encode(apiusr+b":"+apipwd).decode("ascii")
headers = { ’Authorization’ : ’Basic %s’ % userpasswd }
17
18
19
20
21
conn = HTTPSConnection("api.orange.pl")
conn.request(’GET’, ’/terminallocation?’+params_loc, headers = headers)
#conn.request(’GET’, ’/sendussd?’+params_msg, headers = headers)
#conn.request(’GET’, ’/sendsms?’+params_msg, headers = headers)
22
23
24
25
26
27
28
29
#analiza odpowiedzi z serwera
response = conn.getresponse()
print(response.status, response.reason)
print()
data = response.read()
print(data)
conn.close()
api.orange.pl
api.orange.pl
Przykład - Python 2 i 3
Przykład - Python 3
Korzystanie z API w skryptach Python 3
W wersji trzeciej Pythona wszystko jest tak samo, tylko umieszczone w innych modułach :)
Plik źródłowy jest również załaczony
˛
tutaj:
orangeapi3.py
1
2
from http.client import HTTPSConnection
from base64 import b64encode
3
4
import urllib.parse
5
6
7
8
#dane uzytkownika API
apiusr = b"API_USER"
apipwd = b"API_PASSWORD"
9
10
11
12
#parametry wywolania API
params_loc = urllib.parse.urlencode({’msisdn’: API_MSISDN})
params_msg = urllib.parse.urlencode({’msg’: ’Orange API rules OK’, ’to’: API_MSISDN})
13
14
15
16
#zapytanie do serwera
userpasswd = b64encode(apiusr+b":"+apipwd).decode("ascii")
headers = { ’Authorization’ : ’Basic %s’ % userpasswd }
17
18
19
20
21
conn = HTTPSConnection("api.orange.pl")
conn.request(’GET’, ’/terminallocation?’+params_loc, headers = headers)
#conn.request(’GET’, ’/sendussd?’+params_msg, headers = headers)
#conn.request(’GET’, ’/sendsms?’+params_msg, headers = headers)
22
23
24
25
26
27
28
29
#analiza odpowiedzi z serwera
response = conn.getresponse()
print(response.status, response.reason)
print()
data = response.read()
print(data)
conn.close()
api.orange.pl
api.orange.pl
Przykład - PHP
Przykład - PHP
Korzystanie z API w skryptach PHP
Jak można zauważyć PHP jest również dość kompaktowe w porównaniu do nastepnego
˛
przykładu w Javie :)
Plik źródłowy jest również załaczony
˛
tutaj:
orangeapi.php
1
2
3
4
<?php
//dane uzytkownika API
$username = ’API_USER’;
$password = ’API_PASSWORD’;
5
6
7
//parametry wywolania API
$params_loc = array(’msisdn’=>’API_MSISDN’);
8
9
10
$params_msg = array(’to’=>’API_MSISDN’,
’msg’=>’Orange API rules OK’);
11
12
13
$url = ’https://api.orange.pl/terminallocation?’ . http_build_query($params_loc);
//$url = ’https://api.orange.pl/sendussd?’ . http_build_query($params_msg);
14
15
16
17
18
19
$context = stream_context_create(array(
’http’ => array(
’header’ => "Authorization: Basic " . base64_encode("$username:$password")
)
));
20
21
22
//zapytanie do serwera
$page = file($url, false, $context);
23
24
25
26
27
28
29
//odpowied z serwera
foreach ($page as $part)
{
echo $part;
}
?>
api.orange.pl
api.orange.pl
Przykład - Java
Przykład - Java
Korzystanie z API w jezyku
˛
Java
W załaczniku
˛
przedstawiono przykładowy kod źródłowy w jezyku
˛
Java wysyłajacy
˛ krótki tekst jako wiadomość USSD.
Przed kompilacja˛ pliku należy dociagn
˛ ać
˛ biblioteki httpclient w wersji 4.1 bed
˛ ace
˛ cz˛eścia˛ Apache HttpComponents.
Przejście przez proxy
Jeśli połaczenie
˛
do api.orange.pl wymaga przejścia przez proxy, w kodzie należy umieścić nastepuj
˛ ace
˛ linie:
1
2
HttpHost proxy = new HttpHost("http.proxy.com", 8080, "http");
httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
Zaminiajac
˛ oczywiście nazwe˛ hosta (powyżej http.proxy.com) i numer portu (8080) na właściwe.
Dla użytkowników maven’a
Programiści korzystajacy
˛ z pakietu maven moga˛ dociagn
˛ ać
˛ właściwa˛ wersje˛ httpclient’a poprzez dodanie do pliku
pom.xml nastepuj
˛ acej
˛ definicji zależności:
1
2
3
4
5
6
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.1.3</version>
<scope>compile</scope>
</dependency>
api.orange.pl
Integracja WWW
1
Intro
2
api.orange.pl
Wprowadzenie
Przykład - przegladarka
˛
Przykład - Python 2 i 3
Przykład - PHP
Przykład - Java
3
Integracja WWW
WordPress
Krok po kroku
Plugin Lemon Mini
W strone˛ klienta: JavaScript
4
Lokalizacja w sieci Orange
Informacje podstawowe
Dokładność lokalizacji
5
Zakończenie
api.orange.pl
Integracja WWW
WordPress
Integracja WordPress
Korzyści z integracji strony WWW z siecia˛ komunikacyjna˛
Wieksza
˛
interaktywość = wiekszy
˛
ruch
Bezpieczeństwo
Nowe konteksty np. lokalizacja
Telekomunikacyjne wsparcie procesów biznesowych
Jednym ze sposobów integracji jest przygotowanie plugina dla oprogramowania WordPress.
Czym jest WordPress i dlaczego warto go używać?
Najpopularniejszy silnik blogowy wybierany przez małych i najwiekszych
˛
(CNN, NYTimes, Nokia, TechCrunch, People,
WordPress.com, blog.pl (Onet))
Napisany w PHP, oparty na MySQL, wykorzystuje CSS3 i JavaScript (jQuery)
Łatwo modyfikowalny wyglad
˛ (motywy) i funkcjonalność (plug-iny)
21k+ gotowych pluginów w oficjalnym repozytorium (darmowych)
1.6k+ gotowych motywów (również darmowych)
Łatwa instalacja i aktualizacja, przyjazna administracja
Aktywnie rozwijany przez społeczność developerów
Architektura przyjazna dostosowywaniu: API, szablony, zaczepy: (akcje i filtry)
Bezpieczeństwo: „czyszczenie” danych, role użytkowników, prawa dostepu
˛
do treści
api.orange.pl
Integracja WWW
Krok po kroku
1. Przygotowanie środowiska
1
2
3
Zainstaluj WAMP - zawiera Apache, MySql
Zainstaluj WordPress - aktualna wersja do ściagni
˛ ecia
˛
ze strony projektu
Zainstaluj Eclipse lub dowolne inne zintegrowane środowisko deweloperskie wspierajace
˛ PHP
2. Praca za PROXY
Jeśli PC na którym zainstalowane jest środowisko znajduje sie˛ za proxy HTTP, to w pliku wp-config.php znajdujacym
˛
sie˛
w głównym katalogu instalacji WordPressa należy dodać nastepuj
˛ acy
˛ kod - podstawiajac
˛ odpowiednie wartości.
define( ’WP_PROXY_HOST’, ’adres.ip.proxy’ );
define( ’WP_PROXY_PORT’, ’8080’ );
3. Instalacja pluginu
1
2
3
Utwórz katalog wp-content/plugins/lemon-mini
Umieść w tym katalogu plik lemon-mini.php (z załacznika
˛
)
Aktywuj plugin w konsoli WordPress
api.orange.pl
Integracja WWW
Krok po kroku
Integracja WordPress
lemon-mini
Lemon Mini to plugin dla WordPressa, którego główne funkcjonalności to:
Zamienianie w treści wpisu słowa kluczowego [lmini-locate msisdn="" user="" passwd=""/] na tekst
informujacy
˛ o lokalizacji. Argumenty:
msisdn - lokalizowany numer,
user - użytkownik api.orange.pl,
passwd - hasło użytkownika.
Udostepnianie
˛
filtra lmini-locate, który może być wykorzystywany przez inne rozszerzenia WordPressa.
Uzyskana lokalizacja przechowywane jest przez 60 sekund. Po tym czasie każde odświeżenie strony powoduje
wywołanie API do lokalizacji terminala.
Wiecej
˛
informacji na temat plugina oraz jego najbardziej aktualna˛ wersje˛ można pobrać ze strony telco21.pl.
telco21.pl
telco21.pl jest strona˛ dedykowana˛ koncepcji Telco 2.1, polegajacej
˛ na dalszym uproszczeniu sposobów korzystania z
funkcjonalności telekomunikacyjnych udostepnianych
˛
przez operatorów sieci. Na stronie umieszczony dostepna
˛
jest zawsze
najnowsza wersja plugina.
api.orange.pl
Integracja WWW
Krok po kroku
plugin-mini.php
Kod źródłowy plugina znajduje sie˛ w załaczniku
˛
. Warto zwrócić uwage˛ na jego kilka poniższych fragmentów.
Rejestracja filtra lmini-locate.
29
add_filter( ’lmini-locate’, ’lmn_localize’, 10, 3 );
Po wywołaniu funkcji apply_filters( ’lmini-locate’, $msisdn, $user, $passwd ) zostanie wywołana
funkcja lmn_localize(), do której przekazane zostana˛ trzy argumenty.
Rejestracja shortcode’u lmini-locate.
32
add_shortcode( ’lmini-locate’, ’lmn_shortcode_handler’ );
Jeśli w treści posta pojawi sie˛ słowo kluczowe [lmini-locate /], to zostanie ono zamienione na wartość tekstowa˛
zwrócona˛ przez funkcje˛ lmn_shortcode_handler().
Zakodowanie nazwy użytkownika i hasła: Funkcja base64_encode().
40
$usrpwd = base64_encode( "{$options[’user’]}:{$options[’passwd’]}" );
Zapamietanie
˛
lokalizacji na 60 sekund w celu zmniejszenia liczby odwołań do API. Użycie funkcji: get_transient(),
set_transient().
75
$loc = get_transient( ’lmn_location_’ . $msisdn );
76
77
78
79
80
if ( $temp_loc )
return $loc;
else {
$loc = lmn_call_orange_api( $options, ’terminallocation’, $query );
81
// zapamietaj lokalizacje przez 60 sek.
set_transient( ’lmn_location_’ . $msisdn, $loc, 60 );
82
83
84
}
api.orange.pl
Integracja WWW
W strone˛ klienta: JavaScript
JavaScript
Programowanie dla browsera
Cz˛esto zachodzi potrzeba/cheć/konieczność
˛
by o lokalizacje˛ abonenta wystapić
˛ z poziomu skryptu wykonywanego prze
przegladark˛
˛
e. W takim przypadku należy zwrócić uwage˛ na dwie rzeczy:
Wywołanie API lokalizacyjnego pod czas generowania kodu HTML opóźni moment wyświetlenia strony o jakieś 4-5 sek.
potrzebne na zlokalizowanie terminala.
Obowiazuje
˛
same origin policy, czyli zasada, która mówi, że skrypt wykonywany przez przegladark˛
˛
e może łaczyć
˛
sie˛
jedynie z serwerem, z którego został pobrany.
Problem pierwszy można rozwiazać
˛
korzystajac
˛ z Ajaxa, co pozwoli na wyświetlenie strony i asynchroniczne uzupełnienie
jej po wykonaniu lokalizacji.
Jednym z rozwiaza
˛ ń drugiej kwestii jest wykorzystanie niewielkiego skryptu umieszczonego na serwerze, który bedzie
˛
pełnił
pożyteczna˛ role˛ proxy i dodatkowo przekonwertuje otrzymanego XML-a na obiekt GeoJSON. To rozwiazanie
˛
zostało
opisane na nastepnych
˛
slajdach.
Przykłady bardziej zaawansowanych zastosowań i innych podejść do rozwiazania
˛
powyższych kwestii zamieszczono na
blogu telco21.pl.
api.orange.pl
Integracja WWW
W strone˛ klienta: JavaScript
lmini.json.php
1
2
<?php
require_once( ’../../../wp-load.php’ );
3
4
5
header( ’Cache-Control: no-cache, must-revalidate’); // HTTP/1.1
header( ’Content-Type: application/json’ );
6
7
parse_str($_SERVER[’QUERY_STRING’], $query);
8
9
10
define(’API_USER’, ’’); // tu wpisz nazwe uzytkownika
define(’API_PASSWORD’, ’’); // tu wpisz haslo
11
12
$loc = apply_filters( ’lmini-locate’, $query[’msisdn’], API_USER, API_PASSWORD );
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
$response = array();
$response[’type’] = ’FeatureCollection’;
$response[’features’] = array();
$response[’features’][]= array(
’type’ => ’Feature’,
’geometry’ => array(
’type’ => ’Point’,
’coordinates’ => array(
floatval( $loc[’longitude’] ),
floatval( $loc[’latitude’] ),
)
),
’properties’ => array(
’timestamp’=>$loc[’timestamp’],
)
29
30
31
32
);
echo json_encode( $response );
?>
Komentarz
Skrypt wywołuje zdefiniowany w pluginie lemon-mini filtr lmoni-locate, który zwraca lokalizacje˛ abonenta. Nastepnie
˛
przygotowuje tablice˛ zgodna˛ ze specyfikacja˛ GeoJSON, która funkcja˛ PHP json_encode() koduje tablice˛ do obiektu
JSON.
api.orange.pl
Integracja WWW
W strone˛ klienta: JavaScript
locate.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Localizacja przy pomocy api.orange.pl</title>
<style type="text/css">
.in-progress {
font-style: italic;
}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script>
<script>
$(document).ready(function(){
$.getJSON(’lmini.json.php’,
{msisdn:’’} // tu wpisz lokalizaowny numer
).done (function ( data ){
var msg = "Zlokalizowano: " + data.features[0].geometry.coordinates[0] +
"," + data.features[0].geometry.coordinates[1];
$(’#location’).text(msg).removeClass(’in-progress’);
});
});
</script>
</head>
<body>
<span id="location" class="in-progress">Location in progress...</span>
</body>
</html>
Komentarz
Strona korzysta z biblioteki jQuery. Po wyświetleniu zawartości strony nastepuje
˛
asynchroniczne odwołanie w tle do serwera
(skrypt lmini.json.php). Otrzymany w odpowiedzi obiekt JSON jest dekodowany, a na podstawie otrzymanych danych
uaktualniana jest zawartość strony (bez konieczności jej odświeżenia).
api.orange.pl
Lokalizacja w sieci Orange
1
Intro
2
api.orange.pl
Wprowadzenie
Przykład - przegladarka
˛
Przykład - Python 2 i 3
Przykład - PHP
Przykład - Java
3
Integracja WWW
WordPress
Krok po kroku
Plugin Lemon Mini
W strone˛ klienta: JavaScript
4
Lokalizacja w sieci Orange
Informacje podstawowe
Dokładność lokalizacji
5
Zakończenie
api.orange.pl
Lokalizacja w sieci Orange
Informacje podstawowe
Wprowadzenie
Podstawowe informacje
Terminal mobilny: urzadzenie
˛
użytkownika + karta SIM, komórka: obszar zasiegu
˛
radiowego.
W sieci Orange lokalizacja terminali wykonywana jest metoda˛ Cell-Id - jako lokalizacja zwracany jest punkt przypisany
identyfikatorowi komórki.
Środek komórki: punkt zwracany jako lokalizacja terminala znajdujacego
˛
sie˛ w komórce - oznaczany pomarańczowym
trójkatem
˛
na prezentowanych mapkach.
Komórki pokrywaja˛ sie,
˛ w wybrane miejsce może należeć do wielu komórek sieci telefonii mobilnej.
Dokładność lokalizacji zależy od typu obszaru, na którym znajduje sie˛ terminal.
Dokładność lokalizacji zależy od tego czy terminal jest w sieci 2G (wieksza)
˛
czy 3G (mniejsza).
Informacja o lokalizacji zwracana jest po ok 4-5 sekundach od zapytania.
api.orange.pl
Lokalizacja w sieci Orange
Informacje podstawowe
Wprowadzenie
Problemy praktyczne z wykorzystaniem lokalizacji
Relatywnie duży (w stosunku do systemu GPS) bład
˛ lokalizacji - wiecej
˛
informacji na nastepnych
˛
slajdach
Przy wielokrotnej lokalizacji nieporuszajacego
˛
sie˛ terminala moga˛ być zwracane jego różne lokalizacje (pozorny ruch
terminala).
Bardziej zaawansowane telefony (działajace
˛ w sieci 3G) bed
˛ a˛ lokalizowane z wiekszym
˛
błedem
˛
niż te mniej
zaawansowane.
Nie można zakładać, że jako lokalizacja terminala wskazany zostanie środek komórki najbliższy rzeczywistemu
położeniu terminala.
Współrz˛edne środków komórek sa˛ "poprawiane" przez operatora sieci - z czasem zmieniaja˛ swoje położenie.
Położenie środków komórek
Na nastepnych
˛
slajdach przedstawiono mapki, na których pomarańczowymi trójkatami
˛
zaznaczono środki komórek na
obszarach w pobliżu wybranych lokalizacji.
api.orange.pl
Lokalizacja w sieci Orange
Informacje podstawowe
Okolice PW EiTI
api.orange.pl
Lokalizacja w sieci Orange
Informacje podstawowe
Okolice Orange Labs
api.orange.pl
Lokalizacja w sieci Orange
Informacje podstawowe
Okolice UWM
api.orange.pl
Lokalizacja w sieci Orange
Informacje podstawowe
Okolice PŁ
api.orange.pl
Lokalizacja w sieci Orange
Dokładność lokalizacji
Dokładność lokalizacji
Wprowadzenie
Poniżej przedstawiono (za [5]) wyniki testów dokładności lokalizacji w sieci komórkowej Orange przeprowadzonych w latach
2010-2011. Jako bład
˛ lokalizacji przyjmuje sie˛ odległość od punktu wskazanego przez odbiornik GPS do punktu
wskazanego przez usługe˛ lokalizacji terminala w sieci komórkowej.
Typy analizowanych obszarów i dróg
highway- fragmenty autostrad
major- drogi ekspresowe, drogi krajowe
regular- drogi inne: wojewódzkie, powiatowe, itp.
city- obszary ścisłych centrów miast
town- obszary małych miast, duże miasta poza ścisłym centrum
rural- obszary pozamiejskie
api.orange.pl
Lokalizacja w sieci Orange
Dokładność lokalizacji
Bład
˛ lokalizacji
Statystyki błedu
˛
lokalizacji - wartości w km
typ obiektu
n
σ
Q25 Q50
ē
highway 3801 2.63 1.93 1.17 2.24
major
13147 2.00 1.58 0.83 1.54
regular 6889 3.73 2.47 2.06 3.30
city
729 0.38 0.31 0.17 0.31
town
2482 1.16 1.00 0.47 0.86
rural
6044 3.66 1.90 2.42 3.39
Q75
3.60
2.79
4.74
0.49
1.50
4.61
emax Q75 − Q25
20.37
2.43
10.46
1.97
28.83
2.70
1.62
0.32
7.77
1.03
17.53
2.19
Analiza
Na podstawie uzyskanych wyników można wywnioskować, że dokładność metody Cell-Id jest najwieksza
˛
dla obszarów typu
city. Bład
˛ lokalizacji dla 25% przypadków był mniejszy niż 0.17 km, a dla 75% mniejszy niż 0.49 km. Dużo gorszej
dokładności lokalizacji metoda˛ Cell-Id należy spodziewać sie˛ dla dróg typu regular i obszarów typu rural. Bład
˛ średni
lokalizacji wynosi dla nich odpowiednio 3.47 km i 3.67 km. Sa˛ to wartości kilkukrotnie wieksze
˛
niż wartość błedu
˛
średniego
dla obszaru city. Potwierdza to powszechne przekonanie, że w centrach miast operatorzy telefonii komórkowej buduja˛
znacznie wiecej
˛
komórek o mniejszym zasiegu,
˛
by w ten sposób zaspokoić istniejac
˛ a˛ tam potrzebe˛ wiekszej
˛
pojemności
sieci wynikajac
˛ a˛ z koncentracji ludności.
Należy zauważyć, że dla wszystkich typów dróg i obszarów stosunek odchylenia standardowego do wartości średniej jest
powyżej 50%, a w przypadku city wynosi 93.2%. Świadczy to o dużym rozproszeniu wartości błedu.
˛
Porównujac
˛ jednak
wartości rozstepów
˛
miedzykwartylowych
˛
(kolumna Q75 − Q25 ), można zauważyć, że wartość dla dróg typu regular jest
kilkukrotnie wieksza
˛
niż dla obszarów typu city. Oznacza to, że rozkład błedu
˛
dla dużych miast jest znacznie mniej
rozproszony niż dla dróg wojewódzkich.
api.orange.pl
Lokalizacja w sieci Orange
Dokładność lokalizacji
Statystyki błedu
˛
lokalizacji - histogramy cz˛estości
0.35
0.30
0.25
0.20
0.15
0.10
0.05
0.00
city
town
rural
0
2
4
6
8
10
error [km]
0.35
0.30
0.25
0.20
0.15
0.10
0.05
0.00
highway
major
regular
0
2
4
6
error [km]
8
10
api.orange.pl
Zakończenie
Historia dokumentu
data
wer.
autor
opis
02.2012 1.0 Grzegorz Sabak wersja poczatkowa
˛
(PHP, Python, dokładność lokalizacji)
10.2012 1.1 Grzegorz Sabak dodano opis pluginu dla WordPress, korzystanie z JavaScript,
Ajax, GeoJSON
Odnośniki
I
Strona główna api.orange.pl
http://api.orange.pl
I
Oficjalna strona domowa Pythona
http://www.python.org
I
Oficjalna strona domowa PHP
http://www.php.net
I
Strona domowa WordPress
http://www.wordpress.org/
[5] G. Sabak.
Modelowanie lokalizacji użytkowników sieci telefonii komórkowej dla potrzeb Inteligentnych Systemów Transportowych.
Wojskowa Akademia Techniczna, 2011. Wersja PDF
api.orange.pl
Zakończenie
Zamiast zakończenia
Download