🤬
  • ■ ■ ■ ■ ■
    RIT.js
    1 1  // This is the source code for the Bellingcat Radar Interference Tracker.
    2  -// Tool Link: https://ollielballinger.users.earthengine.app/view/bellingcat-radar-interference-tracker
    3  -// GEE Link: https://code.earthengine.google.com/23c69d3233af216ff7b6c357bdb6b143
    4  - 
    5  - 
    6 2  // The tool provides a user interface which enables the analysis of Radio Frequency Interference (RFI)
    7 3  // Most of the RFI caused by ground-based systems are military radars
    8 4  // Investigating the spatial and temporal characteristics of the signal can yield information on the deployment of military radar systems
    skipped 11 lines
    20 16  // 9. Map Setup
    21 17  // 10. Initialize App
    22 18   
    23  -// For queries, please contact ollie.ballinger@sant.ox.ac.uk
     19 +// For queries, please contact @oballinger
    24 20   
    25 21  // --------------------- Step 1: Load Data --------------------------------
    26 22   
    skipped 21 lines
    48 44  var vhA = vh.filter(ee.Filter.eq("orbitProperties_pass", "ASCENDING"));
    49 45  var vhD = vh.filter(ee.Filter.eq("orbitProperties_pass", "DESCENDING"));
    50 46   
     47 +//print(ee.Date(vhD.first().get('system:time_start')))
     48 +print(vhD.filter(ee.Filter.eq("platform_number", "A")).first());
    51 49  // --------------------- Step 2: Configure Map --------------------------------
    52 50   
    53 51  // Create the main map
    skipped 194 lines
    248 246  // --------------------- Step 7: Create RFI Chart --------------------------------
    249 247   
    250 248  // Create panels to hold lon/lat values.
    251  -var lon = ui.Label();
    252  -var lat = ui.Label();
     249 + 
     250 +var latlon = ui.Label();
     251 +// possible future option to let people report radars using google form
     252 +// var latlon = ui.Label('', {}, 'https://docs.google.com/forms/d/e/1FAIpQLSeyzIGmxjRaFb0DRXfnOgpY3k46P1daKAeRGVeY8QedkSHT0w/viewform?usp=pp_url&entry.1697422577=26.61,+49.95');
    253 253   
    254 254  // Generates a new time series chart of RFI for the given coordinates.
    255 255  var generateChart = function (coords) {
    256 256   // Update the lon/lat panel with values from the click event.
    257  - lon.setValue("lon: " + coords.lon.toFixed(2));
    258  - lat.setValue("lat: " + coords.lat.toFixed(2));
     257 + var latlonStr = coords.lat.toFixed(2) + ", " + coords.lon.toFixed(2);
     258 + 
     259 + latlon.setValue("Coordinates: " + latlonStr);
     260 + 
     261 + // google form integration
     262 + //latlon.setValue("Report a Radar at these coordinates: " + latlonStr);
     263 + //latlon.setUrl('https://docs.google.com/forms/d/e/1FAIpQLSeyzIGmxjRaFb0DRXfnOgpY3k46P1daKAeRGVeY8QedkSHT0w/viewform?usp=pp_url&entry.1697422577='+latlonStr);
    259 264   
    260 265   // Add a dot for the point clicked on.
    261 266   var point = ee.FeatureCollection(ee.Geometry.Point(coords.lon, coords.lat));
    skipped 180 lines
    442 447   );
    443 448   
    444 449   configureExample([lab1, link, lab2, lab3], 0.1);
     450 + 
     451 + mapPanel.addLayer(outline, {
     452 + palette: ["black", "red", "green", "blue"],
     453 + min: 0,
     454 + max: 3,
     455 + });
    445 456  };
    446 457   
    447 458  // Dimona Radar Facility
    skipped 7 lines
    455 466   "The radar can monitor the take-off of any aircraft or missile up to 1,500 miles away, which would give Israel an extra 60-70 seconds to react if Iran fired a missile. The radar is so powerful that Israeli officials feared that RFI would impact the accuracy of anti-tank missiles being tested nearby."
    456 467   );
    457 468   var lab3 = ui.Label(
    458  - "Israel's Negev Nuclear Research Center is located in the same valley, just a few kilometers to the north. The RFI Graph above shows consistent and strong interference since 2017."
     469 + "Though the point is centered on the large X-band radar antenna, the actual source of the observed RFI seems to be Israel's Negev Nuclear Research Center, located in the same valley just a few kilometers to the north. The RFI Graph above shows consistent and strong interference since 2017."
    459 470   );
    460 471   
    461 472   configureExample([lab1, lab2, lab3], 0.8);
    skipped 30 lines
    492 503   configureExample([lab1, lab2], 0.8);
    493 504  };
    494 505   
     506 +// Kashmir
     507 +var loc5_function = function () {
     508 + var lab1 = ui.Label(
     509 + "The RFI graph shows periodic radar activity in Kashmir since 2018. This case illustrates a useful tip when using this tool; RFI can be measured with greater precision over water because there's less background noise."
     510 + );
     511 + 
     512 + configureExample([lab1], 0.8);
     513 +};
     514 + 
    495 515  // Some pre-set locations of interest that will be loaded into a pulldown menu.
    496 516  // Dict contains the coordinates, zoom level, date range, and function to be triggered when navigating to these locations
    497 517  var locationDict = {
    skipped 25 lines
    523 543   date: "2021-12-14",
    524 544   func: loc4_function,
    525 545   },
     546 + "Kashmir, India/Pakistan Border": {
     547 + lon: 73.79,
     548 + lat: 33.18,
     549 + zoom: 10,
     550 + date: "2022-01-15",
     551 + func: loc5_function,
     552 + },
    526 553  };
    527 554   
    528 555  // Create the location pulldown.
    skipped 38 lines
    567 594  // Add all of the modules created above to the User Interface Panel
    568 595  inspectorPanel.add(intro);
    569 596  inspectorPanel.add(dateSlider);
    570  -inspectorPanel.add(ui.Panel([lon, lat], ui.Panel.Layout.flow("horizontal")));
     597 +inspectorPanel.add(ui.Panel([latlon], ui.Panel.Layout.flow("horizontal")));
    571 598  inspectorPanel.add(ui.Label("placeholder"));
    572 599  inspectorPanel.add(
    573 600   ui.Label(
    skipped 12 lines
    586 613  );
    587 614  inspectorPanel.add(viewPanel);
    588 615  inspectorPanel.add(locationPanel);
    589  -inspectorPanel.widgets().set(11, contact);
     616 +inspectorPanel.add(contact);
    590 617   
    591 618  // --------------------- Step 10: Initialize --------------------------------
    592 619   
    skipped 15 lines
Please wait...
Page is in error, reload to recover