Engineering:Frenchelon
| Part of a series on |
| Global surveillance |
|---|
| Disclosures |
| Systems |
| Agencies |
| People |
| Places |
| Laws |
| Proposed changes |
| Concepts |
| Related topics |

"Frenchelon" is the nickname given to the signal intelligence system operated by France. The name is a reference to its Anglo-American counterpart ECHELON.[1]
History
Its existence has never been officially acknowledged by French authorities, although numerous journalists, based on military information, have mentioned it, since the European Parliament investigated ECHELON and also its implications in counter-terrorism. The term was coined by Kenneth Cukier, an American journalist living in Paris, in a paper presented at the Computers, Freedom and Privacy conference in 1999, and later in an op-ed in The Wall Street Journal Europe edition.[2]
Operations
The system is allegedly operated by DGSE, whose Direction Technique (Technical Direction) is responsible for signal intelligence. The largest station is in Domme, near Sarlat in Périgord. Some of the other stations in France are: Alluets-Feucherolles (Alluets-le-Roi), Mutzig (Alsace), Mont Valérien, Plateau d'Albion, Agde, Solenzara (South Corsica), and Filley Barracks in Nice.

There are some other stations in overseas territories and former colonies:
- Saint-Barthélemy
- Bouar, Central African Republic
- Djibouti (Camp Lemonnier - closed, now occupied by Combined Joint Task Force – Horn of Africa): new center built recently between French Air Force Base and French Foreign Legion camp in Djibouti.
- Mayotte (Closed in 1998)
- Réunion
- Kourou, French Guiana
- and base aeronavale La Tontouta in New Caledonia
These stations, in addition to the DGSE headquarters on boulevard Mortier in Paris, intercept and decipher electronic communications using software coded communications of diplomatic, military or industrial origin.
French newspapers recently indicated that DGSE had an interception program on submarine cables, similar to NSA ones. No official data indicates whether this could be a part of FRENCHELON.
It should not be confused with the French Army's official listening system Emeraude (Ensemble mobile écoute et recherche automatique des émissions (fr)),[3] which used to be mistakenly confused with Frenchelon .
Map
| <graph>
{ // // ATTENTION: This code is maintained at https://www.mediawiki.org/wiki/Template:Graph:Street_map_with_marks // Please do not modify it anywhere else, as it may get copied and override your changes. // Suggestions can be made at https://www.mediawiki.org/wiki/Template_talk:Graph:Street_map_with_marks // // Template translation is in https://commons.wikimedia.org/wiki/Data:Original/Template:Graphs.tab // "version": 2, "width":500, "height": 250, "padding": 0, "signals":[ // These signals allow us to quickly move the map within the image, e.g. to leave space for the legend {"name":"legendWidth", "init": {"expr": "0"} }, {"name":"legendHeight", "init": {"expr": "height"} },
{"name":"imgWidth", "init": {"expr": "width-legendWidth"} },
{"name":"imgHeight", "init": {"expr": "height"} },
{"name":"imgXC", "init": {"expr": "imgWidth/2"} },
{"name":"imgYC", "init": {"expr": "imgHeight/2"} },
{"name":"imgTileSize", "init": {"expr": "256"} },
{"name":"imgLat", "init": {"expr": "10"} },
{"name":"imgLon", "init": {"expr": "65"} },
{"name":"imgZoom", "init": {"expr": "1"} },
{"name":"picWidth", "init": {"expr": "180"} },
{"name":"picHeight", "init": {"expr": "picWidth/2"} },
{"name":"picXC", "init": {"expr": "imgWidth-(picWidth/2)"} },
{"name":"picYC", "init": {"expr": "imgHeight-(picHeight/2)"} },
{"name":"showMiniMap", "init": {"expr": "0"} }
],
"data": [
{
"name": "data",
// Otherwise use the first unnamed argument for source values "values": [ { "lat": 10,
"lon": 65,
"img": "wikirawupload:https://handwiki.org/wiki/images/thumb/1/10/Mapscaleline.svg/120px-Mapscaleline.svg.png",
"width": 50,
"height": 8,
"offsetX": 213,
"offsetY": 115,
"textAlign": "right",
"textDx": 22,
"textDy": -2,
"textColor": "grey",
"textFont": "Tahoma",
"textFontSize": 9,
"text": "5000km" }
, { "lat": 17.9, "lon": -62.833333, "img": "wikirawupload:https://handwiki.org/wiki/images/thumb/0/0c/Red_pog.svg/10px-Red_pog.svg.png", "height": 10, "width": 10, "text": "", "textAngle": 0, "textAlign": "right", "textBaseline": "middle", "textDx": -7, "textDy": 1, "textFontSize": 12, "textColor": "#AA1205"
}
, { "lat": 0.1, "lon": 0.1, "img": "wikirawupload:https://handwiki.org/wiki/images/thumb/0/0c/Red_pog.svg/10px-Red_pog.svg.png", "height": 10, "width": 10, "text": "", "textAngle": 0, "textAlign": "right", "textBaseline": "middle", "textDx": -7, "textDy": 1, "textFontSize": 12, "textColor": "#AA1205"
} , { "lat": 5.95, "lon": 15.6, "img": "wikirawupload:https://handwiki.org/wiki/images/thumb/0/0c/Red_pog.svg/10px-Red_pog.svg.png", "height": 10, "width": 10, "text": "", "textAngle": 0, "textAlign": "right", "textBaseline": "middle", "textDx": -7, "textDy": 1, "textFontSize": 12, "textColor": "#AA1205"
} , { "lat": 11.543611, "lon": 43.148611, "img": "wikirawupload:https://handwiki.org/wiki/images/thumb/0/0c/Red_pog.svg/10px-Red_pog.svg.png", "height": 10, "width": 10, "text": "", "textAngle": 0, "textAlign": "right", "textBaseline": "middle", "textDx": -7, "textDy": 1, "textFontSize": 12, "textColor": "#AA1205"
} , { "lat": -12.843056, "lon": 45.138333, "img": "wikirawupload:https://handwiki.org/wiki/images/thumb/0/0c/Red_pog.svg/10px-Red_pog.svg.png", "height": 10, "width": 10, "text": "", "textAngle": 0, "textAlign": "right", "textBaseline": "middle", "textDx": -7, "textDy": 1, "textFontSize": 12, "textColor": "#AA1205"
} , { "lat": -21.114444, "lon": 55.5325, "img": "wikirawupload:https://handwiki.org/wiki/images/thumb/0/0c/Red_pog.svg/10px-Red_pog.svg.png", "height": 10, "width": 10, "text": "", "textAngle": 0, "textAlign": "right", "textBaseline": "middle", "textDx": -7, "textDy": 1, "textFontSize": 12, "textColor": "#AA1205"
} , { "lat": 5.1597, "lon": -52.6503, "img": "wikirawupload:https://handwiki.org/wiki/images/thumb/0/0c/Red_pog.svg/10px-Red_pog.svg.png", "height": 10, "width": 10, "text": "", "textAngle": 0, "textAlign": "right", "textBaseline": "middle", "textDx": -7, "textDy": 1, "textFontSize": 12, "textColor": "#AA1205"
} , { "lat": -22.016389, "lon": 166.216111, "img": "wikirawupload:https://handwiki.org/wiki/images/thumb/0/0c/Red_pog.svg/10px-Red_pog.svg.png", "height": 10, "width": 10, "text": "", "textAngle": 0, "textAlign": "right", "textBaseline": "middle", "textDx": -7, "textDy": 1, "textFontSize": 12, "textColor": "#AA1205"
} , { "lat": 44.8022, "lon": 1.2144, "img": "wikirawupload:https://handwiki.org/wiki/images/thumb/0/0c/Red_pog.svg/10px-Red_pog.svg.png", "height": 10, "width": 10, "text": "", "textAngle": 0, "textAlign": "right", "textBaseline": "middle", "textDx": -7, "textDy": 1, "textFontSize": 12, "textColor": "#AA1205"
} , { "lat": 41.924444, "lon": 9.405556, "img": "wikirawupload:https://handwiki.org/wiki/images/thumb/0/0c/Red_pog.svg/10px-Red_pog.svg.png", "height": 10, "width": 10, "text": "", "textAngle": 0, "textAlign": "right", "textBaseline": "middle", "textDx": -7, "textDy": 1, "textFontSize": 12, "textColor": "#AA1205"
}
],
"transform": [
{
"type": "geo",
"projection": "mercator",
"scale": {"expr": "imgTileSize/PI/2*pow(2,imgZoom)"},
"translate": [{"expr": "imgXC"}, {"expr": "imgYC"}],
"center": [{"expr": "imgLon"}, {"expr": "imgLat"}],
"lon": "lon", "lat": "lat"
},
{ "type": "formula", "field":"layout_x", "expr": "datum.layout_x + (datum.offsetX || 0)" },
{ "type": "formula", "field":"layout_y", "expr": "datum.layout_y + (datum.offsetY || 0)" },
{ "type": "formula", "field":"color", "expr": "datum.color || '#c33'" },
{ "type": "formula", "field":"textColor", "expr": "datum.textColor || datum.color" },
{ "type": "formula", "field":"strokeColor", "expr": "datum.strokeColor || '#ffe7e6'" }
]
},
{
// Hack: single value data source for drawing/hiding images and other non-series elements
"name": "dummyData",
"values": [{}]
}
],
// Legend only works if showLegend and colorScaleField are set "marks": [
{
"type": "image",
"from": {
"data": "dummyData",
"transform": [
{ "type": "formula", "field":"url", "expr": "'mapsnapshot:///?width='+imgWidth+'&height='+imgHeight+'&zoom='+imgZoom+'&lat='+imgLat+'&lon='+imgLon" }
]
},
"properties": {
"enter": {
"url": {"field": "url"},
"xc": {"signal": "imgXC"}, "yc": {"signal": "imgYC"},
"width": {"signal": "imgWidth"}, "height": {"signal": "imgHeight"}
}
}
},
{
// Places an image of a given name and size at the [lan,lon] location
"type": "image",
"from": {
"data": "data",
"transform": [
{ "type": "filter", "test": "datum.img" },
{ "type": "formula", "field":"iconWidth", "expr": "datum.width || 0" },
{ "type": "formula", "field":"iconHeight", "expr": "datum.height || 0" },
{ "type": "formula", "field":"img",
"expr": "if(!test(/^[a-z]+:\\/\\//, datum.img), 'wikifile:///'+datum.img, datum.img)" },
// Ensure that either width or height parameter is passed to wikifile:// request
{ "type": "formula", "field":"img",
"expr": "if((datum.iconWidth || datum.iconHeight) && !test(/[?&](width|height)=\\d/, datum.img),if(datum.iconWidth,datum.img+'?width='+datum.iconWidth,datum.img+'?height='+datum.iconHeight), datum.img)" }
]},
"properties": {
"enter": {
"url": {"field": "img"},
"xc": {"field": "layout_x"}, "yc": {"field": "layout_y"},
"width": {"field": "iconWidth"}, "height": {"field": "iconHeight"}
}
}
},
{
// Draw marks of a given color, shape, and size at the [lan,lon] location
"type": "symbol",
"from": {
"data": "data",
"transform": [{ "type": "filter", "test": "!datum.img" }]
},
"properties": {
"enter": {
"x": {"field": "layout_x"},
"y": {"field": "layout_y"},
// If colorScaleField is set, use color scaling, otherwise use the preset color value
"fill": { "field": "color" },
"size": {"field": "size"},
"shape": {"field": "shape"},
"stroke": {"field": "strokeColor"}
}
}
},
{
// Draw text with the given color and size at the [lan,lon] location
// See https://github.com/vega/vega/wiki/Marks#text for all parameter description (prepend "text" and capitalize them)
"type": "text",
"from": {
"data": "data",
"transform": [
{ "type": "filter", "test": "datum.text" },
// Figure out if this is an LTR or RTL page. For LTR, show label to the right of the icon, left-aligned. For RTL, reverse.
{ "type": "formula", "field":"isLTR", "expr": "'' == '\\u200E'" },
// If these values are not defined ("undefined" is not allowed, so test for truthiness and not 0)
{ "type": "formula", "field":"textDx", "expr": "if(!datum.textDx && datum.textDx != 0, if(datum.isLTR,8,-8), datum.textDx)" },
{ "type": "formula", "field":"textAlign", "expr": "if(!datum.textAlign, if(datum.isLTR,'left','right'), datum.textAlign)" },
{ "type": "formula", "field":"textBaseline", "expr": "datum.textBaseline || 'middle'" }
]},
"properties": {
"enter": {
"text": {"field": "text"},
"x": {"field": "layout_x" },
"y": {"field": "layout_y"},
"dx": {"field": "textDx" },
"dy": {"field": "textDy"},
"fill": {"field": "textColor"},
"align": {"field": "textAlign"},
"baseline": {"field": "textBaseline"},
"radius": {"field": "textRadius"},
"theta": {"field": "textTheta"},
"angle": {"field": "textAngle"},
"font": {"field": "textFont"},
"fontSize": {"field": "textFontSize"},
"fontWeight": {"field": "textFontWeight"},
"fontStyle": {"field": "textFontStyle"}
}
}
},
{
// Draw a low-zoom locator map frame
"type": "rect",
"from": {
"data": "dummyData",
"transform": [
{ "type": "filter", "test": "showMiniMap" }
]
},
"properties": {
"enter": {
"xc": {"signal": "picXC"}, "yc": {"signal": "picYC"},
"width": {"signal": "picWidth", "offset":2}, "height": {"signal": "picHeight"},
"stroke": {"value":"#fff"},"strokeWidth": {"value":6}
}
}
},
{
// Draw a low-zoom locator map by using a premade world map image
"type": "image",
"from": {
"data": "dummyData",
"transform": [
{ "type": "filter", "test": "showMiniMap" },
{ "type": "formula", "field":"url", "expr": "1" }
]
},
"properties": {
"enter": {
"url": {"value": "wikirawupload:https://handwiki.org/wiki/images/thumb/a/ac/Earthmap1000x500.jpg/180px-Earthmap1000x500.jpg"},
"xc": {"signal": "picXC"}, "yc": {"signal": "picYC"},
"width": {"signal": "picWidth"}, "height": {"signal": "picHeight"}
}
}
},
{
// Draw a zoom-out mark at the [lan,lon] location
"type": "symbol",
"from": {
"data": "dummyData",
"transform": [
{ "type": "filter", "test": "showMiniMap" },
{ "type": "formula", "field":"lat", "expr": "imgLat" },
{ "type": "formula", "field":"lon", "expr": "imgLon" },
{
"type": "geo",
"projection": "equirectangular",
"scale": {"expr": "180/2/PI"},
"translate": [{"expr": "picXC"}, {"expr": "picYC"}],
"center": [{"expr": "0"}, {"expr": "0"}],
"lon": "lon", "lat": "lat"
}
]
},
"properties": {
"enter": {
"x": {"field": "layout_x"}, "y": {"field": "layout_y"},
"fill": {"value": "#c33"},
"stroke": {"value": "#ffe7e6"},
"size": {"value": 40}
}
}
}
]
} </graph> <maplink zoom="2" latitude="10" longitude="65" text="[Interactive fullscreen map]">
[
"features": [ { "type": "Feature", "properties": {
"title": "Saint Barthélemy",
"description": "Saint Barthélemy 17.9,-62.833333",
"marker-symbol": "-number", "marker-size": "medium", "marker-color": "#AA1205" },
"geometry": {"type": "Point", "coordinates": [-62.833333,17.9] }
}
, { "type": "Feature", "properties": {
"title": ".",
"description": " 0.1,0.1",
"marker-symbol": "-number", "marker-size": "medium", "marker-color": "#AA1205" },
"geometry": {"type": "Point", "coordinates": [0.1,0.1] }
}
, { "type": "Feature", "properties": {
"title": "Central African Republic",
"description": "Bouar, CAR 5.95,15.6",
"marker-symbol": "-number", "marker-size": "medium", "marker-color": "#AA1205" },
"geometry": {"type": "Point", "coordinates": [15.6,5.95] }
}
, { "type": "Feature", "properties": {
"title": "Djibouti",
"description": "Djibouti 11.543611,43.148611",
"marker-symbol": "-number", "marker-size": "medium", "marker-color": "#AA1205" },
"geometry": {"type": "Point", "coordinates": [43.148611,11.543611] }
}
, { "type": "Feature", "properties": {
"title": "Mayotte (closed)",
"description": "Mayotte (closed) -12.843056,45.138333",
"marker-symbol": "-number", "marker-size": "medium", "marker-color": "#AA1205" },
"geometry": {"type": "Point", "coordinates": [45.138333,-12.843056] }
}
, { "type": "Feature", "properties": {
"title": "Reunion Island",
"description": "Réunion -21.114444,55.5325",
"marker-symbol": "-number", "marker-size": "medium", "marker-color": "#AA1205" },
"geometry": {"type": "Point", "coordinates": [55.5325,-21.114444] }
}
, { "type": "Feature", "properties": {
"title": "French Guiana",
"description": "Kourou 5.1597,-52.6503",
"marker-symbol": "-number", "marker-size": "medium", "marker-color": "#AA1205" },
"geometry": {"type": "Point", "coordinates": [-52.6503,5.1597] }
}
, { "type": "Feature", "properties": {
"title": "New Caledonia",
"description": "La Tontouta International Airport -22.016389,166.216111",
"marker-symbol": "-number", "marker-size": "medium", "marker-color": "#AA1205" },
"geometry": {"type": "Point", "coordinates": [166.216111,-22.016389] }
}
, { "type": "Feature", "properties": {
"title": "Dordogne",
"description": "Domme, France 44.8022,1.2144",
"marker-symbol": "-number", "marker-size": "medium", "marker-color": "#AA1205" },
"geometry": {"type": "Point", "coordinates": [1.2144,44.8022] }
}
, { "type": "Feature", "properties": {
"title": "Corsica",
"description": "Solenzara Air Base 41.924444,9.405556",
"marker-symbol": "-number", "marker-size": "medium", "marker-color": "#AA1205" },
"geometry": {"type": "Point", "coordinates": [9.405556,41.924444] }
}
|
| Map of Signals Intelligence installations |
| <graph>
{ // // ATTENTION: This code is maintained at https://www.mediawiki.org/wiki/Template:Graph:Street_map_with_marks // Please do not modify it anywhere else, as it may get copied and override your changes. // Suggestions can be made at https://www.mediawiki.org/wiki/Template_talk:Graph:Street_map_with_marks // // Template translation is in https://commons.wikimedia.org/wiki/Data:Original/Template:Graphs.tab // "version": 2, "width":350, "height": 250, "padding": 0, "signals":[ // These signals allow us to quickly move the map within the image, e.g. to leave space for the legend {"name":"legendWidth", "init": {"expr": "0"} }, {"name":"legendHeight", "init": {"expr": "height"} },
{"name":"imgWidth", "init": {"expr": "width-legendWidth"} },
{"name":"imgHeight", "init": {"expr": "height"} },
{"name":"imgXC", "init": {"expr": "imgWidth/2"} },
{"name":"imgYC", "init": {"expr": "imgHeight/2"} },
{"name":"imgTileSize", "init": {"expr": "256"} },
{"name":"imgLat", "init": {"expr": "40.80"} },
{"name":"imgLon", "init": {"expr": "10.25"} },
{"name":"imgZoom", "init": {"expr": "0"} },
{"name":"picWidth", "init": {"expr": "180"} },
{"name":"picHeight", "init": {"expr": "picWidth/2"} },
{"name":"picXC", "init": {"expr": "imgWidth-(picWidth/2)"} },
{"name":"picYC", "init": {"expr": "imgHeight-(picHeight/2)"} },
{"name":"showMiniMap", "init": {"expr": "0"} }
],
"data": [
{
"name": "data",
// Otherwise use the first unnamed argument for source values "values": [ { }
, { "lat": 17.9, "lon": -62.833333, "img": "wikirawupload:https://handwiki.org/wiki/images/thumb/e/ef/Satellite_ground.svg/20px-Satellite_ground.svg.png", "height": 8, "width": 8, "text": "", "textAngle": 0, "textAlign": "right", "textBaseline": "middle", "textDx": -6, "textDy": 1, "textFontSize": 12, "textColor": "#AA1205"
}
, { "lat": 0.1, "lon": 0.1, "img": "wikirawupload:https://handwiki.org/wiki/images/thumb/e/ef/Satellite_ground.svg/20px-Satellite_ground.svg.png", "height": 8, "width": 8, "text": "", "textAngle": 0, "textAlign": "right", "textBaseline": "middle", "textDx": -6, "textDy": 1, "textFontSize": 12, "textColor": "#AA1205"
} , { "lat": 5.95, "lon": 15.6, "img": "wikirawupload:https://handwiki.org/wiki/images/thumb/e/ef/Satellite_ground.svg/20px-Satellite_ground.svg.png", "height": 8, "width": 8, "text": "", "textAngle": 0, "textAlign": "right", "textBaseline": "middle", "textDx": -6, "textDy": 1, "textFontSize": 12, "textColor": "#AA1205"
} , { "lat": 11.543611, "lon": 43.148611, "img": "wikirawupload:https://handwiki.org/wiki/images/thumb/e/ef/Satellite_ground.svg/20px-Satellite_ground.svg.png", "height": 8, "width": 8, "text": "", "textAngle": 0, "textAlign": "right", "textBaseline": "middle", "textDx": -6, "textDy": 1, "textFontSize": 12, "textColor": "#AA1205"
} , { "lat": -12.843056, "lon": 45.138333, "img": "wikirawupload:https://handwiki.org/wiki/images/thumb/e/ef/Satellite_ground.svg/20px-Satellite_ground.svg.png", "height": 8, "width": 8, "text": "", "textAngle": 0, "textAlign": "right", "textBaseline": "middle", "textDx": -6, "textDy": 1, "textFontSize": 12, "textColor": "#AA1205"
} , { "lat": -21.114444, "lon": 55.5325, "img": "wikirawupload:https://handwiki.org/wiki/images/thumb/e/ef/Satellite_ground.svg/20px-Satellite_ground.svg.png", "height": 8, "width": 8, "text": "", "textAngle": 0, "textAlign": "right", "textBaseline": "middle", "textDx": -6, "textDy": 1, "textFontSize": 12, "textColor": "#AA1205"
} , { "lat": 5.1597, "lon": -52.6503, "img": "wikirawupload:https://handwiki.org/wiki/images/thumb/e/ef/Satellite_ground.svg/20px-Satellite_ground.svg.png", "height": 8, "width": 8, "text": "", "textAngle": 0, "textAlign": "right", "textBaseline": "middle", "textDx": -6, "textDy": 1, "textFontSize": 12, "textColor": "#AA1205"
} , { "lat": -22.016389, "lon": 166.216111, "img": "wikirawupload:https://handwiki.org/wiki/images/thumb/e/ef/Satellite_ground.svg/20px-Satellite_ground.svg.png", "height": 8, "width": 8, "text": "", "textAngle": 0, "textAlign": "right", "textBaseline": "middle", "textDx": -6, "textDy": 1, "textFontSize": 12, "textColor": "#AA1205"
} , { "lat": 44.8022, "lon": 1.2144, "img": "wikirawupload:https://handwiki.org/wiki/images/thumb/e/ef/Satellite_ground.svg/20px-Satellite_ground.svg.png", "height": 8, "width": 8, "text": "", "textAngle": 0, "textAlign": "right", "textBaseline": "middle", "textDx": -6, "textDy": 1, "textFontSize": 12, "textColor": "#AA1205"
} , { "lat": 41.924444, "lon": 9.405556, "img": "wikirawupload:https://handwiki.org/wiki/images/thumb/e/ef/Satellite_ground.svg/20px-Satellite_ground.svg.png", "height": 8, "width": 8, "text": "", "textAngle": 0, "textAlign": "right", "textBaseline": "middle", "textDx": -6, "textDy": 1, "textFontSize": 12, "textColor": "#AA1205"
}
],
"transform": [
{
"type": "geo",
"projection": "mercator",
"scale": {"expr": "imgTileSize/PI/2*pow(2,imgZoom)"},
"translate": [{"expr": "imgXC"}, {"expr": "imgYC"}],
"center": [{"expr": "imgLon"}, {"expr": "imgLat"}],
"lon": "lon", "lat": "lat"
},
{ "type": "formula", "field":"layout_x", "expr": "datum.layout_x + (datum.offsetX || 0)" },
{ "type": "formula", "field":"layout_y", "expr": "datum.layout_y + (datum.offsetY || 0)" },
{ "type": "formula", "field":"color", "expr": "datum.color || '#c33'" },
{ "type": "formula", "field":"textColor", "expr": "datum.textColor || datum.color" },
{ "type": "formula", "field":"strokeColor", "expr": "datum.strokeColor || '#ffe7e6'" }
]
},
{
// Hack: single value data source for drawing/hiding images and other non-series elements
"name": "dummyData",
"values": [{}]
}
],
// Legend only works if showLegend and colorScaleField are set "marks": [
{
"type": "image",
"from": {
"data": "dummyData",
"transform": [
{ "type": "formula", "field":"url", "expr": "'mapsnapshot:///?width='+imgWidth+'&height='+imgHeight+'&zoom='+imgZoom+'&lat='+imgLat+'&lon='+imgLon" }
]
},
"properties": {
"enter": {
"url": {"field": "url"},
"xc": {"signal": "imgXC"}, "yc": {"signal": "imgYC"},
"width": {"signal": "imgWidth"}, "height": {"signal": "imgHeight"}
}
}
},
{
// Places an image of a given name and size at the [lan,lon] location
"type": "image",
"from": {
"data": "data",
"transform": [
{ "type": "filter", "test": "datum.img" },
{ "type": "formula", "field":"iconWidth", "expr": "datum.width || 0" },
{ "type": "formula", "field":"iconHeight", "expr": "datum.height || 0" },
{ "type": "formula", "field":"img",
"expr": "if(!test(/^[a-z]+:\\/\\//, datum.img), 'wikifile:///'+datum.img, datum.img)" },
// Ensure that either width or height parameter is passed to wikifile:// request
{ "type": "formula", "field":"img",
"expr": "if((datum.iconWidth || datum.iconHeight) && !test(/[?&](width|height)=\\d/, datum.img),if(datum.iconWidth,datum.img+'?width='+datum.iconWidth,datum.img+'?height='+datum.iconHeight), datum.img)" }
]},
"properties": {
"enter": {
"url": {"field": "img"},
"xc": {"field": "layout_x"}, "yc": {"field": "layout_y"},
"width": {"field": "iconWidth"}, "height": {"field": "iconHeight"}
}
}
},
{
// Draw marks of a given color, shape, and size at the [lan,lon] location
"type": "symbol",
"from": {
"data": "data",
"transform": [{ "type": "filter", "test": "!datum.img" }]
},
"properties": {
"enter": {
"x": {"field": "layout_x"},
"y": {"field": "layout_y"},
// If colorScaleField is set, use color scaling, otherwise use the preset color value
"fill": { "field": "color" },
"size": {"field": "size"},
"shape": {"field": "shape"},
"stroke": {"field": "strokeColor"}
}
}
},
{
// Draw text with the given color and size at the [lan,lon] location
// See https://github.com/vega/vega/wiki/Marks#text for all parameter description (prepend "text" and capitalize them)
"type": "text",
"from": {
"data": "data",
"transform": [
{ "type": "filter", "test": "datum.text" },
// Figure out if this is an LTR or RTL page. For LTR, show label to the right of the icon, left-aligned. For RTL, reverse.
{ "type": "formula", "field":"isLTR", "expr": "'' == '\\u200E'" },
// If these values are not defined ("undefined" is not allowed, so test for truthiness and not 0)
{ "type": "formula", "field":"textDx", "expr": "if(!datum.textDx && datum.textDx != 0, if(datum.isLTR,8,-8), datum.textDx)" },
{ "type": "formula", "field":"textAlign", "expr": "if(!datum.textAlign, if(datum.isLTR,'left','right'), datum.textAlign)" },
{ "type": "formula", "field":"textBaseline", "expr": "datum.textBaseline || 'middle'" }
]},
"properties": {
"enter": {
"text": {"field": "text"},
"x": {"field": "layout_x" },
"y": {"field": "layout_y"},
"dx": {"field": "textDx" },
"dy": {"field": "textDy"},
"fill": {"field": "textColor"},
"align": {"field": "textAlign"},
"baseline": {"field": "textBaseline"},
"radius": {"field": "textRadius"},
"theta": {"field": "textTheta"},
"angle": {"field": "textAngle"},
"font": {"field": "textFont"},
"fontSize": {"field": "textFontSize"},
"fontWeight": {"field": "textFontWeight"},
"fontStyle": {"field": "textFontStyle"}
}
}
},
{
// Draw a low-zoom locator map frame
"type": "rect",
"from": {
"data": "dummyData",
"transform": [
{ "type": "filter", "test": "showMiniMap" }
]
},
"properties": {
"enter": {
"xc": {"signal": "picXC"}, "yc": {"signal": "picYC"},
"width": {"signal": "picWidth", "offset":2}, "height": {"signal": "picHeight"},
"stroke": {"value":"#fff"},"strokeWidth": {"value":6}
}
}
},
{
// Draw a low-zoom locator map by using a premade world map image
"type": "image",
"from": {
"data": "dummyData",
"transform": [
{ "type": "filter", "test": "showMiniMap" },
{ "type": "formula", "field":"url", "expr": "1" }
]
},
"properties": {
"enter": {
"url": {"value": "wikirawupload:https://handwiki.org/wiki/images/thumb/a/ac/Earthmap1000x500.jpg/180px-Earthmap1000x500.jpg"},
"xc": {"signal": "picXC"}, "yc": {"signal": "picYC"},
"width": {"signal": "picWidth"}, "height": {"signal": "picHeight"}
}
}
},
{
// Draw a zoom-out mark at the [lan,lon] location
"type": "symbol",
"from": {
"data": "dummyData",
"transform": [
{ "type": "filter", "test": "showMiniMap" },
{ "type": "formula", "field":"lat", "expr": "imgLat" },
{ "type": "formula", "field":"lon", "expr": "imgLon" },
{
"type": "geo",
"projection": "equirectangular",
"scale": {"expr": "180/2/PI"},
"translate": [{"expr": "picXC"}, {"expr": "picYC"}],
"center": [{"expr": "0"}, {"expr": "0"}],
"lon": "lon", "lat": "lat"
}
]
},
"properties": {
"enter": {
"x": {"field": "layout_x"}, "y": {"field": "layout_y"},
"fill": {"value": "#c33"},
"stroke": {"value": "#ffe7e6"},
"size": {"value": 40}
}
}
}
]
} </graph> <maplink zoom="1" latitude="40.80" longitude="10.25" text="[Interactive fullscreen map]">
[
"features": [ { "type": "Feature", "properties": {
"title": "Saint Barthélemy",
"description": "Caribbean 17.9,-62.833333",
"marker-symbol": "-number", "marker-size": "medium", "marker-color": "#AA1205" },
"geometry": {"type": "Point", "coordinates": [-62.833333,17.9] }
}
, { "type": "Feature", "properties": {
"title": ".",
"description": " 0.1,0.1",
"marker-symbol": "-number", "marker-size": "medium", "marker-color": "#AA1205" },
"geometry": {"type": "Point", "coordinates": [0.1,0.1] }
}
, { "type": "Feature", "properties": {
"title": "Bouar",
"description": "Central African Republic 5.95,15.6",
"marker-symbol": "-number", "marker-size": "medium", "marker-color": "#AA1205" },
"geometry": {"type": "Point", "coordinates": [15.6,5.95] }
}
, { "type": "Feature", "properties": {
"title": "Camp Lemonier",
"description": "Djibouti 11.543611,43.148611",
"marker-symbol": "-number", "marker-size": "medium", "marker-color": "#AA1205" },
"geometry": {"type": "Point", "coordinates": [43.148611,11.543611] }
}
, { "type": "Feature", "properties": {
"title": "Mayotte (closed)",
"description": "Comoros archipelago -12.843056,45.138333",
"marker-symbol": "-number", "marker-size": "medium", "marker-color": "#AA1205" },
"geometry": {"type": "Point", "coordinates": [45.138333,-12.843056] }
}
, { "type": "Feature", "properties": {
"title": "Réunion",
"description": "Mascarene Islands -21.114444,55.5325",
"marker-symbol": "-number", "marker-size": "medium", "marker-color": "#AA1205" },
"geometry": {"type": "Point", "coordinates": [55.5325,-21.114444] }
}
, { "type": "Feature", "properties": {
"title": "Kourou",
"description": "French Guiana 5.1597,-52.6503",
"marker-symbol": "-number", "marker-size": "medium", "marker-color": "#AA1205" },
"geometry": {"type": "Point", "coordinates": [-52.6503,5.1597] }
}
, { "type": "Feature", "properties": {
"title": "La Tontouta",
"description": "New Caledonia -22.016389,166.216111",
"marker-symbol": "-number", "marker-size": "medium", "marker-color": "#AA1205" },
"geometry": {"type": "Point", "coordinates": [166.216111,-22.016389] }
}
, { "type": "Feature", "properties": {
"title": "Domme",
"description": "France 44.8022,1.2144",
"marker-symbol": "-number", "marker-size": "medium", "marker-color": "#AA1205" },
"geometry": {"type": "Point", "coordinates": [1.2144,44.8022] }
}
, { "type": "Feature", "properties": {
"title": "Solenzara",
"description": "Corsica 41.924444,9.405556",
"marker-symbol": "-number", "marker-size": "medium", "marker-color": "#AA1205" },
"geometry": {"type": "Point", "coordinates": [9.405556,41.924444] }
}
|
| Location of signals collection of France |
References
- ↑ "La France se met à l'espionnage" (in French). Free (ISP). http://reseau.echelon.free.fr/reseau.echelon/espionnage_francais.htm. Retrieved 11 June 2013. "Frenchelon (ou French Echelon) est le surnom donné au réseau d'écoute de la DGSE. Le véritable nom de ce système d'écoute n'est pas connu (contrairement à ce que nous expliquions, ce n'est pas Emeraude)"
- ↑ "Spies Like Us" (in en-US). https://www.wsj.com/articles/SB9543629505575888.
- ↑ (in French) Emeraude : Ensemble mobile d’écoute et de recherche automatique des émissions (Mobile set for listening and automatic searches of emissions)
Further reading
- Jerome Thorel (June 30, 2000). "Frenchelon - France has nothing to envy in Echelon". ZDNet. http://www.zdnet.co.uk/news/it-strategy/2000/06/30/frenchelon-france-has-nothing-to-envy-in-echelon-2079875/.
- Duncan Campbell; Richard Barry (June 30, 2000). "Frenchelon: First pictures of French listening post". ZDNet. http://www.zdnet.co.uk/news/it-strategy/2000/06/30/frenchelon-first-pictures-of-french-listening-post-2079872/.
External links
[ ⚑ ] 44°47′11″N 1°14′17″E / 44.78639°N 1.23806°E
