FlightAware Discussions

Is there any script or tool for create airways, VORs, SIDs & STATRs? is there any script for drawing range chart by altitude?

Hi everyone… I’m using scripts made by wiedehopf, and thery are awesome… i’m searching any script or tool for create airways, VORs, SIDs, STARs, runways, NDBs, etc… is there any tool for doing that?

Is there any script for drawing range range by altitude?

Thanks in advance!!:grinning:

http://heywhatsthat.com/ gives altitude range based on terrain.

There are various scripts that allow you to overlay this on your map.

You can enable extra charts. These include IFR charts (US only)
edit /usr/share/dump1090-fa/html/config.js
// Set to true to enable the ChartBundle base layers (US coverage only)
ChartBundleLayers = true;

It is normally false.

You can also get extended ADS-B data
// Turn on display of extra Mode S EHS / ADS-B v1/v2 data
// This is not polished yet (and so is disabled by default),
// currently it’s just a data dump of the new fields with no UX work.
ExtendedData = true;

image

1 Like

Thanks for your response!

  1. I have theorical altitude range based on terrain from webpage http://heywhatsthat.com/, however my request is a range based according current flying aircraft in my region, created in real time.

  2. I want just the aeronautical maps showed, but i live in Costa Rica, Central America and we are out of range!

Thanks for your help and sorry for my bad english!

  1. can be done with VRS.
    http://www.virtualradarserver.co.uk/

It can poll the data in a receiver, not just dump1090 or dump109fa, and present ranges based on 10,000 ft layers.

The range is for the time VRS is active. You would need to reset it to get real time info.

Your English is about 1000 times better than my Spanish.

You rock Jon
I’ve been wanting those charts since they are on by default in mutability if i remember correctly.
I haven’t actively searched for it, so this got me setup real quick!

1 Like

I’ve added the chart bundle to my customized webinterface discussed in the other thread as well.

I had totally forgotten about those, thank you :slight_smile:

2 Likes

Do you know how link this web aviation map https://skyvector.com/ to dump1090, similar to charts bundle layers for US?

Thanks a lot!

1 Like

They would need to allow that in their CORS policy, and i doubt they do that.

As the map is implemented right now, you need an openstreetmaps compatible tile server.
It’s basically a web address where a lot of different pictures (tiles) according to zoom level and location are kept.
Also that server needs to allow using those images in your website (CORS), which is generally disabled (causes traffic without you actually visiting their webpage).

I found this link for AirMap… https://developers.airmap.com/v2.0/docs/using-openlayers-3; they have a tile server for OL3.

Now this can be used for another map base?

Much like Bing, they require an API key to be used.
So you need to get a developer account for the key.
(there is some sort of application process i don’t want to get into.)

Also don’t know if the tile server works with Open Layers.

Finally, after several changes in script.js, I am including waypoints (no labeled and labeled) to my map, importing a GeoJson file.


2 Likes

Can you write up the details?
I’d love to add this as well.

1 Like

I will add another layers, like airways, danger and restricted areas, SIDs and STARs; after that i will publish all data for another people.

2 Likes

Image with MVA (minimum vectoring area) in Coco Airspace (MROC airport, and vectoring airspace) in Costa Rica, Central America. File is a KML.

1

2 Likes

Last image for today… JSON files for MVA (one file for background and another for sector altitude - hundreds -).

2 Likes

New additions in image 1: CTRs, TMAs, ATZs

1

New additions in image 2: prohibited, restricted, training, sports and dumping fuel areas

2

2 Likes

El Coco TMA finally with aiwarys (low, high and RNAV)… now working in dropdown list…

Hello Idoleo Great work , is posible to writhe or charge the change in the script Thanks

Hola Idoleo es posible compartir los cambios en el script o subir el archivo. Gracias

2 Likes

Ok… work in progress, but i will load data…

First images:

General view with options for low and high airways

RNAV and airspace menu options
image

