Jump to content
The simFlight Network Forums

Building a network of taxiways at an airport


Recommended Posts

Hi,

 

Our application needs to build a network of taxiways at the airport where a pilot is currently located. As they taxi, the application needs to keep in mind the following points:

 

* Announce with a screen reader such as NVDA, the current taxiway as the pilot moves onto it.

* Keep track of the pilot's movements along the taxiways, then announce the new taxiway in front of them.

* Provide directional guidance on the upcoming taxiway such as 'taxiway alpha to the left and right.', or 'taxiway bravo 1 O' clock to the right.'.

* Announce to the pilot when they have strayed off of the taxiway such as veering into the grass.

* Announce runways as they appear as intersections to the current taxiway in the event the pilot doesn't have RAS professional installed.

* Automatically announce the distance in feet to the next intersection when they are 500 feet or less from that intersection.

 

I know the .net library has a taxiways database. However, I am not clear on how to start implementing these features. If anyone has any starter points to try, it would be appreciated. Announcing with speech isn't a problem, as long as I can get the taxiway network built and understand how it works.

 

Link to comment
Share on other sites

Hi Andy,

Sorry for the delay in replying. I've been away.

I've looked through your bullet point requirements. Items 1 & 4 can be done with FsTaxiway object at the moment as it tells you if the player is on a particular taxiway or not.

The others all rely on intersections of taxiways. These are not currently in the FsTaxiway object but I think it's fairly simple to calculate these and add them to the class.

Each taxiway will have a list of intersections. Each intersection will include the position of the intersection and a pointer to the taxiway/runway it intersects with. This will give you a network of taxiways rather than a flat list like it is now.

Going through the remaining bullet points, these all seem possible if you know the intersection points. It's just a case of testing how far they are from the player and in which direction.

I'll add this over the next week or 2.

Paul

 

Link to comment
Share on other sites

  • 2 weeks later...

Hi Andy,

Version 3.2.7 is now on NuGet. There is a new feature that add TaxiwayIntersection objects to Taxiways, Runways, Gates and Helipads.

You can use these intersections to find which taxiways are connected and where they go (e.g. gate, runway). Each intersection also has a Lat/Lon point identifying where the junction is.

Hopefully this will enable you to do most of what you want.

Here is some sample code explaining how it works:

C#

            // Setup
            AirportsDatabase DB = FSUIPCConnection.AirportsDatabase;
            DB.LoadTaxiways = true;
            DB.Load();

            // To use intersections you must first calculate them for the airport you are interested in
            FsAirport EGJJ = DB.Airports["EGJJ"];
            EGJJ.CalculateTaxiwayIntersections();

            // Now each Taxiway has a number of collections of FsTaxiwayIntersections.
            // e.g.:
            // Get taxiway B
            FsTaxiway taxiwayB = EGJJ.Taxiways["B"];
            FsTaxiwayIntersectionCollection<FsTaxiway> connectedTaxiways = taxiwayB.TaxiwayIntersections;
            FsTaxiwayIntersectionCollection<FsGate> connectedGates = taxiwayB.GateIntersections;
            FsTaxiwayIntersectionCollection<FsRunway> connectedRunways = taxiwayB.RunwayIntersections;
            FsTaxiwayIntersectionCollection<FsHelipad> connectedHelipads = taxiwayB.HelipadIntersections;

            // For each of these collections you can step through and get the information about the intersection
            // This example works on the gates connected to this taxiway:
            foreach(FsTaxiwayIntersection<FsGate> gateIntersection in connectedGates)
            {
                // Get the location where the taxiway connects to the gate
                FsLatLonPoint intersectionLocation = gateIntersection.Location;
                // The object property points to the gate itself
                string gateName = gateIntersection.Object.ID;
            }

            // FsGate. FsHelipad and FsRunway objects also have a collection of taxiway intersections
            // e.g. get all taxiways that join with runway 27
            FsRunway rw27 = EGJJ.Runways["27"];
            foreach (FsTaxiwayIntersection<FsTaxiway> taxiwayIntersection in rw27.TaxiwayIntersections)
            {
                FsLatLonPoint location = taxiwayIntersection.Location;
                string taxiwayName = taxiwayIntersection.Object.Name;
            }

