1.) This node.js application is designed to run on Linux, and also runs well on WSL (Windows Subsystem for Linux) and assumes a pre-existing node js installation
2.) After installing all requirements, clone this repository, change directory to chartmaker, open a terminal and enter npm install
3.) Give execute permissions to perlinstall.sh shell script and run it to install all the perl dependencies
4.) Run the application in a terminal with the command node make or to see command line options, node main --help
5.) If not passing a chart number argument, respond to the prompt for what to process
6.) Go do something else... depending on the number of charts and image quality, the process can take several hours to complete.
The FAA publishes charts 20 days before the official chart date, and chartmaker will automatically select the nearest chart date from this file of official FAA chart 56-day release dates, all the way up to the year 2044. If the next chart date is more than 20 days out, chartmaker will get the current chart date.
"attribution": "Aviation charts <a href='https://github.com/n129bz/chartmaker'>github.com/n129bz/chartmaker</a>"
"vfrdownloadtemplate": "https://aeronav.faa.gov/visual/<chartdate>/All_Files/<charttype>.zip"
"ifrdownloadtemplate": "https://aeronav.faa.gov/enroute/<chartdate>/<charttype>.zip"
"vfrindividualtemplate": "https://aeronav.faa.gov/visual/<chartdate>/sectional-files/<charttype>.zip"
"renameworkarea": false <- if true, will append chart date to the working folder name
"logtofile": true <- if true will produce a file "debug.log"
"cleanprocessfolders": false <- if true then working folders are removed after processing
"tileimagequality" : 80 <- percentage (1-100) greatly affects processing speed and database size
"zoomrange" : "1-12" <- range of overviews to produce, higher takes longer and can make db huge
"chartprocessindexes": [0,1,2,3,4,5,6], <- charts represented by indexes, default is all 6 will be processed, in this order (order can be changed or indexes removed)
"faachartnames": [
["Sectional", "vfr", ""], <- Entire USA + Alaska + Hawaii (NOTE no alias used for vfr charts)
["Caribbean", "vfr", ""],
["Grand_Canyon", "vfr", ""],
["Terminal", "vfr", ""],
["Helicopter", "vfr", ""],
["DDECUS", "ifr", "Enroute_Low"] <- aliases are required for DDECUS (which means Digital Data Enroute Continental US)
["DDECUS", "ifr", "Enroute_High"]
]
"vfrindividualcharts": [
[1, "Albuquerque"],
[2, "Anchorage"],
[3, "Atlanta"],
[4, "Bethel"],
[5, "Billings"],
[6, "Brownsville"],
[7, "Cape_Lisburne"],
[8, "Charlotte"],
[9, "Cheyenne"],
[10, "Chicago"],
[11, "Cincinnati"],
[12, "Cold_Bay"],
[13, "Dallas-Ft_Worth"],
[14, "Dawson"],
[15, "Denver"],
[16, "Detroit"],
[17, "Dutch_Harbor"],
[18, "El_Paso"],
[19, "Fairbanks"],
[20, "Great_Falls"],
[21, "Green_Bay"],
[22, "Halifax"],
[23, "Hawaiian_Islands"],
[24, "Houston"],
[25, "Jacksonville"],
[26, "Juneau"],
[27, "Kansas_City"],
[28, "Ketchikan"],
[29, "Klamath_Falls"],
[30, "Kodiak"],
[31, "Lake_Huron"],
[32, "Las_Vegas"],
[33, "Los_Angeles"],
[34, "McGrath"],
[35, "Memphis"],
[36, "Miami"],
[37, "Montreal"],
[38, "New_Orleans"],
[39, "New_York"],
[40, "Nome"],
[41, "Omaha"],
[42, "Phoenix"],
[43, "Point_Barrow"],
[44, "Salt_Lake_City"],
[45, "San_Antonio"],
[46, "San_Francisco"],
[47, "Seattle"],
[48, "Seward"],
[49, "St_Louis"],
[50, "Twin_Cities"],
[51, "Washington"],
[52, "Western_Aleutian_Islands"],
[53, "Wichita"]
]
"layertypeindex": 1,
"layertypes": [
"baselayer",
"overlay"
]
"tiledriverindex": 0,
"tiledrivers": [
"png",
"jpg",
"webp"
]
The chart zip files are downloaded from the FAA digital raster chart repository and unzipped. After the unzipping process all of the the resultant GEOtiff image names (and their matching tfw world file names) are "normalized" to all lower-case filenames with underscores in place of dashes and spaces and any apostrophes removed. This simplifies the down-stream processing of these files since GDAL can interpret spaces as argument separators.
Suggestions welcome!