Special use airspace, MVA and default dump1090 data
image

Files to modify:

  1. script.js
    Copy next data between “layers = createBaseLayers();” and “var foundType = false;”, replacing original text.
    // idoA01S… after “layers = createBaseLayers();”
    var iconsLayer = new ol.layer.Vector({
    name: ‘ac_positions’,
    type: ‘overlay’,
    title: ‘Aircraft positions’,
    source: new ol.source.Vector({
    features: PlaneIconFeatures,
    })
    })
    // idoA01E

// idoA02S
var positionrange = new ol.layer.Vector({
name: ‘site_pos’,
type: ‘overlay’,
title: ‘Site position and range rings’,
source: new ol.source.Vector({
features: StaticFeatures,
})
})
// idoA02E

// idoA03S
var selectedtrail = new ol.layer.Vector({
name: ‘ac_trail’,
type: ‘overlay’,
// title: ‘Selected aircraft trail’,
visible: true,
source: new ol.source.Vector({
features: PlaneTrailFeatures,
})
})
// idoA03E

// idoA04S
layers.push(new ol.layer.Group({
title: ‘Basic Data’,
fold: ‘open’,
layers: [iconsLayer,positionrange,selectedtrail],
}));
// idoA04E

// idoA05S
/* var iconsLayer = new ol.layer.Vector({
name: ‘ac_positions’,
type: ‘overlay’,
title: ‘Aircraft positions’,
source: new ol.source.Vector({
features: PlaneIconFeatures,
})
});

    layers.push(new ol.layer.Group({
        title: 'Overlays',
        layers: [
            new ol.layer.Vector({
                name: 'site_pos',
                type: 'overlay',
                title: 'Site position and range rings',
                source: new ol.source.Vector({
                    features: StaticFeatures,
                })
            }),

            new ol.layer.Vector({
                name: 'ac_trail',
                type: 'overlay',
                title: 'Selected aircraft trail',
                source: new ol.source.Vector({
                    features: PlaneTrailFeatures,
                })
            }),

            iconsLayer
        ]
    }));*/

// idoA05E … before “var foundType = false;”

  1. style.css

Change “.layer-switcher” to

.layer-switcher {
position: absolute;
top: 175px !important;
right: 0px !important;
text-align: left;
}

Add:

.layer-switcher.shown {
right: 25px;
max-height: 400px;
}

  1. Replace info inside “layer.js” and copy next text:

// -- mode: javascript; indent-tabs-mode: nil; c-basic-offset: 8 --
“use strict”;

var OLMap = null;
var PlaneIconFeatures = new ol.Collection();
var PlaneTrailFeatures = new ol.Collection();
var SelectedPlane = null;
var SelectedAllPlanes = false;

// idoA01S
function lowairway(feature) {
var styles = [
new ol.style.Style({
image: new ol.style.RegularShape({
fill: new ol.style.Fill({
color: ‘rgba(52,65,111,0.3)’,
}),
points: 3,
radius: 5,
rotation: 0,
angle: 0
}),

	}),
];
styles.push(new ol.style.Style({
	text: new ol.style.Text({
		//               text: feature.get('name'),
		align: 'center',
		font: "9px tahoma",
		fill: new ol.style.Fill({color: 'rgba(52,65,111,0.3)'}),
		offsetX: 0,
		offsetY: 8,
		placement: "point",
		textBaseline: "top"
	}),
	stroke: new ol.style.Stroke({
		color: 'rgba(52,65,111,0.3)',
		width: 2
	}),


}));
return styles;

};
// idoA01E