VB.NET

        ' Setup
        Dim DB As AirportsDatabase = FSUIPCConnection.AirportsDatabase
        DB.LoadTaxiways = True
        DB.Load()

        ' To use intersections you must first calculate them for the airport you are interested in
        Dim EGJJ As FsAirport = DB.Airports("EGJJ")
        EGJJ.CalculateTaxiwayIntersections()

        ' Now each Taxiway has a number of collections of FsTaxiwayIntersections.
        ' e.g.:
        ' Get taxiway B
        Dim taxiwayB As FsTaxiway = EGJJ.Taxiways("B")
        Dim connectedTaxiways As FsTaxiwayIntersectionCollection(Of FsTaxiway) = taxiwayB.TaxiwayIntersections
        Dim connectedGates As FsTaxiwayIntersectionCollection(Of FsGate) = taxiwayB.GateIntersections
        Dim connectedRunways As FsTaxiwayIntersectionCollection(Of FsRunway) = taxiwayB.RunwayIntersections
        Dim connectedHelipads As FsTaxiwayIntersectionCollection(Of FsHelipad) = taxiwayB.HelipadIntersections

        ' For each of these collections you can step through and get the information about the intersection
        ' This example works on the gates connected to this taxiway:
        For Each gateIntersection As FsTaxiwayIntersection(Of FsGate) In connectedGates
            ' Get the location where the taxiway connects to the gate
            Dim intersectionLocation As FsLatLonPoint = gateIntersection.Location
            ' The object property points to the gate itself
            Dim gateName As String = gateIntersection.Object.ID
        Next

        ' FsGate. FsHelipad and FsRunway objects also have a collection of taxiway intersections
        ' e.g. get all taxiways that join with runway 27
        Dim rw27 As FsRunway = EGJJ.Runways("27")
        For Each taxiwayIntersection As FsTaxiwayIntersection(Of FsTaxiway) In rw27.TaxiwayIntersections
            Dim Location As FsLatLonPoint = taxiwayIntersection.Location
            Dim taxiwayName As String = taxiwayIntersection.Object.Name
        Next

Paul

Link to comment
Share on other sites

Hi,

 

Thanks for the great additions. I will find them quite useful. Do you know if every taxiway has a name? When I took a look at ones at KJFK for example, the majority of them didn't have a name.

Link to comment
Share on other sites

I think all taxiways have name in real life, but the scenery (BGL) files built into FSX have only a few named taxiways. I don't know if this is any better in later versions of flight sim, but I would think most commercial add-on scenery would be better at this.

There are ICAO rules for naming taxiways and now we know which are connected it should be possible to automatically name the missing ones in a realistic way. It's unlikely to get the names the same as real life, but at least they'll have names. 

Let me know if that's a feature that would be useful and I'll look into it.

Paul

 

Link to comment
Share on other sites

Hi,

 

Having realistic names to the taxiways would be nice, especially when flying on vatsim. In that case, we would need to know the taxiway names when a controller gives us a taxi route to follow.

Link to comment
Share on other sites

If I generate the taxiway names in the DLL they are unlikely to match the real-world names. Vatsim controllers will be using the real world names so it would be very confusing for you to have different names. It's probably not a good idea.

Paul

Link to comment
Share on other sites

If you want the voice prompts as you previously described then you need the taxiway names. I can only suggest using free or commercial scenery that includes the correct names in the BGL files. These will then be extracted into the Airports Database via MakeRunways.exe.

An alternative would be to your application to find a route to the runway and just give 'turn left/right/hold short' voice instructions (no need for taxiway names). This would not necessarily be the route given by the VATSIM controllers. Maybe they can make allowances for blind pilots by either allowing self-navigation to the runway, or giving step-by-step instructions during the taxiing over the radio to guide the pilot to the runway.

Paul

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use. Guidelines Privacy Policy We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.