api.orange.pl/locateterminal .2em tutorial dla budujacych aplikacje ...

30
api.orange.pl api.orange.pl/locateterminal tutorial dla buduj ˛ acych aplikacje lokalizacyjne (i nie tylko) wer. 1.1 Grzegorz Sabak, Orange Polska, SiPU pa´ zdziernik 2012

Transcript of api.orange.pl/locateterminal .2em tutorial dla budujacych aplikacje ...

  • api.orange.pl

    api.orange.pl/locateterminaltutorial dla budujacych aplikacje lokalizacyjne (i nie tylko)

    wer. 1.1

    Grzegorz Sabak, Orange Polska, SiPU

    pazdziernik 2012

  • api.orange.pl

    Spis tresci

    Spis tresci

    1 Intro

    2 api.orange.plWprowadzeniePrzykad - przegladarkaPrzykad - Python 2 i 3Przykad - PHPPrzykad - Java

    3 Integracja WWWWordPressKrok po krokuPlugin Lemon MiniW strone klienta: JavaScript

    4 Lokalizacja w sieci OrangeInformacje podstawoweDokadnosc lokalizacji

    5 Zakonczenie

  • api.orange.pl

    Intro

    O tutorialu...

    Ten przewodnik przeznaczony jest dla osb, ktre chca rozpoczac korzystanie z API telekomunikacyjnego udostepnianego(obecnie testowo przez Orange Polska). Zawiera przykady kodu zrdowego w rznych jezykach programowania, ktremoga byc wykorzystanie do testowania swojego srodowiska, badz jako ziarno na bazie ktrego zbudowana zostaniewieksza funkcjonalnosc.

    Pozyteczne techniki/narzedzia/protokoy

    Aby efektywnie skorzystac z tego przewodnika potrzebna jest podstawowa znajomosc takich jezykw programowania jakJava, Perl i PHP (nieznajacy ktregos z nich moga pominac pewne fragmenty). Dodatkowo, w trakcie czytania tutorialawarto uzupenic swoja wiedze w nastepujacych tematach (pod logami sa linki do stron domowych projektw):

    - Ajax -pozwala na asynchroniczne uzupenienie zawartosci strony WWW,- jQuery - biblioteka JavaScript,

    - geoJSON - format kodowania obiektw GIS jako obiektw JSON,- Firebug - dodatek do Firefoxa wspierajacy development dla Internetu,- WampServer - Apache, PHP, MySQL na Windowsie,

    - WordPress - oprogramowanie do publikacji w Internecie,- Eclipse - zintegrowane srodowisko programistyczne.

    http://pl.wikipedia.org/wiki/AJAXhttp://jquery.comhttp://geojson.orghttp://getfirebug.comhtt[://www.wampserver.comhttp://wordpress.orghttp://eclipse.org

  • api.orange.pl

    api.orange.pl

    1 Intro

    2 api.orange.plWprowadzeniePrzykad - przegladarkaPrzykad - Python 2 i 3Przykad - PHPPrzykad - Java

    3 Integracja WWWWordPressKrok po krokuPlugin Lemon MiniW strone klienta: JavaScript

    4 Lokalizacja w sieci OrangeInformacje podstawoweDokadnosc lokalizacji

    5 Zakonczenie

  • api.orange.pl

    api.orange.pl

    Wprowadzenie

    Wprowadzenie

    api.orange.pl - portal informacyjny

    portal poswiecony Telecom Web Services w sieci Orange Polskainformacje umozliwiajace szybki startdokumentacja i FAQudostepnione usugi: SMS, USSD, lokalizacjaprzykady aplikacjihaso dostepu: przydzielane indywidualnie

    api.orange.pl - API do usug telco

    URL do wywoywania usug telekomunikacyjnychKomunikacja szyfrowana z autoryzacja HTTP Basicbezpatne (na chwile obecna)bezpieczne dla abonentw sieci Orangew fazie testw - nie wszystko zawsze dziaahaso dostepu: uzyskuje sie wysyajac SMSa o tresci: API nanumer 551

  • api.orange.pl

    api.orange.pl

    Przykad - przegladarka

    Przykady

    Korzystanie z API - przykady

    W przedstawionych przykadach nalezy wprost w kodzie zrdowym zastapic wartosciami nastepujace ciagi znakw:

    API_USER - indywidualny login uzytkownika API, najczesciej w postaci 48501XXXXXX.API_PASSWORD - haso (cos w rodzaju D873MFO0QEDF56E),API_MSISDN - nr tel. dla ktrego wywoywana jest funkcja API (np. lokalizowanego terminala) w postaci 501YYYYYY.

    Korzystanie z API przez przegladarke WWW

    1 W oknie przegladarki wpisujemy:https://api.orange.pl/sendussd/?to=API_MSISDN&msg=Orange+API+rules+OK

    2 Serwer pyta o autoryzacje. Podajemy w odpowiednich polach API_USER i API_PASSWORD3 Uzytkownik o numerze telefonu API_MSISDN otrzymuje ciekawe haso.4 W oknie przegladarki widzimy potwierdzenie przyjecia wiadomosci przez serwer:

    1 2 3 4f423e1d6978c6837994954 MessageWaiting5

  • api.orange.pl

    api.orange.pl

    Przykad - Python 2 i 3

    Przykad - Python 2

    Korzystanie z API w skryptach Python 2

    Ponizej przedstawiono przykadowy kod zrdowy w jezyku Python wysyajacy zapytanie o lokalizacje terminala. Plik jest

    rwniez zaaczony tutaj:

    orangeapi2.py

    1 from base64 import b64encode2 from httplib import HTTPSConnection3

    4 import urllib5

    6 #dane uzytkownika API7 apiusr = b"API_USER"8 apipwd = b"API_PASSWORD"9

    10 #parametry wywolania API11 params_loc = urllib.urlencode({msisdn: API_MSISDN})12 params_msg = urllib.urlencode({msg: Orange API rules OK, to: API_MSISDN})13

    14 #zapytanie do serwera15 userpasswd = b64encode(apiusr+b":"+apipwd).decode("ascii")16 headers = { Authorization : Basic %s % userpasswd }17

    18 conn = HTTPSConnection("api.orange.pl")19 conn.request(GET, /terminallocation?+params_loc, headers = headers)20 #conn.request(GET, /sendussd?+params_msg, headers = headers)21 #conn.request(GET, /sendsms?+params_msg, headers = headers)22

    23 #analiza odpowiedzi z serwera24 response = conn.getresponse()25 print(response.status, response.reason)26 print()27 data = response.read()28 print(data)29 conn.close()

    from base64 import b64encode from httplib import HTTPSConnection

    import urllib

    #dane uzytkownika APIapiusr = b"API_USER"apipwd = b"API_PASSWORD"

    #parametry wywolania APIparams_loc = urllib.urlencode({'msisdn': API_MSISDN})params_msg = urllib.urlencode({'msg': 'Orange API rules OK', 'to': API_MSISDN})

    #zapytanie do serwerauserpasswd = b64encode(apiusr+b":"+apipwd).decode("ascii") headers = { 'Authorization' : 'Basic %s' % userpasswd }

    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)

    #analiza odpowiedzi z serweraresponse = conn.getresponse() print(response.status, response.reason)print()data = response.read() print(data) conn.close()

  • api.orange.pl

    api.orange.pl

    Przykad - Python 2 i 3

    Przykad - Python 3

    Korzystanie z API w skryptach Python 3

    W wersji trzeciej Pythona wszystko jest tak samo, tylko umieszczone w innych moduach :)

    Plik zrdowy jest rwniez zaaczony tutaj:

    orangeapi3.py

    1 from http.client import HTTPSConnection2 from base64 import b64encode3

    4 import urllib.parse5

    6 #dane uzytkownika API7 apiusr = b"API_USER"8 apipwd = b"API_PASSWORD"9

    10 #parametry wywolania API11 params_loc = urllib.parse.urlencode({msisdn: API_MSISDN})12 params_msg = urllib.parse.urlencode({msg: Orange API rules OK, to: API_MSISDN})13

    14 #zapytanie do serwera15 userpasswd = b64encode(apiusr+b":"+apipwd).decode("ascii")16 headers = { Authorization : Basic %s % userpasswd }17

    18 conn = HTTPSConnection("api.orange.pl")19 conn.request(GET, /terminallocation?+params_loc, headers = headers)20 #conn.request(GET, /sendussd?+params_msg, headers = headers)21 #conn.request(GET, /sendsms?+params_msg, headers = headers)22

    23 #analiza odpowiedzi z serwera24 response = conn.getresponse()25 print(response.status, response.reason)26 print()27 data = response.read()28 print(data)29 conn.close()

    from http.client import HTTPSConnection from base64 import b64encode

    import urllib.parse

    #dane uzytkownika APIapiusr = b"API_USER"apipwd = b"API_PASSWORD"

    #parametry wywolania APIparams_loc = urllib.parse.urlencode({'msisdn': API_MSISDN})params_msg = urllib.parse.urlencode({'msg': 'Orange API rules OK', 'to': API_MSISDN})

    #zapytanie do serwerauserpasswd = b64encode(apiusr+b":"+apipwd).decode("ascii") headers = { 'Authorization' : 'Basic %s' % userpasswd }

    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)

    #analiza odpowiedzi z serweraresponse = conn.getresponse() print(response.status, response.reason)print()data = response.read() print(data) conn.close()

  • api.orange.pl

    api.orange.pl

    Przykad - PHP

    Przykad - PHP

    Korzystanie z API w skryptach PHP

    Jak mozna zauwazyc PHP jest rwniez dosc kompaktowe w porwnaniu do nastepnego przykadu w Javie :)

    Plik zrdowy jest rwniez zaaczony tutaj:

    orangeapi.php

    1

  • api.orange.pl

    api.orange.pl

    Przykad - Java

    Przykad - Java

    Korzystanie z API w jezyku Java

    W zaaczniku przedstawiono przykadowy kod zrdowy w jezyku Java wysyajacy krtki tekst jako wiadomosc USSD.Przed kompilacja pliku nalezy dociagnac biblioteki httpclient w wersji 4.1 bedace czescia Apache HttpComponents.

    Przejscie przez proxy

    Jesli poaczenie do api.orange.pl wymaga przejscia przez proxy, w kodzie nalezy umiescic nastepujace linie:1 HttpHost proxy = new HttpHost("http.proxy.com", 8080, "http");2 httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);

    Zaminiajac oczywiscie nazwe hosta (powyzej http.proxy.com) i numer portu (8080) na wasciwe.

    Dla uzytkownikw mavena

    Programisci korzystajacy z pakietu maven moga dociagnac wasciwa wersje httpclienta poprzez dodanie do plikupom.xml nastepujacej definicji zaleznosci:

    1 2 org.apache.httpcomponents3 httpclient4 4.1.35 compile6

    OrangeApiTest.javaimportjava.net.URLEncoder;

    importjava.util.ArrayList;

    importjava.util.List;

    importjavax.net.ssl.SSLContext;

    importjavax.net.ssl.TrustManager;

    importjavax.net.ssl.X509TrustManager;

    importorg.apache.http.HttpEntity;

    importorg.apache.http.HttpHost;

    importorg.apache.http.HttpResponse;

    importorg.apache.http.NameValuePair;

    importorg.apache.http.auth.AuthScope;

    importorg.apache.http.auth.UsernamePasswordCredentials;

    importorg.apache.http.client.methods.HttpGet;

    importorg.apache.http.client.utils.URLEncodedUtils;

    importorg.apache.http.conn.ClientConnectionManager;

    importorg.apache.http.conn.params.ConnRoutePNames;

    importorg.apache.http.conn.scheme.Scheme;

    importorg.apache.http.conn.scheme.SchemeRegistry;

    importorg.apache.http.conn.ssl.SSLSocketFactory;

    importorg.apache.http.impl.client.DefaultHttpClient;

    importorg.apache.http.message.BasicNameValuePair;

    importorg.apache.http.params.CoreProtocolPNames;

    importorg.apache.http.util.EntityUtils;

    publicclassOrangeApiTest{

    publicstaticvoidmain(String[]args)throwsException{

    Stringmsisdn="API_MSISDN";

    StringuserName="API_USER";

    Stringpassword="API_PASSWORD";

    DefaultHttpClienthttpclient=newDefaultHttpClient();

    //Poniszedwielinienaleyodkomentowaiwypeniwaciwymiparametrami

    //jeliruchwychodziprzezproxy

    //

    //HttpHostproxy=newHttpHost("http.proxy.com",8080,"http");

    //httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY,proxy);

    //autoryzacjaBASICHTTP

    httpclient.getCredentialsProvider().setCredentials(

    newAuthScope("api.orange.pl",443),

    newUsernamePasswordCredentials(userName,password));

    Listparams=newArrayList();

    params.add(newBasicNameValuePair("to",msisdn));

    params.add(newBasicNameValuePair("msg","OrangeAPIrulesOK"));

    HttpGethttpget=newHttpGet("https://api.orange.pl/sendussd/?"+URLEncodedUtils.format(params,"UTF-8"));

    //HttpGethttpget=newHttpGet("https://api.orange.pl/sendsms/?from=OrangeAPI&to="+msisdn+"+&msg=Orange%20API");

    //HttpGethttpget=newHttpGet("https://api.orange.pl/terminallocation/?msisdn="+msisdn);

    //PoczeniapoSSLbezsprawdzaniapoprawnocicertyfikatuserwera.

    TrustManager[]trustAllCerts=newTrustManager[]{

    newX509TrustManager(){

    publicjava.security.cert.X509Certificate[]getAcceptedIssuers(){returnnull;}

    publicvoidcheckClientTrusted(java.security.cert.X509Certificate[]certs,StringauthType){}

    publicvoidcheckServerTrusted(java.security.cert.X509Certificate[]certs,StringauthType){}

    }

    };

    SSLContextsc=null;

    sc=SSLContext.getInstance("SSL");

    sc.init(null,trustAllCerts,newjava.security.SecureRandom());

    SSLSocketFactoryssf=newSSLSocketFactory(sc);

    ClientConnectionManagerccm=httpclient.getConnectionManager();

    SchemeRegistrysr=ccm.getSchemeRegistry();

    sr.register(newScheme("https",443,ssf));

    //wykonajpoczeniedoserweraAPI

    HttpResponseresponse=httpclient.execute(httpget);

    HttpEntityentity=response.getEntity();

    System.out.println(response.getStatusLine());

    System.out.println(EntityUtils.toString(entity));

    EntityUtils.consume(entity);

    }

    }

  • api.orange.pl

    Integracja WWW

    1 Intro

    2 api.orange.plWprowadzeniePrzykad - przegladarkaPrzykad - Python 2 i 3Przykad - PHPPrzykad - Java

    3 Integracja WWWWordPressKrok po krokuPlugin Lemon MiniW strone klienta: JavaScript

    4 Lokalizacja w sieci OrangeInformacje podstawoweDokadnosc lokalizacji

    5 Zakonczenie

  • api.orange.pl

    Integracja WWW

    WordPress

    Integracja WordPress

    Korzysci z integracji strony WWW z siecia komunikacyjna

    Wieksza interaktywosc = wiekszy ruchBezpieczenstwoNowe konteksty np. lokalizacjaTelekomunikacyjne wsparcie procesw biznesowych

    Jednym ze sposobw integracji jest przygotowanie plugina dla oprogramowania WordPress.

    Czym jest WordPress i dlaczego warto go uzywac?

    Najpopularniejszy silnik blogowy wybierany przez maych 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 funkcjonalnosc (plug-iny)21k+ gotowych pluginw w oficjalnym repozytorium (darmowych)1.6k+ gotowych motyww (rwniez darmowych)atwa instalacja i aktualizacja, przyjazna administracjaAktywnie rozwijany przez spoecznosc developerwArchitektura przyjazna dostosowywaniu: API, szablony, zaczepy: (akcje i filtry)Bezpieczenstwo: czyszczenie danych, role uzytkownikw, prawa dostepu do tresci

  • api.orange.pl

    Integracja WWW

    Krok po kroku

    1. Przygotowanie srodowiska

    1 Zainstaluj WAMP - zawiera Apache, MySql2 Zainstaluj WordPress - aktualna wersja do sciagniecia ze strony projektu3 Zainstaluj Eclipse lub dowolne inne zintegrowane srodowisko deweloperskie wspierajace PHP

    2. Praca za PROXY

    Jesli PC na ktrym zainstalowane jest srodowisko znajduje sie za proxy HTTP, to w pliku wp-config.php znajdujacym siew gwnym katalogu instalacji WordPressa nalezy dodac nastepujacy kod - podstawiajac odpowiednie wartosci.define( WP_PROXY_HOST, adres.ip.proxy );define( WP_PROXY_PORT, 8080 );

    3. Instalacja pluginu

    1 Utwrz katalog wp-content/plugins/lemon-mini2 Umiesc w tym katalogu plik lemon-mini.php (z zaacznika )3 Aktywuj plugin w konsoli WordPress

  • api.orange.pl

    Integracja WWW

    Krok po kroku

    Integracja WordPress

    lemon-mini

    Lemon Mini to plugin dla WordPressa, ktrego gwne funkcjonalnosci to:Zamienianie w tresci wpisu sowa kluczowego [lmini-locate msisdn="" user="" passwd=""/] na tekstinformujacy o lokalizacji. Argumenty:

    msisdn - lokalizowany numer,user - uzytkownik api.orange.pl,passwd - haso uzytkownika.

    Udostepnianie filtra lmini-locate, ktry moze byc wykorzystywany przez inne rozszerzenia WordPressa.Uzyskana lokalizacja przechowywane jest przez 60 sekund. Po tym czasie kazde odswiezenie strony powodujewywoanie API do lokalizacji terminala.

    Wiecej informacji na temat plugina oraz jego najbardziej aktualna wersje mozna pobrac ze strony telco21.pl.

    telco21.pl

    telco21.pl jest strona dedykowana koncepcji Telco 2.1, polegajacej na dalszym uproszczeniu sposobw korzystania zfunkcjonalnosci telekomunikacyjnych udostepnianych przez operatorw sieci. Na stronie umieszczony dostepna jest zawszenajnowsza wersja plugina.

    http://telco21.pl/lemon-minihttp://telco21.pl

  • api.orange.pl

    Integracja WWW

    Krok po kroku

    plugin-mini.php

    Kod zrdowy plugina znajduje sie w zaaczniku . Warto zwrcic uwage na jego kilka ponizszych fragmentw.

    Rejestracja filtra lmini-locate.29 add_filter( lmini-locate, lmn_localize, 10, 3 );

    Po wywoaniu funkcji apply_filters( lmini-locate, $msisdn, $user, $passwd ) zostanie wywoanafunkcja lmn_localize(), do ktrej przekazane zostana trzy argumenty.Rejestracja shortcodeu lmini-locate.

    32 add_shortcode( lmini-locate, lmn_shortcode_handler );

    Jesli w tresci posta pojawi sie sowo kluczowe [lmini-locate /], to zostanie ono zamienione na wartosc tekstowazwrcona przez funkcje lmn_shortcode_handler().Zakodowanie nazwy uzytkownika i hasa: Funkcja base64_encode().

    40 $usrpwd = base64_encode( "{$options[user]}:{$options[passwd]}" );

    Zapamietanie lokalizacji na 60 sekund w celu zmniejszenia liczby odwoan do API. Uzycie funkcji: get_transient(),set_transient().

    75 $loc = get_transient( lmn_location_ . $msisdn );76

    77 if ( $temp_loc )78 return $loc;79 else {80 $loc = lmn_call_orange_api( $options, terminallocation, $query );81

    82 // zapamietaj lokalizacje przez 60 sek.83 set_transient( lmn_location_ . $msisdn, $loc, 60 );84 }

    lmini.json.php

    locate.html

    Location in progress...

    lemon-mini.php

  • api.orange.pl

    Integracja WWW

    W strone klienta: JavaScript

    JavaScript

    Programowanie dla browsera

    Czesto zachodzi potrzeba/chec/koniecznosc by o lokalizacje abonenta wystapic z poziomu skryptu wykonywanego przeprzegladarke. W takim przypadku nalezy zwrcic uwage na dwie rzeczy:

    Wywoanie API lokalizacyjnego pod czas generowania kodu HTML opzni moment wyswietlenia strony o jakies 4-5 sek.potrzebne na zlokalizowanie terminala.Obowiazuje same origin policy, czyli zasada, ktra mwi, ze skrypt wykonywany przez przegladarke moze aczyc siejedynie z serwerem, z ktrego zosta pobrany.

    Problem pierwszy mozna rozwiazac korzystajac z Ajaxa, co pozwoli na wyswietlenie strony i asynchroniczne uzupenieniejej po wykonaniu lokalizacji.Jednym z rozwiazan drugiej kwestii jest wykorzystanie niewielkiego skryptu umieszczonego na serwerze, ktry bedzie penipozyteczna role proxy i dodatkowo przekonwertuje otrzymanego XML-a na obiekt GeoJSON. To rozwiazanie zostaoopisane na nastepnych slajdach.Przykady bardziej zaawansowanych zastosowan i innych podejsc do rozwiazania powyzszych kwestii zamieszczono nablogu telco21.pl.

    http://telco21.pl

  • api.orange.pl

    Integracja WWW

    W strone klienta: JavaScript

    lmini.json.php

    1

    Komentarz

    Skrypt wywouje zdefiniowany w pluginie lemon-mini filtr lmoni-locate, ktry zwraca lokalizacje abonenta. Nastepnieprzygotowuje tablice zgodna ze specyfikacja GeoJSON, ktra funkcja PHP json_encode() koduje tablice do obiektuJSON.

  • api.orange.pl

    Integracja WWW

    W strone klienta: JavaScript

    locate.html

    1 2 3 4 5 Localizacja przy pomocy api.orange.pl6 7 .in-progress {8 font-style: italic;9 }

    10 11 12 13 $(document).ready(function(){14 $.getJSON(lmini.json.php,15 {msisdn:} // tu wpisz lokalizaowny numer16 ).done (function ( data ){17 var msg = "Zlokalizowano: " + data.features[0].geometry.coordinates[0] +18 "," + data.features[0].geometry.coordinates[1];19 $(#location).text(msg).removeClass(in-progress);20 });21 });22 23 24 25 Location in progress...26 27

    Komentarz

    Strona korzysta z biblioteki jQuery. Po wyswietleniu zawartosci strony nastepuje asynchroniczne odwoanie w tle do serwera(skrypt lmini.json.php). Otrzymany w odpowiedzi obiekt JSON jest dekodowany, a na podstawie otrzymanych danychuaktualniana jest zawartosc strony (bez koniecznosci jej odswiezenia).

  • api.orange.pl

    Lokalizacja w sieci Orange

    1 Intro

    2 api.orange.plWprowadzeniePrzykad - przegladarkaPrzykad - Python 2 i 3Przykad - PHPPrzykad - Java

    3 Integracja WWWWordPressKrok po krokuPlugin Lemon MiniW strone klienta: JavaScript

    4 Lokalizacja w sieci OrangeInformacje podstawoweDokadnosc lokalizacji

    5 Zakonczenie

  • api.orange.pl

    Lokalizacja w sieci Orange

    Informacje podstawowe

    Wprowadzenie

    Podstawowe informacje

    Terminal mobilny: urzadzenie uzytkownika + karta SIM, komrka: obszar zasiegu radiowego.W sieci Orange lokalizacja terminali wykonywana jest metoda Cell-Id - jako lokalizacja zwracany jest punkt przypisanyidentyfikatorowi komrki.Srodek komrki: punkt zwracany jako lokalizacja terminala znajdujacego sie w komrce - oznaczany pomaranczowymtrjkatem na prezentowanych mapkach.Komrki pokrywaja sie, w wybrane miejsce moze nalezec do wielu komrek sieci telefonii mobilnej.Dokadnosc lokalizacji zalezy od typu obszaru, na ktrym znajduje sie terminal.Dokadnosc lokalizacji zalezy 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 duzy (w stosunku do systemu GPS) bad lokalizacji - wiecej informacji na nastepnych slajdachPrzy wielokrotnej lokalizacji nieporuszajacego sie terminala moga byc zwracane jego rzne lokalizacje (pozorny ruchterminala).Bardziej zaawansowane telefony (dziaajace w sieci 3G) beda lokalizowane z wiekszym bedem niz te mniejzaawansowane.Nie mozna zakadac, ze jako lokalizacja terminala wskazany zostanie srodek komrki najblizszy rzeczywistemupoozeniu terminala.Wsprzedne srodkw komrek sa "poprawiane" przez operatora sieci - z czasem zmieniaja swoje poozenie.

    Poozenie srodkw komrek

    Na nastepnych slajdach przedstawiono mapki, na ktrych pomaranczowymi trjkatami zaznaczono srodki komrek naobszarach w poblizu 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

    Dokadnosc lokalizacji

    Dokadnosc lokalizacji

    Wprowadzenie

    Ponizej przedstawiono (za [5]) wyniki testw dokadnosci lokalizacji w sieci komrkowej Orange przeprowadzonych w latach2010-2011. Jako bad lokalizacji przyjmuje sie odlegosc od punktu wskazanego przez odbiornik GPS do punktuwskazanego przez usuge lokalizacji terminala w sieci komrkowej.

    Typy analizowanych obszarw i drg

    highway- fragmenty autostradmajor- drogi ekspresowe, drogi krajoweregular- drogi inne: wojewdzkie, powiatowe, itp.city- obszary scisych centrw miasttown- obszary maych miast, duze miasta poza scisym centrumrural- obszary pozamiejskie

  • api.orange.pl

    Lokalizacja w sieci Orange

    Dokadnosc lokalizacji

    Bad lokalizacji

    Statystyki bedu lokalizacji - wartosci w km

    typ obiektu n e Q25 Q50 Q75 emax Q75 Q25highway 3801 2.63 1.93 1.17 2.24 3.60 20.37 2.43major 13147 2.00 1.58 0.83 1.54 2.79 10.46 1.97

    regular 6889 3.73 2.47 2.06 3.30 4.74 28.83 2.70city 729 0.38 0.31 0.17 0.31 0.49 1.62 0.32town 2482 1.16 1.00 0.47 0.86 1.50 7.77 1.03rural 6044 3.66 1.90 2.42 3.39 4.61 17.53 2.19

    Analiza

    Na podstawie uzyskanych wynikw mozna wywnioskowac, ze dokadnosc metody Cell-Id jest najwieksza dla obszarw typucity. Bad lokalizacji dla 25% przypadkw by mniejszy niz 0.17 km, a dla 75% mniejszy niz 0.49 km. Duzo gorszejdokadnosci lokalizacji metoda Cell-Id nalezy spodziewac sie dla drg typu regular i obszarw typu rural. Bad srednilokalizacji wynosi dla nich odpowiednio 3.47 km i 3.67 km. Sa to wartosci kilkukrotnie wieksze niz wartosc bedu sredniegodla obszaru city. Potwierdza to powszechne przekonanie, ze w centrach miast operatorzy telefonii komrkowej budujaznacznie wiecej komrek o mniejszym zasiegu, by w ten sposb zaspokoic istniejaca tam potrzebe wiekszej pojemnoscisieci wynikajaca z koncentracji ludnosci.Nalezy zauwazyc, ze dla wszystkich typw drg i obszarw stosunek odchylenia standardowego do wartosci sredniej jestpowyzej 50%, a w przypadku city wynosi 93.2%. Swiadczy to o duzym rozproszeniu wartosci bedu. Porwnujac jednakwartosci rozstepw miedzykwartylowych (kolumna Q75 Q25), mozna zauwazyc, ze wartosc dla drg typu regular jestkilkukrotnie wieksza niz dla obszarw typu city. Oznacza to, ze rozkad bedu dla duzych miast jest znacznie mniejrozproszony niz dla drg wojewdzkich.

  • api.orange.pl

    Lokalizacja w sieci Orange

    Dokadnosc lokalizacji

    Statystyki bedu lokalizacji - histogramy czestosci

    0.000.050.100.150.200.250.300.35

    0 2 4 6 8 10error [km]

    citytownrural

    0.000.050.100.150.200.250.300.35

    0 2 4 6 8 10error [km]

    highwaymajor

    regular

  • api.orange.pl

    Zakonczenie

    Historia dokumentu

    data wer. autor opis02.2012 1.0 Grzegorz Sabak wersja poczatkowa (PHP, Python, dokadnosc lokalizacji)10.2012 1.1 Grzegorz Sabak dodano opis pluginu dla WordPress, korzystanie z JavaScript,

    Ajax, GeoJSON

    Odnosniki

    I Strona gwna api.orange.plhttp://api.orange.pl

    I Oficjalna strona domowa Pythonahttp://www.python.org

    I Oficjalna strona domowa PHPhttp://www.php.net

    I Strona domowa WordPresshttp://www.wordpress.org/

    [5] G. Sabak.Modelowanie lokalizacji uzytkownikw sieci telefonii komrkowej dla potrzeb Inteligentnych Systemw Transportowych.Wojskowa Akademia Techniczna, 2011. Wersja PDF

    http://sabak.info/vastar/G.Sabak-praca.pdf

  • api.orange.pl

    Zakonczenie

    Zamiast zakonczenia

    Introapi.orange.plWprowadzeniePrzykad - przegladarkaPrzykad - Python 2 i 3Przykad - PHPPrzykad - Java

    Integracja WWWWordPressKrok po krokuPlugin Lemon MiniW strone klienta: JavaScript

    Lokalizacja w sieci OrangeInformacje podstawoweDokadnosc lokalizacji

    Zakonczenie