// idoA02S
function highairway(feature) {
var styles = [
new ol.style.Style({
image: new ol.style.RegularShape({
fill: new ol.style.Fill({
color: ‘rgba(111,111,111,0.3)’,
}),
points: 3,
radius: 5,
rotation: 0,
angle: 0
}),

	}),
];
styles.push(new ol.style.Style({
	text: new ol.style.Text({
		//               text: feature.get('name'),
		align: 'center',
		font: "9px tahoma",
		fill: new ol.style.Fill({color: 'rgba(111,111,111,0.3)'}),
		offsetX: 0,
		offsetY: 8,
		placement: "point",
		textBaseline: "top"
	}),
	stroke: new ol.style.Stroke({
		color: 'rgba(111,111,111,0.3)',
		width: 2
	}),


}));
return styles;

};
// idoA02E

// idoA03S
function rnavairway(feature) {
var styles = [
new ol.style.Style({
image: new ol.style.RegularShape({
fill: new ol.style.Fill({
color: ‘rgba(78,124,98,0.3)’,
}),
points: 3,
radius: 5,
rotation: 0,
angle: 0
}),

	}),
];
styles.push(new ol.style.Style({
	text: new ol.style.Text({
		//               text: feature.get('name'),
		align: 'center',
		font: "9px tahoma",
		fill: new ol.style.Fill({color: 'rgba(78,124,98,0.3)'}),
		offsetX: 0,
		offsetY: 8,
		placement: "point",
		textBaseline: "top"
	}),
	stroke: new ol.style.Stroke({
		color: 'rgba(78,124,98,0.3)',
		width: 2
	}),


}));
return styles;

};
// idoA03E

// idoA04S
function mvalabel(feature) {
var styles = [
new ol.style.Style({
}),
];
var extent = feature.getGeometry().getExtent();
var topRightCoor = [extent[2], extent[3]];
styles.push(new ol.style.Style({
geometry: new ol.geom.Point(topRightCoor),
text: new ol.style.Text({
text: feature.get(‘name’),
font: “bold 14px Tahoma”,
fill: new ol.style.Fill({color: ‘rgba(255, 170, 0, 1.00)’}),
})
}));
return styles;
};
// idoA04E

// idoA05S
function mrplabel(feature) {
var styles = [
new ol.style.Style({
}),
];
var extent = feature.getGeometry().getExtent();
var topRightCoor = [extent[2], extent[3]];
styles.push(new ol.style.Style({
geometry: new ol.geom.Point(topRightCoor),
text: new ol.style.Text({
text: feature.get(‘name’),
font: “bold 12px Tahoma”,
fill: new ol.style.Fill({color: ‘rgba(255, 0, 0, 1.00)’}),
})
}));
return styles;
};
// idoA05E

// idoA06S
function ctrlabel(feature) {
var styles = [
new ol.style.Style({
}),
];
var extent = feature.getGeometry().getExtent();
var topRightCoor = [extent[2], extent[3]];
styles.push(new ol.style.Style({
geometry: new ol.geom.Point(topRightCoor),
text: new ol.style.Text({
text: feature.get(‘name’),
font: “bold 12px Tahoma”,
fill: new ol.style.Fill({color: ‘rgba(211, 211, 211, 1.00)’}),
}),
stroke: new Stroke({
color: ‘#333333’,
width: 1
})
}));
return styles;
};
// idoA06E

