New online map for VATSIM
http://accumap-project.com/
[TUTORIAL]How to Connect Flightgear to VATSIM | WINDOWS,LINUX,MAC
Re: [TUTORIAL]How to Connect Flightgear to VATSIM | WINDOWS,LINUX,MAC
FG Pilot (2011-2018)
Prepar3d (2015 - 2023)
MSFS2020 (2020 - )
Prepar3d (2015 - 2023)
MSFS2020 (2020 - )
Re: [TUTORIAL]How to Connect Flightgear to VATSIM | WINDOWS,LINUX,MAC
Navigraph Level-D format procedures to flightgear
The third point can be automated to install many procedure files at once:
Skip to the third point for now, first and second needs some editing.
Source;
FG-wiki
Credits to respective authors.
- Download the Level-D formatted files from the Navigraph.
- Run the executable file. When prompted, choose to extract the data files in a directory on your Desktop (or in another easily accessible place).
- Open that directory, you will find many XML files , rename the ones you need to ICAO.procedures.xml (where ICAO is the ICAO code of the airport the XML file refers to): move the ones you need from them to $FG_SCENERY/Airports/I/C/A/ICAO.procedures.xml (replace I, C, A and ICAO with the corresponding letters of the ICAO code). (Example: put EDDF.procedures.xml in $FG_SCENERY/Airports/E/D/D/EDDF.procedures.xml).
The third point can be automated to install many procedure files at once:
Skip to the third point for now, first and second needs some editing.
- If you have Ruby installed on your computer, you can use this http://files.goneabitbursar.com/fg/install-navdat.rb
Code: Select all
#!/usr/bin/ruby
require 'fileutils' #I know, no underscore is not ruby-like
include FileUtils
absDest = Dir.pwd + "/" + ARGV[1]
Dir.chdir ARGV[0]
Dir['*.xml'].each do |proc|
a = proc[0, 1]
b = proc[1, 1]
c = proc[2, 1]
path = "#{absDest}/Airports/#{a}/#{b}/#{c}/#{proc[0..3]}.procedures.xml"
puts "would copy from #{proc} to #{path}"
if not File.exists?(File.dirname path)
puts "Will mkdir_p #{File.dirname path}"
FileUtils.mkdir_p File.dirname path
end
FileUtils.cp proc, path
end - Another possibility, using Python 3, is this extract-navdata.py script ( http://frougon.net/python_dumping_ground/short_scripts/extract-navdata.py ), which can install the files from a directory or directly from a tarball. Run extract-navdata.py --help or python3 extract-navdata.py --help for instructions. You may need to use py -3 instead of python3 on Windows,
Code: Select all
#! /usr/bin/env python3
# -*- coding: utf-8 -*-
# extract-navdata.py --- Create directory hierarchy and copy procedure files
# for the FlightGear flight simulator
# Copyright (c) 2015, Florent Rougon
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
# The views and conclusions contained in the software and documentation are
# those of the authors and should not be interpreted as representing official
# policies, either expressed or implied, of the extract-navdata.py project.
import sys
import os
import re
import shutil
import argparse
import locale
import tarfile
import collections
progname = os.path.basename(sys.argv[0])
progversion = "0.2"
version_blurb = """Written by Florent Rougon.
Copyright (c) 2015 Florent Rougon
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."""
def errExit(msg):
print("{0}: {1}".format(progname, msg))
sys.exit(1)
def info(msg):
print("{0}: {1}".format(progname, msg))
def warning(msg):
print("{0}: warning: {1}".format(progname, msg))
def processCommandLine():
params = argparse.Namespace()
parser = argparse.ArgumentParser(
usage="""\
%(prog)s [OPTION ...] INPUT ODIR
Create directory hierarchy and copy navigation procedure files for FlightGear.\
""",
description="""\
INPUT can be a directory or tarball containing navigation procedure files.
Each such file must have a name of the form ICAO.procedures.xml and is copied
(extracted) by this script as ODIR/Airports/I/C/A/ICAO.procedures.xml.
Directories are created as necessary.
ODIR can then be used as an element of FG_SCENERY.
If INPUT is a directory, the input procedure files must be in that
directory. Otherwise, INPUT is assumed to be a tarball and the procedure files
are looked for in all directories of the archive.
The supported tarball formats are those handled by the Python tarfile module:
https://docs.python.org/3/library/tarfile.html#module-tarfile
At the time of this writing, these are: tar, tar.gz, tar.bz2 and tar.xz.
The home page for this script is:
http://people.via.ecp.fr/~flo/
(more precisely,
<http://people.via.ecp.fr/~flo/python_dumping_ground/short_scripts/>).""",
formatter_class=argparse.RawDescriptionHelpFormatter,
# I want --help but not -h (it might be useful for something else)
add_help=False)
parser.add_argument('input', metavar='INPUT', help="""\
input directory or tarball""")
parser.add_argument('odir', metavar='ODIR', help="""output directory""")
parser.add_argument('--help', action="help",
help="display this message and exit")
# The version text is not wrapped when using
# formatter_class=argparse.RawDescriptionHelpFormatter
parser.add_argument('--version', action='version',
version="{name} {version}\n{blurb}".format(
name=progname, version=progversion, blurb=version_blurb))
params = parser.parse_args(namespace=params)
return params
# Regexp for the procedure file names
procFileCre = re.compile(r"(?P<ICAO>[A-Z0-9]{4})\.procedures\.xml$")
def directoryForNavfile(baseDir, name):
"""Return the directory where a procedure file should be written.
name --- basename of the procedure file (first 4 chars form the ICAO
of the corresponding airport)
"""
return os.path.join(baseDir, "Airports", *name[:3])
class DirectoryReader:
def __init__(self, inputDir):
self.inputDir = inputDir
def __enter__(self):
return self
def __exit__(self, *exc):
return False
def copyNavdata(self, outputBaseDir):
for entry in os.listdir(self.inputDir):
mo = procFileCre.match(entry)
ifile = os.path.join(self.inputDir, entry)
if mo and os.path.isfile(ifile):
odir = directoryForNavfile(outputBaseDir, entry)
os.makedirs(odir, exist_ok=True)
shutil.copyfile(ifile, os.path.join(odir, entry))
class TarfileReader:
def __init__(self, filepath):
self.archiveFile = filepath
self.tarfile = tarfile.open(filepath, "r", encoding="utf-8")
self.sanityChecks()
def __enter__(self):
self.tarfile.__enter__()
return self
def __exit__(self, *exc):
return self.tarfile.__exit__(*exc) # close the TarFile instance
def sanityChecks(self):
for memberName in self.tarfile.getnames():
if memberName.startswith(os.sep) or \
memberName.startswith(os.pardir):
errExit("in {!r}, archive member {!r} starting with "
"{!r} or {!r}. Huh?! Aborting.".format(
self.archiveFile, memberName, os.sep, os.pardir))
def copyNavdata(self, baseDir):
"""Extract procedure files from a tarball.
The files will be extracted into subdirectories of 'baseDir'.
Archives with a non-flat structure are supported.
"""
# For each airport, we'll remember the directories (hopefully only one)
# in which we found a procedure file for this airport.
dirsForICAO = collections.defaultdict(set)
for member in self.tarfile:
bn = os.path.basename(member.name)
mo = procFileCre.match(bn)
# Only extract regular files that have a suitable base name
if mo and member.isreg():
dirsForICAO[mo.group("ICAO")].add(os.path.dirname(member.name))
odir = directoryForNavfile(baseDir, bn)
os.makedirs(odir, exist_ok=True)
# TarFile.extract() would extract the dirname of archive
# members, if any.
with open(os.path.join(odir, bn), "wb") as f:
shutil.copyfileobj(self.tarfile.extractfile(member), f)
for icao, directories in dirsForICAO.items():
if len(directories) > 1:
dirS = "\n ".join(( repr(d) for d in directories ))
warning("found procedure files for airport {} in "
"{} different directories of the archive:\n\n {}\n\n"
"The resulting file will be undefined.\n".format(
icao, len(directories), dirS))
def main():
locale.setlocale(locale.LC_ALL, '')
if sys.hexversion < 0x030200F0:
errExit("this script requires Python 3.2 or later, aborting.")
params = processCommandLine()
# Extract from a directory or tarball?
if os.path.isdir(params.input):
reader = DirectoryReader(params.input)
else:
info("assuming {!r} is a tarball".format(params.input))
reader = TarfileReader(params.input)
info("installing procedure files into {!r}...".format(params.odir))
with reader as r:
r.copyNavdata(params.odir)
info("done")
sys.exit(0)
if __name__ == "__main__": main() - You could also use a small bash-script to do the work for you. Bash is a shell, native on Linux, also exists on Macs and Windows. Copy the following code into a new file, name it "convert.sh". Put it into the lowest directory, where all the xml-files are stored. (.../Level-D Simulations/navdata/)
#!/bin/bashCode: Select all
for file in *.xml
do
FILENAME=$( echo $file | sed s/.xml// )
DIR=$( echo "$FILENAME" | sed s/[A-Z0-9]\$// )
ONE=$( echo "$DIR" | sed s/[A-Z0-9]\$// | sed s/[A-Z0-9]\$// )
TWO=$( echo "$DIR" | sed s/[A-Z0-9]// | sed s/[A-Z0-9]\$// )
THREE=$( echo "$DIR" | sed s/[A-Z0-9]// | sed s/[A-Z0-9]// )
#echo "$file => $DIR => $ONE / $TWO / $THREE / $file"
mkdir -pv "../Airports/$ONE/$TWO/$THREE"
cp -v $file "../Airports/$ONE/$TWO/$THREE/$FILENAME.procedures.xml"
done- Now it's time to fire up a terminal and navigate to the files: cd /path/to/Level-D Simulations/navdata
- To make the script executable type: chmod +x convert.sh
- Now you're ready to run the script! ./convert.sh
Source;
FG-wiki
Credits to respective authors.
Last edited by SHM on Mon Feb 19, 2018 11:57 pm, edited 3 times in total.
FG Pilot (2011-2018)
Prepar3d (2015 - 2023)
MSFS2020 (2020 - )
Prepar3d (2015 - 2023)
MSFS2020 (2020 - )
Re: [TUTORIAL]How to Connect Flightgear to VATSIM | WINDOWS,LINUX,MAC
Nice info.
Thanks SM.
Thanks SM.
https://raw.githubusercontent.com/IAHM-COL/gpg-pubkey/master/pubkey.asc
R.M.S.
If we gave everybody in the World free software today, but we failed to teach them about the four freedoms, five years from now, would they still have it?
R.M.S.
If we gave everybody in the World free software today, but we failed to teach them about the four freedoms, five years from now, would they still have it?
Re: [TUTORIAL]How to Connect Flightgear to VATSIM | WINDOWS,LINUX,MAC
Looks like someone's interest just got peeked.
- Wecsje
- Posts: 167
- Joined: Wed Aug 16, 2017 4:25 pm
- Location: The Closet, Under the Stairs, the Netherlands
Re: [TUTORIAL]How to Connect Flightgear to VATSIM | WINDOWS,LINUX,MAC
This guide is why to overcomplicated, first, the navdata doesn't come as ICAO.procedures.xml, but as just ICAO.xml.
The easiest way to convert this, is to use this bash script (usable on all platforms):
Save this as a .sh script, and give it a name like "sorting".
Move the sorting.sh script into the navdata directory (where all the ICAO.xml files are).
From the navdata folder, remove all files that are not ICAO.xml (sort by type, and they should come up at the top).
Then, open terminal on mac or linux, or open Bash on Ubuntu on Windows for windows.
CD to the navdata directory, and execute the shell script: ./sorting.sh
Wait (this may take a few minutes).
You will see when it is done when it doesn't create more lines in the terminal window.
Outside of the navdata folder, a new folder called airports will be created, simply create a folder called procedures, move the airports folder into it, go to the FG launcher, select the "procedures" folder as additional scenery location, and make sure it is at the top of the list. Voila.
I'm working on a complete and simple tutorial about everything people need to do to connect to VATSIM with FG and get the most out of it.
Regards,
Charlie
PS: BIG credit to Pinto for helping me with this months ago
The easiest way to convert this, is to use this bash script (usable on all platforms):
Code: Select all
#!/bin/bash
for file in *.xml
do
FILENAME=$( echo $file | sed s/.xml// )
DIR=$( echo "$FILENAME" | sed s/[A-Z0-9]$// )
ONE=$( echo "$DIR" | sed s/[A-Z0-9]$// | sed s/[A-Z0-9]$// )
TWO=$( echo "$DIR" | sed s/[A-Z0-9]// | sed s/[A-Z0-9]$// )
THREE=$( echo "$DIR" | sed s/[A-Z0-9]// | sed s/[A-Z0-9]// )
#echo "$file => $DIR => $ONE / $TWO / $THREE / $file"
mkdir -pv "../Airports/$ONE/$TWO/$THREE"
cp -v $file "../Airports/$ONE/$TWO/$THREE/$FILENAME.procedures.xml"
done
Save this as a .sh script, and give it a name like "sorting".
Move the sorting.sh script into the navdata directory (where all the ICAO.xml files are).
From the navdata folder, remove all files that are not ICAO.xml (sort by type, and they should come up at the top).
Then, open terminal on mac or linux, or open Bash on Ubuntu on Windows for windows.
CD to the navdata directory, and execute the shell script: ./sorting.sh
Wait (this may take a few minutes).
You will see when it is done when it doesn't create more lines in the terminal window.
Outside of the navdata folder, a new folder called airports will be created, simply create a folder called procedures, move the airports folder into it, go to the FG launcher, select the "procedures" folder as additional scenery location, and make sure it is at the top of the list. Voila.
I'm working on a complete and simple tutorial about everything people need to do to connect to VATSIM with FG and get the most out of it.
Regards,
Charlie
PS: BIG credit to Pinto for helping me with this months ago
Twitch Streams: https://www.twitch.tv/wecsjelive
Contact methods: Discord (Wecsje#6351), FlightSims United discord (https://discord.me/flightsimsunited), Steam (Wecsje)
Track me on VATSIM: https://vatstats.net/pilots/1397313
Contact methods: Discord (Wecsje#6351), FlightSims United discord (https://discord.me/flightsimsunited), Steam (Wecsje)
Track me on VATSIM: https://vatstats.net/pilots/1397313
Re: [TUTORIAL]How to Connect Flightgear to VATSIM | WINDOWS,LINUX,MAC
The loadmanager program planned for the IDG Airbus' and MD-1X will also include an automatic of this via the click of one button Windows. Possibly Linux and OS X if I can figure that out.
Wecsje/PINTO's bash script is the easiest in my opinion for now.
Kind Regards,
Josh
Wecsje/PINTO's bash script is the easiest in my opinion for now.
Kind Regards,
Josh
Re: [TUTORIAL]How to Connect Flightgear to VATSIM | WINDOWS,LINUX,MAC
Why can't people read before commenting
What does the third point in my post say
It was taken straight from the wiki, so I corrected some small errors, but the scripts were there all along. So, you've the choice to use ruby/python/bash whichever you prefer.
Great to hear that you've stopped whining and decided to do something useful for once.
This has been on the wiki years ago, so you know where it came along from in the first place.
Chris blues added it on Sept 29, 2015
http://wiki.flightgear.org/Special:MobileDiff/87495
What does the third point in my post say
It was taken straight from the wiki, so I corrected some small errors, but the scripts were there all along. So, you've the choice to use ruby/python/bash whichever you prefer.
I'm working on a complete and simple tutorial about everything people need to do to connect to VATSIM with FG and get the most out of it.
Great to hear that you've stopped whining and decided to do something useful for once.
PS: BIG credit to Pinto for helping me with this months ago
This has been on the wiki years ago, so you know where it came along from in the first place.
Chris blues added it on Sept 29, 2015
http://wiki.flightgear.org/Special:MobileDiff/87495
FG Pilot (2011-2018)
Prepar3d (2015 - 2023)
MSFS2020 (2020 - )
Prepar3d (2015 - 2023)
MSFS2020 (2020 - )
- Wecsje
- Posts: 167
- Joined: Wed Aug 16, 2017 4:25 pm
- Location: The Closet, Under the Stairs, the Netherlands
Re: [TUTORIAL]How to Connect Flightgear to VATSIM | WINDOWS,LINUX,MAC
@SHM
Your post was way too complicated, and big credits to pinto because he helped me with this.
And whining? You better stop being a complete asshole and grow up for once (and this is the only thing I will say to you).
Regards,
Charlie
Your post was way too complicated, and big credits to pinto because he helped me with this.
And whining? You better stop being a complete asshole and grow up for once (and this is the only thing I will say to you).
Regards,
Charlie
Twitch Streams: https://www.twitch.tv/wecsjelive
Contact methods: Discord (Wecsje#6351), FlightSims United discord (https://discord.me/flightsimsunited), Steam (Wecsje)
Track me on VATSIM: https://vatstats.net/pilots/1397313
Contact methods: Discord (Wecsje#6351), FlightSims United discord (https://discord.me/flightsimsunited), Steam (Wecsje)
Track me on VATSIM: https://vatstats.net/pilots/1397313
Re: [TUTORIAL]How to Connect Flightgear to VATSIM | WINDOWS,LINUX,MAC
Wecsje wrote:Your post was way too complicated, and big credits to pinto because he helped me with this.
Why cant you read my post before commnenting, so again read what I said earlier
SHM wrote:Wecsje wrote:PS: BIG credit to Pinto for helping me with this months ago
This has been on the wiki years ago, so you know where it came along from in the first place.
Chris blues added it on Sept 29, 2015
http://wiki.flightgear.org/Special:MobileDiff/87495
Also the post I put had three options for ruby /python/ bash. And it explained to people what it does. I don't want people to do anything on their pc without knowing what it does
And whining? You better stop being a complete asshole and grow up for once (and this is the only thing I will say to you).
I'm traveling now, I'll get back to you later
Last edited by SHM on Tue Feb 20, 2018 12:14 am, edited 1 time in total.
Re: [TUTORIAL]How to Connect Flightgear to VATSIM | WINDOWS,LINUX,MAC
Run a diff command if you don't believe
FG Pilot (2011-2018)
Prepar3d (2015 - 2023)
MSFS2020 (2020 - )
Prepar3d (2015 - 2023)
MSFS2020 (2020 - )
Who is online
Users browsing this forum: No registered users and 1 guest