SDK NavData?

As known SDK documentation for NavData is still missing.
Our home airport is missing, now we have to make something ourselves.
However, questions naturally arise during development.

<Waypoint lon="-3.195058592595314" lat="40.51522864047557" magvar="0.0" waypointType="NAMED" waypointRegion="LF" waypointIdent="WPT00"/>

what means waypointType="NAMED"?

<Leg type="IF" fixType="TERMINAL_WAYPOINT" fixRegion="LF" fixIdent="TWT00" recommendedType="LOCALIZER" recommendedRegion="LF" recommendedIdent="IL01" theta="106.10000000000001" rho="8.700000000000001N" altitudeDescriptor="+" altitude1="2700.0F"/>

what means theta="106.10000000000001" and rho="8.700000000000001N"?

Is there an FSX SDK documentation?
I couldn’t find anything on the web that would help me.

Thanks in advance.

Not an expert in this area, but Options for Type are as follows:

NAMED
UNNAMED
VOR
NDB
OFF_ROUTE
IAF
FAF

Theta is the Heading and Rho is the distance

While this will obviously be different in the current version, you may find some worth while info here:
https://www.prepar3d.com/SDKv5/sdk/world/scenery/scenery_overview.html

3 Likes

I use to make changes to the NAV data on old MSFS steam and it was easy. I forgot now but you can google "theta, rho, NAME, and others abbr. " All of the abbr. means something. KSAN use to not work with LOC and the GS would not be followed by the aircraft but since the update, I landed the TBM and it followed the GS all the way in. In your case, updates are coming slow and it may take time to update the airport you want to fly to.

1 Like

Thanks guys, now my team has something to read. :+1:t2:

@JuiceBox7535 We also need an overview like Prepard3d and it has to be in the SDK, thx for the link. :+1:t2:
@ChrisofUSA7229 theta has 42,100,000 hits, I don’t want to try NAME at all. :crazy_face:
…I couldn’t resist NAME 7.330.000.000

Thank you.

1 Like

most of this data comes from the ARINC standard (can’t remember the number) and describes every waypoint type on an approach using the same variables with different contexts for each depending on the waypoint type.

Can be confusing at first, but I had some luck years ago with the FSX data.

1 Like

ARINC 424 :+1:t2:

1 Like

Is also supported by Arduino, I didn’t know.
Interesting for home cockpit builders.

That one would be ARINC 429 I believe. Hoping to test out some of that with an Arduino Mega here soon.

Does anyone know tools to create the following?
type="TF" fixType="TERMINAL_WAYPOINT" fixRegion="ED" fixIdent="FI07" flyOver="TRUE" theta="71" rho="2.5N" magneticCourse="071" distance="4.7N"

I built my own custom airport and somehow there is no planes starting or landing. I think I need to create the approaches and everything in the xml file. Doe anybody know how exactly to do that as of now?

Hi,

Is this procedure editor available for download anywhere?

Thanks,

Graham

1 Like

Just a thought… you could use the ADE for FSX then convert the result into the MSFS form… it should be 99% identical.

no, unfortunately nothing found.
we edit it by hand with the help of ADE fon FSX.
PS: ADE for FS2020 is currently in the closed alpha, unfortunately I didn’t get access either.

To create the approaches for my airport, KASH, I used the FSX ADE to help write them. It can’t create all the different legs, so I had to do a back and forth by exporting the xml of what I had written, hand editing it and reading it back in, along with using the automatic ADE commands to create the different segments.

Here’s some resources I used, along with exporting the xml from FSX for airports like KBOS etc that have lots of complex approaches for examples of different types of legs.

https://www.fsdeveloper.com/forum/threads/tutorial-approach-legtype-definitions-and-attached-picture.13751/

https://www.fsdeveloper.com/forum/threads/help-with-rnav-approach.449552/

https://www.faa.gov/air_traffic/flight_info/aeronav/digital_products/cifp/download/

You’ll find all your approaches and the basis behind the programming you’ll need to do in the latest available cifp file at the above link.

The nice thing about ADE as it’ll help you debug your approaches graphically, it has error checking built in, it’s a pretty good tool. Once you’ve got your approaches, you can export the xml and paste it into your airport.

