Logo ROOT  
Reference Guide
df028_SQliteIPLocation.C File Reference

Detailed Description

Plot the location of ROOT downloads reading a remote sqlite3 file.

View in nbviewer Open in SWAN The world map is held by a TH2Poly histogram which, after filling, will show the world wide dispersion of ROOT's users. To histogram filling, is done thanks to a lambda expression having as input parameters the two columns of the database: "IPLongitude' - for the longitude, and the "IPLatitude" - for the latitude. The data related to the latitude and the longitude has been provided from the log files storing the users IP. This product includes GeoLite2 data created by MaxMind, available from http://www.maxmind.com.

void df028_SQliteIPLocation() {
auto rdf = ROOT::RDF::MakeSqliteDataFrame( "http://root.cern/files/root_download_stats.sqlite", "SELECT * FROM accesslog;" );
auto f = TFile::Open("http://root.cern.ch/files/WM.root");
auto worldMap = f->Get<TH2Poly>("WMUSA");
auto fillIPLocation = [&worldMap] ( const std::string &sLongitude, const std::string &sLatitude ) {
if (!( sLongitude == "" ) && !( sLatitude == "" )) {
auto latitude = std::stof(sLatitude);
auto longitude = std::stof(sLongitude);
worldMap->Fill(longitude, latitude);
}
};
rdf.Foreach( fillIPLocation, { "IPLongitude", "IPLatitude" } );
auto worldMapCanvas = new TCanvas();
worldMapCanvas->SetLogz();
worldMap->SetTitle("ROOT Downloads per Location (GitHub exluded);Longitude;Latitude");
worldMap->DrawClone("colz");
}
Date
August 2018
Author
Alexandra-Maria Dobrescu

Definition in file df028_SQliteIPLocation.C.

f
#define f(i)
Definition: RSha256.hxx:122
ROOT::RDF::MakeSqliteDataFrame
RDataFrame MakeSqliteDataFrame(std::string_view fileName, std::string_view query)
Factory method to create a SQlite RDataFrame.
Definition: RSqliteDS.cxx:545
TFile::Open
static TFile * Open(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0)
Create / open a file.
Definition: TFile.cxx:3946
TCanvas
Definition: TCanvas.h:23
TH2Poly
Definition: TH2Poly.h:66