Signalstyrka mobildatanät - API

Mobiloperatörers signalstyrka har mätts på flera platser i Sverige med småflyg, cirka 165 meter över marken.
Inom kort tillförs även mätdata från drönarflygningar mellan 60-120 meter.

API Endpoints

Kom igång snabbt med Postman

Här kan du hämta en komplett Postman collection med alla API endpoints förberedda och redo att testa. Collectionen innehåller 16 olika testfall som demonstrerar alla funktioner i API:et.

Ladda ner Postman Collection

Importera filen i Postman och börja testa API:et direkt. Alla exempel är konfigurerade för Göteborgsområdet.

Filtreringsmöjligheter

Både cirkel- och polygon-sökning stöder samma filtreringsalternativ:

Datumfiltrering

Operatörsfiltrering

Teknologifiltrering

Signalstyrkefiltrering

Följande endpoints är tillgängliga för att konsumera signalstyrkedata:

1. Cirkel-sökning

Endpoint: POST /api/circle.php

Sök efter mätvärden inom en cirkel baserat på en centralpunkt och radie.

Request Body (JSON):

{
  "center": {
    "lat": 57.7089,
    "lon": 11.9746
  },
  "radius_meters": 1000,
  "from_date": "2024-01-15",
  "to_date": "2024-01-20",
  "mncs": [240, 242],
  "technologies": ["LTE", "5G"],
  "limit": 1000,
  "offset": 0
}

Parametrar:

Response Exempel:

{
  "success": true,
  "data": [
    {
      "lat": 57.7089,
      "lon": 11.9746,
      "rsrp_rscp_rssi": -85.5,
      "technology": "LTE",
      "mnc": 240,
      "operator_name": "Telia",
      "measurement_date": "2024-01-15",
      "time": "14:30:25",
      "distance": 0.0
    },
    {
      "lat": 57.7091,
      "lon": 11.9748,
      "rsrp_rscp_rssi": -92.3,
      "technology": "5G",
      "mnc": 242,
      "operator_name": "Telenor",
      "measurement_date": "2024-01-15",
      "time": "14:31:10",
      "distance": 25.4
    }
  ],
  "pagination": {
    "total": 150,
    "limit": 1000,
    "offset": 0,
    "has_more": false
  },
  "query": {
    "center": {
      "lat": 57.7089,
      "lon": 11.9746
    },
    "radius_meters": 1000,
    "filters": {
      "from_date": "2024-01-15",
      "to_date": "2024-01-20",
      "mncs": [240, 242],
      "technologies": ["LTE", "5G"],
      "include_only_rsrp_rssi_below": null
    }
  },
  "area_info": {
    "has_measurements": true,
    "warning": null
  }
}

2. Polygon-sökning

Endpoint: POST /api/polygon.php

Sök efter mätvärden inom en polygon definierad av en serie punkter.

Request Body (JSON):

{
  "polygon": [
    {"lat": 57.7089, "lon": 11.9746},
    {"lat": 57.7189, "lon": 11.9746},
    {"lat": 57.7189, "lon": 11.9846},
    {"lat": 57.7089, "lon": 11.9846}
  ],
  "from_date": "2024-01-15",
  "to_date": "2024-01-20",
  "mncs": [240],
  "technologies": ["LTE"],
  "limit": 1000,
  "offset": 0
}

Parametrar:

Response Exempel:

{
  "success": true,
  "data": [
    {
      "lat": 57.7089,
      "lon": 11.9746,
      "rsrp_rscp_rssi": -78.2,
      "technology": "LTE",
      "mnc": 240,
      "operator_name": "Telia",
      "measurement_date": "2024-01-15",
      "time": "14:30:25"
    },
    {
      "lat": 57.7091,
      "lon": 11.9748,
      "rsrp_rscp_rssi": -88.7,
      "technology": "5G",
      "mnc": 242,
      "operator_name": "Telenor",
      "measurement_date": "2024-01-15",
      "time": "14:31:10"
    }
  ],
  "pagination": {
    "total": 75,
    "limit": 1000,
    "offset": 0,
    "has_more": false
  },
  "query": {
    "polygon": [
      {"lat": 57.7089, "lon": 11.9746},
      {"lat": 57.7189, "lon": 11.9746},
      {"lat": 57.7189, "lon": 11.9846},
      {"lat": 57.7089, "lon": 11.9846}
    ],
    "filters": {
      "from_date": "2024-01-15",
      "to_date": "2024-01-20",
      "mncs": [240, 242],
      "technologies": ["LTE", "5G"],
      "include_only_rsrp_rssi_below": null
    }
  },
  "area_info": {
    "has_measurements": true,
    "warning": null
  }
}

3. Lista operatörer och teknologier

Endpoint: GET /api/operators.php

Hämta lista över tillgängliga operatörer, teknologier och mätningsdatum.

Response:

{
  "success": true,
  "data": {
    "operators": [
      {"mnc": 240, "operator_name": "Telia"},
      {"mnc": 242, "operator_name": "Telenor"}
    ],
    "technologies": ["LTE", "5G", "3G"],
    "measurement_dates": ["2024-01-16", "2024-01-15"],
    "total_measurements": 150000
  }
}

Response Format

Alla endpoints returnerar JSON med följande struktur:

{
  "success": true,
  "data": [...],
  "pagination": {
    "total": 1500,
    "limit": 1000,
    "offset": 0,
    "has_more": true
  },
  "query": {
    // Upprepar sökparametrarna
  }
}

Data Format

Varje mätvärde innehåller:

Response Metadata:


Exempel på användning

Här är exempel på hur du kan använda API:et med JavaScript:

Cirkel-sökning med datumintervall:

// Sök inom 500m från västra Göteborg mellan 15-20 januari 2024
const response = await fetch('/api/circle.php', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    center: { lat: 57.7089, lon: 11.9746 },
    radius_meters: 500,
    from_date: '2024-01-15',
    to_date: '2024-01-20',
    technologies: ['LTE', '5G'],
    limit: 100
  })
});

const data = await response.json();
console.log(data.data); // Array med mätvärden

Polygon-sökning med endast från-datum:

// Sök inom polygon från 1 januari 2024 och framåt
const response = await fetch('/api/polygon.php', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    polygon: [
      {lat: 57.7089, lon: 11.9746},
      {lat: 57.7189, lon: 11.9746},
      {lat: 57.7189, lon: 11.9846},
      {lat: 57.7089, lon: 11.9846}
    ],
    from_date: '2024-01-01',
    mncs: [240, 242]
  })
});

const data = await response.json();
console.log(data.data); // Array med mätvärden

Minimal sökning (alla operatörer och teknologier):

// Sök inom 1km från västra Göteborg - alla operatörer och teknologier inkluderade
const response = await fetch('/api/circle.php', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    center: { lat: 57.7089, lon: 11.9746 },
    radius_meters: 1000
    // Ingen mncs eller technologies = alla inkluderade
  })
});

const data = await response.json();
console.log(data.data); // Array med mätvärden från alla operatörer och teknologier

Sökning efter dålig signalstyrka:

// Hitta områden med dålig signalstyrka (under -100 dBm)
const response = await fetch('/api/circle.php', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    center: { lat: 57.7089, lon: 11.9746 },
    radius_meters: 2000,
    include_only_rsrp_rssi_below: -100,
    technologies: ['LTE', '5G']
  })
});

const data = await response.json();
console.log(data.data); // Endast mätningar med dålig signalstyrka
console.log(data.area_info.has_measurements); // true/false om det finns mätningar i området
if (data.area_info.warning) {
  console.warn(data.area_info.warning); // Varning om inga mätningar finns
}