// idoB01S
var tmaelcoco = new ol.layer.Vector({
name: ‘tma’,
type: ‘overlay’,
title: ‘El Coco TMA’,
source: new ol.source.Vector({
url: ‘layers/TMA-ELCOCO.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: new ol.style.Style({
stroke: new ol.style.Stroke({
color: ‘rgba(85, 170, 255, 0.40)’,
width: 2
}),
fill: new ol.style.Fill({
color: ‘rgba(85, 170, 255, 0.10)’
})
}),
})
// idoB01E

// idoB02S
var tmaliberia = new ol.layer.Vector({
name: ‘tma’,
type: ‘overlay’,
title: ‘Liberia TMA’,
source: new ol.source.Vector({
url: ‘layers/TMA-LIBERIA.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: new ol.style.Style({
stroke: new ol.style.Stroke({
color: ‘rgba(85, 170, 255, 0.40)’,
width: 2
}),
fill: new ol.style.Fill({
color: ‘rgba(85, 170, 255, 0.10)’
})
}),
})
// idoB02E

// idoB03S
var ctrelcoco = new ol.layer.Vector({
name: ‘ctr’,
type: ‘overlay’,
title: ‘El Coco CTR’,
source: new ol.source.Vector({
url: ‘layers/CTR-ELCOCO.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: new ol.style.Style({
stroke: new ol.style.Stroke({
color: ‘rgba(211, 211, 211, 0.80)’,
width: 2
}),
fill: new ol.style.Fill({
color: ‘rgba(211, 211, 211, 0.20)’
})
}),
})
// idoB03E

// idoB04S
var ctrliberia = new ol.layer.Vector({
name: ‘ctr’,
type: ‘overlay’,
title: ‘Liberia CTR’,
source: new ol.source.Vector({
url: ‘layers/CTR-LIBERIA.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: new ol.style.Style({
stroke: new ol.style.Stroke({
color: ‘rgba(211, 211, 211, 0.80)’,
width: 2
}),
fill: new ol.style.Fill({
color: ‘rgba(211, 211, 211, 0.20)’
})
}),
})
// idoB04E

// idoB05S
var atzpavas = new ol.layer.Vector({
name: ‘atz’,
type: ‘overlay’,
title: ‘Pavas ATZ’,
source: new ol.source.Vector({
url: ‘layers/ATZ-PAVAS.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: new ol.style.Style({
stroke: new ol.style.Stroke({
color: ‘rgba(170, 255, 255, 0.60)’,
width: 2
}),
fill: new ol.style.Fill({
color: ‘rgba(170, 255, 255, 0.20)’
})
}),
})
// idoB05E

// idoB06S
var mvaelcoco = new ol.layer.Vector({
name: ‘mvacoco’,
type: ‘overlay’,
title: ‘Coco MVA’,
source: new ol.source.Vector({
url: ‘layers/MVA-MROC.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: new ol.style.Style({
stroke: new ol.style.Stroke({
color: ‘rgba(255, 170, 0, 0.60)’,
width: 2
}),
fill: new ol.style.Fill({
color: ‘rgba(255, 170, 0, 0.10)’
})
}),
})
// idoB06E

// idoB07S
var mrp1 = new ol.layer.Vector({
name: ‘mrp’,
type: ‘overlay’,
title: ‘Prohibited Area MRP-1’,
source: new ol.source.Vector({
url: ‘layers/MRP-1.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: new ol.style.Style({
stroke: new ol.style.Stroke({
color: ‘rgba(255, 0, 0, 0.60)’,
width: 2
}),
fill: new ol.style.Fill({
color: ‘rgba(255, 0, 0, 0.10)’
})
}),
})
// idoB07E

// idoB08S
var mrp2 = new ol.layer.Vector({
name: ‘mrp’,
type: ‘overlay’,
title: ‘Prohibited Area MRP-2’,
source: new ol.source.Vector({
url: ‘layers/MRP-2.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: new ol.style.Style({
stroke: new ol.style.Stroke({
color: ‘rgba(255, 0, 0, 0.60)’,
width: 2
}),
fill: new ol.style.Fill({
color: ‘rgba(255, 0, 0, 0.10)’
})
}),
})
// idoB08E

// idoB09S
var mrr1 = new ol.layer.Vector({
name: ‘mrr’,
type: ‘overlay’,
title: ‘Restricted Area MRR-1’,
source: new ol.source.Vector({
url: ‘layers/MRR-1.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: new ol.style.Style({
stroke: new ol.style.Stroke({
color: ‘rgba(255, 255, 0, 0.50)’,
width: 2
}),
fill: new ol.style.Fill({
color: ‘rgba(255, 255, 0, 0.20)’
})
}),
})
// idoB09E

// idoB10S
var mrr2 = new ol.layer.Vector({
name: ‘mrr’,
type: ‘overlay’,
title: ‘Restricted Area MRR-2’,
source: new ol.source.Vector({
url: ‘layers/MRR-2.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: new ol.style.Style({
stroke: new ol.style.Stroke({
color: ‘rgba(255, 255, 0, 0.50)’,
width: 2
}),
fill: new ol.style.Fill({
color: ‘rgba(255, 255, 0, 0.20)’
})
}),
})
// idoB10E

// idoB11S
var mrr3 = new ol.layer.Vector({
name: ‘mrr’,
type: ‘overlay’,
title: ‘Restricted Area MRR-3’,
source: new ol.source.Vector({
url: ‘layers/MRR-3.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: new ol.style.Style({
stroke: new ol.style.Stroke({
color: ‘rgba(255, 255, 0, 0.50)’,
width: 2
}),
fill: new ol.style.Fill({
color: ‘rgba(255, 255, 0, 0.20)’
})
}),
})
// idoB11E

// idoB12S
var mtz1 = new ol.layer.Vector({
name: ‘mtz’,
type: ‘overlay’,
title: ‘Training Area MTZ-1’,
source: new ol.source.Vector({
url: ‘layers/MTZ-1.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: new ol.style.Style({
stroke: new ol.style.Stroke({
color: ‘rgba(0, 170, 0, 0.30)’,
width: 2
}),
fill: new ol.style.Fill({
color: ‘rgba(0, 170, 0, 0.10)’
})
}),
})
// idoB12E

// idoB13S
var mtz2 = new ol.layer.Vector({
name: ‘mtz’,
type: ‘overlay’,
title: ‘Training Area MTZ-2’,
source: new ol.source.Vector({
url: ‘layers/MTZ-2.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: new ol.style.Style({
stroke: new ol.style.Stroke({
color: ‘rgba(0, 170, 0, 0.30)’,
width: 2
}),
fill: new ol.style.Fill({
color: ‘rgba(0, 170, 0, 0.10)’
})
}),
})
// idoB13E

// idoB14S
var mtz3a = new ol.layer.Vector({
name: ‘mtz’,
type: ‘overlay’,
title: ‘Training Area MTZ-3A’,
source: new ol.source.Vector({
url: ‘layers/MTZ-3A.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: new ol.style.Style({
stroke: new ol.style.Stroke({
color: ‘rgba(0, 170, 0, 0.30)’,
width: 2
}),
fill: new ol.style.Fill({
color: ‘rgba(0, 170, 0, 0.10)’
})
}),
})
// idoB14E

// idoB15S
var mtz3b = new ol.layer.Vector({
name: ‘mtz’,
type: ‘overlay’,
title: ‘Training Area MTZ-3B’,
source: new ol.source.Vector({
url: ‘layers/MTZ-3B.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: new ol.style.Style({
stroke: new ol.style.Stroke({
color: ‘rgba(0, 170, 0, 0.30)’,
width: 2
}),
fill: new ol.style.Fill({
color: ‘rgba(0, 170, 0, 0.10)’
})
}),
})
// idoB15E

// idoB16S
var mtz4 = new ol.layer.Vector({
name: ‘mtz’,
type: ‘overlay’,
title: ‘Training Area MTZ-4’,
source: new ol.source.Vector({
url: ‘layers/MTZ-4.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: new ol.style.Style({
stroke: new ol.style.Stroke({
color: ‘rgba(0, 170, 0, 0.30)’,
width: 2
}),
fill: new ol.style.Fill({
color: ‘rgba(0, 170, 0, 0.10)’
})
}),
})
// idoB16E

// idoB17S
var mtz5 = new ol.layer.Vector({
name: ‘mtz’,
type: ‘overlay’,
title: ‘Training Area MTZ-5’,
source: new ol.source.Vector({
url: ‘layers/MTZ-5.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: new ol.style.Style({
stroke: new ol.style.Stroke({
color: ‘rgba(0, 170, 0, 0.30)’,
width: 2
}),
fill: new ol.style.Fill({
color: ‘rgba(0, 170, 0, 0.10)’
})
}),
})
// idoB17E

// idoB18S
var zogtsancarlos = new ol.layer.Vector({
name: ‘zogt’,
type: ‘overlay’,
title: ‘Sport Area ZOGT San Carlos’,
source: new ol.source.Vector({
url: ‘layers/ZOGT San Carlos.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: new ol.style.Style({
stroke: new ol.style.Stroke({
color: ‘rgba(0, 70, 0, 0.10)’,
width: 2
}),
fill: new ol.style.Fill({
color: ‘rgba(0, 70, 0, 0.05)’
})
}),
})
// idoB18E

// idoB19S
var zogtnaranjo = new ol.layer.Vector({
name: ‘zogt’,
type: ‘overlay’,
title: ‘Sport Area ZOGT Naranjo’,
source: new ol.source.Vector({
url: ‘layers/ZOGT Naranjo.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: new ol.style.Style({
stroke: new ol.style.Stroke({
color: ‘rgba(0, 70, 0, 0.10)’,
width: 2
}),
fill: new ol.style.Fill({
color: ‘rgba(0, 70, 0, 0.05)’
})
}),
})
// idoB19E

// idoB20S
var fuelelcoco = new ol.layer.Vector({
name: ‘fda’,
type: ‘overlay’,
title: ‘Fuel Dumping Area El Coco’,
source: new ol.source.Vector({
url: ‘layers/FDA EL COCO.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: new ol.style.Style({
stroke: new ol.style.Stroke({
color: ‘rgba(45, 64, 168, 0.15)’,
width: 2
}),
fill: new ol.style.Fill({
color: ‘rgba(45, 64, 168, 0.10)’
})
}),
})
// idoB20E

// idoB21S
var fuelliberia = new ol.layer.Vector({
name: ‘fda’,
type: ‘overlay’,
title: ‘Fuel Dumping Area Liberia’,
source: new ol.source.Vector({
url: ‘layers/FDA LIBERIA.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: new ol.style.Style({
stroke: new ol.style.Stroke({
color: ‘rgba(45, 64, 168, 0.15)’,
width: 2
}),
fill: new ol.style.Fill({
color: ‘rgba(45, 64, 168, 0.10)’
})
}),
})
// idoB21E

// idoB22S
var a317 = new ol.layer.Vector({
name: ‘lowairway’,
type: ‘overlay’,
title: ‘A317’,
source: new ol.source.Vector({
url: ‘layers/A317.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: lowairway,
})
// idoB22E

// idoB23S
var a322 = new ol.layer.Vector({
name: ‘lowairway’,
type: ‘overlay’,
title: ‘A322’,
source: new ol.source.Vector({
url: ‘layers/A322.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: lowairway,
})
// idoB23E

// idoB24S
var a502 = new ol.layer.Vector({
name: ‘lowairway’,
type: ‘overlay’,
title: ‘A502’,
source: new ol.source.Vector({
url: ‘layers/A502.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: lowairway,
})
// idoB24E

// idoB25S
var b690 = new ol.layer.Vector({
name: ‘lowairway’,
type: ‘overlay’,
title: ‘B690’,
source: new ol.source.Vector({
url: ‘layers/B690.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: lowairway,
})
// idoB25E

// idoB26S
var b767 = new ol.layer.Vector({
name: ‘lowairway’,
type: ‘overlay’,
title: ‘B767’,
source: new ol.source.Vector({
url: ‘layers/B767.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: lowairway,
})
// idoB26E

// idoB27S
var g436 = new ol.layer.Vector({
name: ‘lowairway’,
type: ‘overlay’,
title: ‘G436’,
source: new ol.source.Vector({
url: ‘layers/G436.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: lowairway,
})
// idoB27E

// idoB28S
var g439 = new ol.layer.Vector({
name: ‘lowairway’,
type: ‘overlay’,
title: ‘G439’,
source: new ol.source.Vector({
url: ‘layers/G439.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: lowairway,
})
// idoB28E

// idoB29S
var g440 = new ol.layer.Vector({
name: ‘lowairway’,
type: ‘overlay’,
title: ‘G440’,
source: new ol.source.Vector({
url: ‘layers/G440.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: lowairway,
})
// idoB29E

// idoB30S
var r773 = new ol.layer.Vector({
name: ‘lowairway’,
type: ‘overlay’,
title: ‘R773’,
source: new ol.source.Vector({
url: ‘layers/R773.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: lowairway,
})
// idoB30E

// idoB31S
var ua317 = new ol.layer.Vector({
name: ‘highairway’,
type: ‘overlay’,
title: ‘UA317’,
source: new ol.source.Vector({
url: ‘layers/UA317.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: highairway,
})
// idoB31E

// idoB32S
var ua322 = new ol.layer.Vector({
name: ‘highairway’,
type: ‘overlay’,
title: ‘UA322’,
source: new ol.source.Vector({
url: ‘layers/UA322.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: highairway,
})
// idoB32E

// idoB33S
var ua502 = new ol.layer.Vector({
name: ‘highairway’,
type: ‘overlay’,
title: ‘UA502’,
source: new ol.source.Vector({
url: ‘layers/UA502.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: highairway,
})
// idoB33E

// idoB34S
var ub690 = new ol.layer.Vector({
name: ‘highairway’,
type: ‘overlay’,
title: ‘UB690’,
source: new ol.source.Vector({
url: ‘layers/UB690.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: highairway,
})
// idoB34E

// idoB35S
var ub767 = new ol.layer.Vector({
name: ‘highairway’,
type: ‘overlay’,
title: ‘UB767’,
source: new ol.source.Vector({
url: ‘layers/UB767.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: highairway,
})
// idoB35E

// idoB36S
var ug436 = new ol.layer.Vector({
name: ‘highairway’,
type: ‘overlay’,
title: ‘UG436’,
source: new ol.source.Vector({
url: ‘layers/UG436.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: highairway,
})
// idoB36E

// idoB37S
var ug439 = new ol.layer.Vector({
name: ‘highairway’,
type: ‘overlay’,
title: ‘UG439’,
source: new ol.source.Vector({
url: ‘layers/UG439.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: highairway,
})
// idoB37E

// idoB38S
var ug440 = new ol.layer.Vector({
name: ‘highairway’,
type: ‘overlay’,
title: ‘UG440’,
source: new ol.source.Vector({
url: ‘layers/UG440.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: highairway,
})
// idoB38E

// idoB39S
var ur773 = new ol.layer.Vector({
name: ‘highairway’,
type: ‘overlay’,
title: ‘UR773’,
source: new ol.source.Vector({
url: ‘layers/UR773.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: highairway,
})
// idoB39E

// idoB40S
var ul200 = new ol.layer.Vector({
name: ‘rnavairway’,
type: ‘overlay’,
title: ‘UL200’,
source: new ol.source.Vector({
url: ‘layers/UL200.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: rnavairway,
})
// idoB40E

// idoB41S
var ul423 = new ol.layer.Vector({
name: ‘rnavairway’,
type: ‘overlay’,
title: ‘UL423’,
source: new ol.source.Vector({
url: ‘layers/UL423.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: rnavairway,
})
// idoB41E

// idoB42S
var ul655 = new ol.layer.Vector({
name: ‘rnavairway’,
type: ‘overlay’,
title: ‘UL655’,
source: new ol.source.Vector({
url: ‘layers/UL655.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: rnavairway,
})
// idoB42E

// idoB43S
var um419 = new ol.layer.Vector({
name: ‘rnavairway’,
type: ‘overlay’,
title: ‘UM419’,
source: new ol.source.Vector({
url: ‘layers/UM419.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: rnavairway,
})
// idoB43E

// idoB44S
var um659 = new ol.layer.Vector({
name: ‘rnavairway’,
type: ‘overlay’,
title: ‘UM659’,
source: new ol.source.Vector({
url: ‘layers/UM659.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: rnavairway,
})
// idoB44E

// idoB45S
var um796 = new ol.layer.Vector({
name: ‘rnavairway’,
type: ‘overlay’,
title: ‘UM796’,
source: new ol.source.Vector({
url: ‘layers/UM796.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: rnavairway,
})
// idoB45E

// idoB46S
var uz403 = new ol.layer.Vector({
name: ‘rnavairway’,
type: ‘overlay’,
title: ‘UZ403’,
source: new ol.source.Vector({
url: ‘layers/UZ403.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: rnavairway,
})
// idoB46E

// idoB47S
var uz593 = new ol.layer.Vector({
name: ‘rnavairway’,
type: ‘overlay’,
title: ‘UZ593’,
source: new ol.source.Vector({
url: ‘layers/UZ593.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: rnavairway,
})
// idoB47E

// idoB48S
var mvaelcocolabels = new ol.layer.Vector({
name: ‘mvalabel’,
type: ‘overlay’,
title: ‘Coco MVA Labels’,
source: new ol.source.Vector({
url: ‘layers/MVA-MROC-ALT.json’,
format: new ol.format.GeoJSON({
defaultDataProjection :‘EPSG:4326’,
projection: ‘EPSG:3857’
}),
}),
style: mvalabel,
declutter: true
})
// idoB48E

var layers;

function createBaseLayers() {
var layers = ;

layers.push(
	new ol.layer.Group({
		fold: 'open',
		layers: [
			new ol.layer.Tile({
				name: 'osm',
				type: 'base',
				visible: false,
			}),
			new ol.layer.Tile({
				source: new ol.source.OSM({
					"url" : "http://{a-c}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png"}),
				name: 'osm',
				title: 'OSM Light',
				type: 'base',
				visible: true,
			}),

		],
	}),
	new ol.layer.Group({
		title: 'Low Airways',
		fold: 'close',
		layers: [a317,a322,a502,b690,b767,g436,g439,g440,r773],
	}),
	new ol.layer.Group({
		title: 'High Airways',
		fold: 'open',
		layers: [ua317,ua322,ua502,ub690,ub767,ug436,ug439,ug440,ur773],
	}),
	new ol.layer.Group({
		title: 'RNAV Airways',
		fold: 'open',
		layers: [ul200,ul423,ul655,um419,um659,um796,uz403,uz593],
	}),
	new ol.layer.Group({
		title: 'Airspace TMAs, CTRs & ATZs',
		fold: 'open',
		layers: [tmaelcoco,tmaliberia,ctrelcoco,ctrliberia,atzpavas],
	}),
	new ol.layer.Group({
		title: 'Special Use Airspace',
		fold: 'open',
		layers: [mvaelcoco,mrp1,mrp2,mrr1,mrr2,mrr3],
	}),
	new ol.layer.Group({
		title: 'Special Use Airspace (secondary)',
		fold: 'open',
		layers: [mtz1,mtz2,mtz3a,mtz3b,mtz4,mtz5,zogtsancarlos,zogtnaranjo,fuelelcoco,fuelliberia],
	}),
	new ol.layer.Group({
		title: 'Labels',
		fold: 'open',
		layers: [mvaelcocolabels],
	}),
);

return layers;

}

  1. Inside html folder copy folder “layers” that i am loading (you must before unzip the file)
  1. It’s all

much easier to just zip up your modified scripts like you did the layers, if you aren’t going to stick them in a git fork or the like.
Can you describe how you generated the layers files, so folks can create them for their local airports/area?