Here’s the approach data that I wrote for KASH. I’m a newbie, so I don’t know how accurate it is, but it works in game and it’s based on the cifp.

BTW, rho is the distance to end of the runway and theta is the heading to the point in question from the end of the runway. These and other terms are all standard IFR Approach terms that you can google to find out what they are.

	<Approach type="ILS" runway="14" designator="NONE" suffix="0" gpsOverlay="FALSE" fixType="TERMINAL_WAYPOINT" fixRegion="K6" fixIdent="MUGGY" altitude="3800.0F" heading="122.893143" missedAltitude="2000.0F">
		<ApproachLegs>
			<Leg type="IF" fixType="TERMINAL_WAYPOINT" fixRegion="K6" fixIdent="MUGGY" recommendedType="LOCALIZER" recommendedIdent="IASH" theta="319" rho="13.1N" altitudeDescriptor="+" altitude1="3800.0F" altitude2="3800.0F"/>
			<Leg type="HF" fixType="TERMINAL_WAYPOINT" fixRegion="K6" fixIdent="MUGGY" turnDirection="L" magneticCourse="138.5" distance="4.0N" altitudeDescriptor="+" altitude1="3800.0F"/>
			<Leg type="CF" fixType="TERMINAL_WAYPOINT" fixRegion="K6" fixIdent="LODTI" flyOver="FALSE" recommendedType="LOCALIZER" recommendedIdent="IASH" theta="318.5" rho="7.5N" magneticCourse="138.5" distance="4.7N" altitudeDescriptor="J" altitude1="3800.0F" altitude2="2500.0F"/>
			<Leg type="CF" fixType="TERMINAL_WAYPOINT" fixRegion="K6" fixIdent="NORIY" flyOver="FALSE" recommendedType="LOCALIZER" recommendedIdent="IASH" theta="318.5" rho="4.3N" magneticCourse="138.5" distance="3.2N" altitudeDescriptor="H" altitude1="2500.0F" altitude2="1600.0F"/>
			<Leg type="CF" fixType="RUNWAY" fixRegion="K6" fixIdent="RW14" flyOver="FALSE" recommendedType="LOCALIZER" recommendedRegion="K6" recommendedIdent="IASH" theta="318.7" rho="0.0N" magneticCourse="139" distance="4.3N" altitudeDescriptor="A" altitude1="247.0F" altitude2="247.0F"/>
		</ApproachLegs>
		<MissedApproachLegs>
			<Leg type="CA" magneticCourse="139" altitudeDescriptor="+" altitude1="800.0F"/>
			<Leg type="CF" fixType="TERMINAL_WAYPOINT" fixRegion="K6" fixIdent="PELAN" flyOver="FALSE" theta="0" rho="0.0N" magneticCourse="112.4" distance="6.5N" altitudeDescriptor="+" altitude1="800.0F" altitude2="2000.0F"/>
			<Leg type="HM" fixType="TERMINAL_WAYPOINT" fixRegion="K6" fixIdent="PELAN" turnDirection="R" magneticCourse="290" distance="4.0N" altitudeDescriptor="+" altitude1="2000.0F"/>
		</MissedApproachLegs>
	</Approach>
	<Approach type="LOCALIZER" runway="14" designator="NONE" suffix="0" gpsOverlay="FALSE" fixType="TERMINAL_WAYPOINT" fixRegion="K6" fixIdent="MUGGY" altitude="3800.0F" heading="122.800003" missedAltitude="2000.0F">
		<ApproachLegs>
			<Leg type="IF" fixType="TERMINAL_WAYPOINT" fixRegion="K6" fixIdent="MUGGY" recommendedType="LOCALIZER" recommendedIdent="IASH" theta="319" rho="13.1N" altitudeDescriptor="+" altitude1="3800.0F" altitude2="3800.0F"/>
			<Leg type="HF" fixType="TERMINAL_WAYPOINT" fixRegion="K6" fixIdent="MUGGY" turnDirection="L" magneticCourse="139" distance="4.0N" altitudeDescriptor="+" altitude1="3800.0F"/>
			<Leg type="CF" fixType="TERMINAL_WAYPOINT" fixRegion="K6" fixIdent="LODTI" flyOver="FALSE" recommendedType="LOCALIZER" recommendedIdent="IASH" theta="318.5" rho="7.5N" magneticCourse="138.5" distance="4.7N" altitudeDescriptor="+" altitude1="3800.0F" altitude2="2500.0F"/>
			<Leg type="CF" fixType="TERMINAL_WAYPOINT" fixRegion="K6" fixIdent="NORIY" flyOver="FALSE" recommendedType="LOCALIZER" recommendedIdent="IASH" theta="318.5" rho="4.3N" magneticCourse="138.5" distance="3.2N" altitudeDescriptor="+" altitude1="2500.0F" altitude2="1600.0F"/>
			<Leg type="CF" fixType="TERMINAL_WAYPOINT" fixRegion="K6" fixIdent="CIBES" flyOver="FALSE" recommendedType="LOCALIZER" recommendedIdent="IASH" theta="318.5" rho="1.8N" magneticCourse="138.5" distance="2.5N" altitudeDescriptor="+" altitude1="1600.0F" altitude2="760.0F"/>
			<Leg type="CF" fixType="RUNWAY" fixRegion="K6" fixIdent="RW14" flyOver="FALSE" recommendedType="LOCALIZER" recommendedRegion="K6" recommendedIdent="IASH" theta="318.5" rho="0.0N" magneticCourse="138.5" distance="1.8N" altitudeDescriptor="A" altitude1="247.0F" altitude2="247.0F"/>
		</ApproachLegs>
		<MissedApproachLegs>
			<Leg type="CA" magneticCourse="139" altitudeDescriptor="+" altitude1="800.0F"/>
			<Leg type="DF" fixType="TERMINAL_WAYPOINT" fixRegion="K6" fixIdent="PELAN" flyOver="FALSE" altitudeDescriptor="+" altitude1="2000.0F"/>
			<Leg type="HM" fixType="TERMINAL_WAYPOINT" fixRegion="K6" fixIdent="PELAN" turnDirection="R" magneticCourse="290" distance="4.0N" altitudeDescriptor="+" altitude1="2000.0F"/>
		</MissedApproachLegs>
	</Approach>
	<Approach type="RNAV" runway="14" designator="NONE" suffix="0" gpsOverlay="FALSE" fixType="TERMINAL_WAYPOINT" fixRegion="K6" fixIdent="MUGGY" altitude="3800.0F" heading="139" missedAltitude="2000.0F">
		<ApproachLegs>
			<Leg type="IF" fixType="TERMINAL_WAYPOINT" fixRegion="K6" fixIdent="MUGGY" altitudeDescriptor="+" altitude1="3800.0F"/>
			<Leg type="HF" fixType="TERMINAL_WAYPOINT" fixRegion="K6" fixIdent="MUGGY" turnDirection="L" magneticCourse="138.5" distance="4.0N" altitudeDescriptor="+" altitude1="3800.0F"/>
			<Leg type="TF" fixType="TERMINAL_WAYPOINT" fixRegion="K6" fixIdent="LODTI" magneticCourse="138.5" distance="4.7N" altitudeDescriptor="+" altitude1="2500.0F"/>
			<Leg type="TF" fixType="TERMINAL_WAYPOINT" fixRegion="K6" fixIdent="NORIY" magneticCourse="138.5" distance="3.2N" altitudeDescriptor="+" altitude1="1600.0F"/>
			<Leg type="TF" fixType="TERMINAL_WAYPOINT" fixRegion="K6" fixIdent="HESKO" magneticCourse="138.5" distance="1.9N" altitudeDescriptor="V" altitude1="1000.0F"/>
			<Leg type="TF" fixType="RUNWAY" fixRegion="K6" fixIdent="RW14" magneticCourse="138.5" distance="2.4N" altitudeDescriptor="A" altitude1="247.0F"/>
		</ApproachLegs>
		<MissedApproachLegs>
			<Leg type="CA" magneticCourse="139" altitudeDescriptor="+" altitude1="800.0F"/>
			<Leg type="DF" fixType="TERMINAL_WAYPOINT" fixRegion="K6" fixIdent="PELAN" flyOver="FALSE" altitudeDescriptor="+" altitude1="2000.0F"/>
			<Leg type="HM" fixType="TERMINAL_WAYPOINT" fixRegion="K6" fixIdent="PELAN" turnDirection="R" magneticCourse="267" distance="4.0N" altitudeDescriptor="+" altitude1="2000.0F"/>
		</MissedApproachLegs>
		<Transition transitionType="FULL" fixType="TERMINAL_WAYPOINT" fixRegion="K6" fixIdent="TUMAE" altitude="3800.0F">
			<TransitionLegs>
				<Leg type="IF" fixType="TERMINAL_WAYPOINT" fixRegion="K6" fixIdent="TUMAE" altitudeDescriptor="+" altitude1="3800.0F"/>
				<Leg type="TF" fixType="TERMINAL_WAYPOINT" fixRegion="K6" fixIdent="MUGGY" magneticCourse="228.3" altitudeDescriptor="+" altitude1="3800.0F"/>
			</TransitionLegs>
		</Transition>
	</Approach>
	<Approach type="RNAV" runway="32" designator="NONE" suffix="0" gpsOverlay="FALSE" fixType="TERMINAL_WAYPOINT" fixRegion="K6" fixIdent="ELIRY" altitude="2500.0F" heading="139" missedAltitude="3800.0F">
		<ApproachLegs>
			<Leg type="IF" fixType="TERMINAL_WAYPOINT" fixRegion="K6" fixIdent="ELIRY" altitudeDescriptor="+" altitude1="2500.0F"/>
			<Leg type="TF" fixType="TERMINAL_WAYPOINT" fixRegion="K6" fixIdent="CORNY" magneticCourse="318.5" distance="6.0N" altitudeDescriptor="+" altitude1="2000.0F"/>
			<Leg type="TF" fixType="TERMINAL_WAYPOINT" fixRegion="K6" fixIdent="ESICU" magneticCourse="318.5" distance="2.4N" altitudeDescriptor="V" altitude1="1220.0F"/>
			<Leg type="TF" fixType="RUNWAY" fixRegion="K6" fixIdent="RW32" magneticCourse="318.5" distance="3.1N" altitudeDescriptor="A" altitude1="236.0F"/>
		</ApproachLegs>
		<MissedApproachLegs>
			<Leg type="CA" magneticCourse="318.5" altitudeDescriptor="+" altitude1="481.0F"/>
			<Leg type="DF" fixType="TERMINAL_WAYPOINT" fixRegion="K6" fixIdent="MUGGY" flyOver="FALSE" altitudeDescriptor="+" altitude1="3800.0F"/>
			<Leg type="HM" fixType="TERMINAL_WAYPOINT" fixRegion="K6" fixIdent="MUGGY" turnDirection="L" magneticCourse="139" distance="4.0N" altitudeDescriptor="+" altitude1="3800.0F"/>
		</MissedApproachLegs>
		<Transition transitionType="FULL" fixType="TERMINAL_WAYPOINT" fixRegion="K6" fixIdent="IRGAW" altitude="2500.0F">
			<TransitionLegs>
				<Leg type="IF" fixType="TERMINAL_WAYPOINT" fixRegion="K6" fixIdent="IRGAW" altitudeDescriptor="+" altitude1="2900.0F"/>
				<Leg type="TF" fixType="TERMINAL_WAYPOINT" fixRegion="K6" fixIdent="ELIRY" magneticCourse="48.5" altitudeDescriptor="+" altitude1="2500.0F"/>
			</TransitionLegs>
		</Transition>
		<Transition transitionType="FULL" fixType="TERMINAL_WAYPOINT" fixRegion="K6" fixIdent="JEGDO" altitude="3000.0F">
			<TransitionLegs>
				<Leg type="IF" fixType="TERMINAL_WAYPOINT" fixRegion="K6" fixIdent="JEGDO" altitudeDescriptor="+" altitude1="2500.0F"/>
				<Leg type="TF" fixType="TERMINAL_WAYPOINT" fixRegion="K6" fixIdent="ELIRY" magneticCourse="230.5" altitudeDescriptor="+" altitude1="2500.0F"/>
			</TransitionLegs>
		</Transition>
		<Transition transitionType="FULL" fixType="VOR" fixRegion="K6" fixIdent="LWM" altitude="2500.0F">
			<TransitionLegs>
				<Leg type="IF" fixType="VOR" fixRegion="K6" fixIdent="LWM" altitudeDescriptor="+" altitude1="2500.0F"/>
				<Leg type="TF" fixType="TERMINAL_WAYPOINT" fixRegion="K6" fixIdent="ELIRY" magneticCourse="260.6" altitudeDescriptor="+" altitude1="2500.0F"/>
			</TransitionLegs>
		</Transition>
	</Approach>
	<Waypoint lat="42.8030666666667" lon="-71.5578000000000" waypointType="NAMED" magvar="16" waypointRegion="K6" waypointIdent="CIBES"/>
	<Waypoint lat="42.7285500000000" lon="-71.4003833333333" waypointType="NAMED" magvar="16" waypointRegion="K6" waypointIdent="CORNY"/>
	<Waypoint lat="42.6741833333333" lon="-71.2860500000000" waypointType="NAMED" magvar="16" waypointRegion="K6" waypointIdent="ELIRY"/>
	<Waypoint lat="42.7505500000000" lon="-71.4467833333333" waypointType="NAMED" magvar="16" waypointRegion="K6" waypointIdent="ESICU"/>
	<Waypoint lat="42.8084666666667" lon="-71.5692333333333" waypointType="NAMED" magvar="16" waypointRegion="K6" waypointIdent="HESKO"/>
	<Waypoint lat="42.5843833333333" lon="-71.3645000000000" waypointType="NAMED" magvar="16" waypointRegion="K6" waypointIdent="IRGAW"/>
	<Waypoint lat="42.7639166666667" lon="-71.2016666666667" waypointType="NAMED" magvar="16" waypointRegion="K6" waypointIdent="JEGDO"/>
	<Waypoint lat="42.8538500000000" lon="-71.6655666666667" waypointType="NAMED" magvar="16" waypointRegion="K6" waypointIdent="LODTI"/>
	<Waypoint lat="42.8250833333333" lon="-71.6044666666667" waypointType="NAMED" magvar="16" waypointRegion="K6" waypointIdent="NORIY"/>
	<Waypoint lat="42.9883833333333" lon="-71.6743166666667" waypointType="NAMED" magvar="16" waypointRegion="K6" waypointIdent="TUMAE"/>
	<Waypoint lat="42.8234333333333" lon="-71.6022166666667" waypointType="NAMED" magvar="16" waypointRegion="K6" waypointIdent="CHERN"/>
	<Waypoint lat="42.8958166666667" lon="-71.7548333333333" waypointType="NAMED" magvar="16" waypointRegion="K6" waypointIdent="MUGGY"/>
	<Waypoint lat="42.7555555555556" lon="-71.3298361111111" waypointType="NAMED" magvar="16" waypointRegion="K6" waypointIdent="PELAN"/>

Thanks for sharing.

Does this ADE thing (i’m not familiar with other flight sims next to this current 2020 or anything in aviation at all) also allow you to code the departure?

Reason asking is that I’m trying to work out for Eindhoven Airport how these V legs work:

While I understand their concept, I have no clue how to write the actual code for example for a VD leg.

I don’t know. It should, the terminology for departures should be the same for approaches.

1 Like

Yes. ADE for FSX does work for departures and arrivals, XML syntax is same with MSFS.

1 Like

@FlyingsCool5650 was kind enough to send me the XML for EHEH from Fsx.
Unfortunately the FSX version only includes the approach, which i already wrote and got working properly in FS2020.

There isn’t any departure legs shown so unfortunately I won’t be able to figure out how the write the actual code for a VD leg (as example)

Which is what it’s trying to do here first:

And then it seems to do a VI leg.

As mentioned, I was able to write the approach code successfully (or at least it looks correct and works :stuck_out_tongue: )
But I’m not sure how the actual xml is written for the VD and VI :frowning:

Did you peruse the leg type definitions page?

One thing I would do is head over to FSDevelopers and ask your question/search there. And look for the FSX SDK, it might contain the definition for the XML VI / VD legs. Jon “Scruffyduck” might be able to help you find those definitions.