Here's a small behind the scenes peek into how I make new beacons. I made a spreadsheet which simplifies the process a lot, so it basically boils down to a bit of Google Earth and mission editor work:
1. Find an airport that should have ILS, but doesn't in DCS. For the PG map this is quite easy since I have been involved in ILS deliveries to most of the airports in question. An other method is to just check the AIPs for the airports (which is needed anyways, in order to get the correct frequncy and ident, unless you have this info from other sources).
2. Google earth surveying: I find the location of the localizer (LOC) and glide path (GP) antennas and reference their position to the thresholds and centerline of the runway. Google earth coordinates aren't necessarily 1:1 with DCS, so this is the best way I have found of semi-accurately placing the beacons. The positions are noted in collumn B and D in the spreadsheet.
3. I check AIP AD 2.19 to find the LOC frequency and IDs of the navaids. DCS handles the LOC/GP frequency pairing, so there's no need to check the GP freq. in Annex 10. The results are noted in collumn F/G.
4. Collumn H is just a note of where the GP is located in relation to the runway.
5. Collumn I-O: DCS mission editor surveying. I find the points specified in col. B/D in the mission editor, and note down the coordinates in both X/Y metric (I/J) and decimal degrees (L/M), and the elevation in meters (K). N is the runway heading in degrees, referenced to true north, and it ranges from -180° to +180°. So N, E, S and W would be 0, 90, 180, -90. The reason why there are both metric X/Y and lat/lon coordinates is that one defines the placement of the navaid, and one defines the placement of the mission editor/F10 map symbology. Collumn O defines an offset in the localizer coverage symbology, so that it emanates from the opposite runway end.
6. Beacon ID (col. P) is taken from the beacons.lua entries for the airport in question. If no navaids exist at the airport, just chose the next available number. Beacon number (col. Q) is the next available beacon number for the given beacon ID. DisplayName is just used in the LUA to keep stuff organized.
When I finish filling out these various parameters, I go on to sheet 2 of the spreadsheet, where I generate the lua code using 'concat', pre-defined strings and the values from sheet 1: