# AeroFly FS 2 scenProc script - Ver 7 # Author of scenProc Arno Gerretsen # Script created by Crispy136 # Contributions by Rodeo, Kenventions & IZOJUB # - This script creates cultivation for night lighting, plants, communication & power towers, # water towers, storage tanks and buildings (incl. high rise and circular buildings) # # *** Search for TIP to find any recommended user changeable script lines *** # # You can change any values you want, but this script is complex with many lines requiring information # created by earlier lines. To avoid problems I suggest you only change values/lines indicated by TIP # comments. # ImportOGR|D:\CrispyStuff\Aerofly\Cultivation\YBBN_map.osm|*|aeroway;amenity;building;highway;landuse;leisure;name;natural;man_made;power|NOREPROJ # # SPLITGRID # - This command enables concurrent processing of the data, increasing CPU usage and reducing # processing time. However, as it increases processing times for some items, there is an # optimal placement for both the SplitGrid and MergeGrid commands. SplitGrid|0.03|*|building="*" # # STEP 1 - SOURCE DATA MANIPULATION # # IDENTIFY PLANTS # - Where an area has values in 2 or more vegetation types it fails to appear in FS2. So "landuse" was # given preference over "natural" which in turn has preference over "leisure". So an area which is # listed in the source data as natural = "wood AND leisure = "nature_reserve" would be treated as "wood". # TIP:- For greater realism different tree densities are required for different vegetation areas. # The values used below have been optimised for density in FS2 vs processing time in # scenProc. Adjust values to suit your needs. Values like 0.0001 produce denser trees than # value like0.00015 or 0.00025 PlacePointsInPolygon|landuse="forest"|0.0001;0.0001|1.0;1.0|INHERITPARENTATTR PlacePointsInPolygon|natural="wood" And NOT landuse="forest"|0.0001;0.0001|1.0;1.0|INHERITPARENTATTR PlacePointsInPolygon|natural="tree" And NOT landuse="forest"|0.00025;0.00025|1.0;1.0|INHERITPARENTATTR PlacePointsInPolygon|natural="tree_row" And NOT landuse="forest"|0.00025;0.00025|1.0;1.0|INHERITPARENTATTR PlacePointsInPolygon|natural="wetland" And NOT landuse="forest"|0.00015;0.00015|1.0;1.0|INHERITPARENTATTR PlacePointsInPolygon|natural="scrub" And NOT landuse="forest"|0.00015;0.00015|1.0;1.0|INHERITPARENTATTR PlacePointsInPolygon|leisure="park" And NOT landuse="forest" And NOT natural="wood" And NOT natural="tree*" And NOT natural="wetland" And NOT natural="scrub"|0.00025;0.00025|1.0;1.0|INHERITPARENTATTR PlacePointsInPolygon|leisure="nature_reserve" And NOT landuse="forest" And NOT natural="wood" And NOT natural="tree*" And NOT natural="wetland" And NOT natural="scrub" And NOT name="*Marine*" And NOT name="MNP*"|0.00015;0.00015|1.0;1.0|INHERITPARENTATTR PlacePointsInPolygon|leisure="golf_course" And NOT landuse="forest" And NOT natural="wood" And NOT natural="tree*" And NOT natural="wetland" And NOT natural="scrub"|0.00055;0.00055|1.0;1.0|INHERITPARENTATTR # - Identify plant points for later use. AddAttribute|FTYPE="POINT" And (landuse="forest" or natural="wood" or natural="tre*" or natural="wetland" or natural="scrub" or leisure="park" or leisure="nature_reserve" or leisure="golf_course")|String;tree|yes # # REMOVE PLANTS/LIGHTS NOT REQUIRED # - The lines below remove trees from areas such as sporting areas and water. AddAttributeIfInside|FTYPE="POINT" And tree="yes"|leisure="pitch"|String;skip|yes AddAttributeIfInside|FTYPE="POINT" And tree="yes"|natural="water"|String;skip|yes # - The lines below remove trees from roads. FilterFeatures|FTYPE="POINT" And tree="yes"|highway="motorway"|DISTANCE_FEATURE|25 FilterFeatures|FTYPE="POINT" And tree="yes"|highway="trunk"|DISTANCE_FEATURE|23 FilterFeatures|FTYPE="POINT" And tree="yes"|highway="primary"|DISTANCE_FEATURE|23 FilterFeatures|FTYPE="POINT" And tree="yes"|highway="secondary"|DISTANCE_FEATURE|20 FilterFeatures|FTYPE="POINT" And tree="yes"|highway="tertiary"|DISTANCE_FEATURE|20 FilterFeatures|FTYPE="POINT" And tree="yes"|highway="unclassified"|DISTANCE_FEATURE|18 FilterFeatures|FTYPE="POINT" And tree="yes"|highway="residential"|DISTANCE_FEATURE|18 # # REMOVE BUILDINGS NOT REQUIRED # - Removes buildings within your airport area. Assumes these structures are generated # separately by FSCloudport. AddAttributeIfInside|building="*"|aeroway="aerodrome"|String;skip|yes # - Remove buildings located in areas designated as gardens AddAttributeIfInside|building="*"|leisure="garden"|String;skip|yes # - Remove other structures that should not generate buildings AddAttribute|building="roof"|String;skip|yes AddAttribute|building="*" And historic="ship"|String;skip|yes AddAttribute|building="no"|String;skip|yes # This next line removes any plants or buildings identified in the AddAttribute lines above. UnloadFeatures|skip="yes" # # IDENTIFY POWER & COMMUNICATION TOWERS # - Identfy tower types AddAttribute|man_made="tower" And name="*AM*" |String;towertype|tAM AddAttribute|man_made="tower" And name="*FM*" And Not towertype="*"|String;towertype|tFm AddAttribute|man_made="tower" And name="*TV*" And Not towertype="*"|String;towertype|tTV AddAttribute|man_made="tower" And other_tags="*communication*" And Not towertype="*"|String;towertype|tCOM AddAttribute|man_made="mast" And other_tags="*communication*" And Not towertype="*"|String;towertype|tCOM AddAttribute|man_made="tower" And name="*" And Not towertype="*"|String;towertype|tOTH AddAttribute|man_made="mast" And Not towertype="*"|String;towertype|tMAST # - Separate towers so that all towers of the same type don't flash in time (excludes power towers) AddAttribute|towertype="tAM" And FRAND<=0.3|String;towertype|tAM1 AddAttribute|towertype="tAM" And FRAND>0.3 And FRAND<0.7|String;towertype|tAM2 AddAttribute|towertype="tAM" And FRAND>=0.7|String;towertype|tAM3 AddAttribute|towertype="tFM" And FRAND<=0.3|String;towertype|tFM1 AddAttribute|towertype="tFM" And FRAND>0.3 And FRAND<0.7|String;towertype|tFM2 AddAttribute|towertype="tFM" And FRAND>=0.7|String;towertype|tFM3 AddAttribute|towertype="tTV" And FRAND<0.5|String;towertype|tTV1 AddAttribute|towertype="tTV" And FRAND>=0.5|String;towertype|tTV2 AddAttribute|towertype="tOTH" And FRAND<=0.3|String;towertype|tOTH1 AddAttribute|towertype="tOTH" And FRAND>0.3 And FRAND<0.7|String;towertype|tOTH2 AddAttribute|towertype="tOTH" And FRAND>=0.7|String;towertype|tOTH3 AddAttribute|towertype="tCOM" And FRAND<=0.3|String;towertype|tCOM1 AddAttribute|towertype="tCOM" And FRAND>0.3 And FRAND<0.7|String;towertype|tCOM2 AddAttribute|towertype="tCOM" And FRAND>=0.7|String;towertype|tCOM3 AddAttribute|towertype="tMAST" And FRAND<=0.3|String;towertype|tMAST1 AddAttribute|towertype="tMAST" And FRAND>0.3 And FRAND<0.7|String;towertype|tMAST2 AddAttribute|towertype="tMAST" And FRAND>=0.7|String;towertype|tMAST3 # # IDENTIFY BUILDING USE # This section identifies building use by building location. This can then be used to # set buildings heights for specific types of buildings where there is no level/height data # recorded in OSM. These buildings are also identified to be excluded as being created as # houses, which would otherwise result in a unrealistic gable roof. # - Assign value for all buildings (overwritten when known building use is identified) AddAttribute|building="*"|String;excludeashouse|no # - Identify Buildings in Specialised Areas AddAttributeIfInside|building="*"|amenity="hospital"|String;building|hospital AddAttributeIfInside|building="*"|amenity="university"|String;building|university AddAttributeIfInside|building="*"|amenity="school"|String;building|school AddAttributeIfInside|building="*"|landuse="retail"|String;building|shop AddAttributeIfInside|building="*"|landuse="commercial"|String;building|shop AddAttributeIfInside|building="*"|amenity="pub"|String;building|pub AddAttributeIfInside|building="*"|amenity="nursing_home"|String;building|agedcare # - Prevent Specialised Area Buildings from being Designated as Houses (to prevent gable roof) AddAttribute|building="hospital"|String;excludeashouse|yes AddAttribute|building="university"|String;excludeashouse|yes AddAttribute|building="school"|String;excludeashouse|yes AddAttribute|building="shop"|String;excludeashouse|yes AddAttribute|building="pub"|String;excludeashouse|yes AddAttribute|building="agedcare"|String;excludeashouse|yes # - Identify Other Building Types from being Designated as Houses (to prevent gable roof) AddAttribute|building="retail"|String;excludeashouse|yes AddAttribute|building="commercial"|String;excludeashouse|yes AddAttribute|building="industrial"|String;excludeashouse|yes # # IDENTIFY STRUCTURE SHAPES (to flag special construction methods required) # This section categorises buildings into the following shapes:- # - circ_building - For all circular structures and those structures that are nearly circular. These # buildings use a special construction method that produces multi faceted buildings # that give the appearance of circular buildings in AeroFly. # - bld_rect - For all buildings that are roughly rectangular in shape. These buildings require no # special treatment. # - split_regular - For all buildings with multiple parallel sides. This buildings can be easily split # into multiple smaller buildings that better represent the overall building shape. This # allows scenProc to create L, T, H & other shaped structures. # - bld_convex - Convex buildings can be triangular shapes which are difficult to represent in # AeroFly as it can only display rectangular buildings. They also are not able to be # effectively split by scenProc. # - split_regular - Basically anything that doesn't fall into the above 4 categories. These buildings # are usually multi sided and often large shopping centres/malls fall in this category. # These buildings can also be split into multiple smaller buildings to better # represent an overall building shape. But result is less effective and works # best on larger buildings only. Smaller buildings in this category will be created # as a singular rectangular building. # - Assign value for all buildings (overwritten when known building shapes are identified) AddAttribute|FTYPE="POLYGON" And building="*"|String;structcat|split_irregular # - Circular (circular construction required) AddAttribute|building="*" And structcat="split_irregular" And FCONVEX=1 And FNUMVERT>=16 And FNUMPERPANG=0 And FAREARAT>0.77|String;structcat|circ_building # - Almost Rectangle (no special treatment) AddAttribute|FTYPE="POLYGON" And building="*" And structcat="split_irregular" And (FNUMVERT<6 or FAREARAT>0.95) And FAREARAT>0.8|String;structcat|bld_rect # - Convex (not suitable for special construction) AddAttribute|FTYPE="POLYGON" And building="*" And structcat="split_irregular" And FCONVEX=1|String;structcat|bld_convex # - Regular Shaped (to be split into smaller buildings to better represent overall building shape) AddAttribute|FTYPE="POLYGON" And building="*" And structcat="split_irregular" And FNUMVERT<10 And FNUMPERPANG>3 And FNUMNOTPAR<2|String;structcat|split_regular AddAttribute|FTYPE="POLYGON" And building="*" And structcat="split_irregular" And FNUMPERPANG>3 And FNUMNOTPAR<2|String;structcat|split_regular # - Buildings manually identified as circular AddAttribute|osm_way_id="521115344" or osm_way_id="521115347"|String;structcat|circ_building # TIP:- The process used above to identify circular buildings may miss buildings that are rounded # rather than circular. If you have a major building you want to appear as circular, # insert the osm id in the line above. Separate multiple buildings with an "or". # # IDENTIFY TYPES OF CIRCULAR STRUCTURES # - Identify Water Towers (Polygons) AddAttribute|FTYPE="POLYGON" And man_made="water_tower" And NOT barrier="*"|String;structcat|circ_water_tower # - Identify Chimneys (Polygons) AddAttribute|FTYPE="POLYGON" And man_made="chimney" |String;structcat|circ_chimney # - Identify Storage Structures (usually Petroleum and grain) AddAttribute|building="*" And man_made="storage_tank" |String;structcat|circ_storage AddAttribute|building="*" And man_made="silo" |String;structcat|circ_silo AddAttribute|building="tank" |String;structcat|circ_storage # - Identify Storage Structures (Water, but excluding water towers) AddAttribute|building="storage_tank" And other_tags="*water*" |String;structcat|circ_water AddAttribute|building="*" And man_made="reservoir_covered" |String;structcat|circ_water AddAttribute|building="cat*" And name="*water*" |String;structcat|circ_water # - Catogorise Circular Buildings AddAttribute|building="*" And structcat="circ_building" And other_tags="*underwater*"|String;skip|yes AddAttribute|building="house" And structcat="circ_building"|String;structcat|circ_house AddAttribute|building="*" And structcat="circ_building" And name="*elodrome*"|String;structcat|circ_velodrome AddAttributeIfInside|building="*" And structcat="circ_building" |leisure="park"|String;structcat|circ_other AddAttributeIfInside|building="*" And structcat="circ_building" |landuse="industrial"|String;structcat|circ_storage AddAttributeIfInside|building="*" And structcat="circ_building" |amenity="university"|String;structcat|circ_other # - Calculate Diameter of Storage Tanks and Circular Buildings (excluding water towers) AddAttribute|FTYPE="POLYGON" And structcat="circ*"|Integer;structdiam|0 AddAttribute|FTYPE="POLYGON" And structcat="circ*" And FWIDTH >=8 And FWIDTH <13|Integer;structdiam|10 AddAttribute|FTYPE="POLYGON" And structcat="circ*" And FWIDTH >=13 And FWIDTH <20|Integer;structdiam|15 AddAttribute|FTYPE="POLYGON" And structcat="circ*" And FWIDTH >=20 And FWIDTH <25|Integer;structdiam|25 AddAttribute|FTYPE="POLYGON" And structcat="circ*" And FWIDTH >=25 And FWIDTH <30|Integer;structdiam|25 AddAttribute|FTYPE="POLYGON" And structcat="circ*" And FWIDTH >=30 And FWIDTH <35|Integer;structdiam|35 AddAttribute|FTYPE="POLYGON" And structcat="circ*" And FWIDTH >=35 And FWIDTH <40|Integer;structdiam|35 AddAttribute|FTYPE="POLYGON" And structcat="circ*" And FWIDTH >=40 And FWIDTH <45|Integer;structdiam|45 AddAttribute|FTYPE="POLYGON" And structcat="circ*" And FWIDTH >=45 And FWIDTH <50|Integer;structdiam|45 AddAttribute|FTYPE="POLYGON" And structcat="circ*" And FWIDTH >=50 And FWIDTH <55|Integer;structdiam|55 AddAttribute|FTYPE="POLYGON" And structcat="circ*" And FWIDTH >=55 And FWIDTH <60|Integer;structdiam|55 AddAttribute|FTYPE="POLYGON" And structcat="circ*" And FWIDTH >=60 And FWIDTH <65|Integer;structdiam|65 AddAttribute|FTYPE="POLYGON" And structcat="circ*" And FWIDTH >=65 And FWIDTH <70|Integer;structdiam|65 AddAttribute|FTYPE="POLYGON" And structcat="circ*" And FWIDTH >=70 And FWIDTH <80|Integer;structdiam|80 AddAttribute|FTYPE="POLYGON" And structcat="circ*" And FWIDTH >=80 And FWIDTH <95|Integer;structdiam|80 AddAttribute|FTYPE="POLYGON" And structcat="circ*" And FWIDTH >=95 And FWIDTH <100|Integer;structdiam|100 AddAttribute|FTYPE="POLYGON" And structcat="circ*" And FWIDTH >=100 And FWIDTH <140|Integer;structdiam|100 AddAttribute|FTYPE="POLYGON" And structcat="circ*" And FWIDTH >=140 And FWIDTH <150|Integer;structdiam|150 AddAttribute|FTYPE="POLYGON" And structcat="circ*" And FWIDTH >=150 And FWIDTH <190|Integer;structdiam|150 AddAttribute|FTYPE="POLYGON" And structcat="circ*" And FWIDTH >=190 And FWIDTH <200|Integer;structdiam|200 AddAttribute|FTYPE="POLYGON" And structcat="circ*" And FWIDTH >=200 |Integer;structdiam|200 PlacePointAtCenterPolygon|building="*" And structcat="circ*" |String;structtype|roundpoint|0|INHERITPARENTATTR # The circular structures below have no width value recorded in OSM and must be assigned a default diameter # manually. # - Identify Water Towers (Points) AddAttribute|FTYPE="POINT" And man_made="water_tower" |String;structcat|circ_water_tower AddAttribute|FTYPE="POINT" And man_made="water_tower"|Integer;structdiam|10 # - Identify Chimneys (Points) AddAttribute|FTYPE="POINT" And man_made="chimney" |String;structcat|circ_chimney AddAttribute|FTYPE="POINT" And structcat="circ_chimney"|Integer;structdiam|10 # # IDENTIFY HOUSES, TERRACE HOUSES AND APARTMENTS # This section identifies buildings that require a gable roof. Houses, split houses, # terrace houses & apartments use a gable roof. While split apartments use a flat roof. # Buildings in a specialised area (ie hospital) are excluded from being assigned a gable # roof. This was found to give the most realistic building appearances in Aerofly. # Any building located in a residential area is assumed to be either a house, terrace # house or apartment. # - Assign value for all buildings (overwritten when known building type is identified) AddAttribute|building="*"|String;house|no # - Identify Houses AddAttribute|building="*" And FAREA <=400 And excludeashouse="no"|String;house|yes AddAttribute|building="house" And excludeashouse="no"|String;house|yes # - Identify Terrace Houses AddAttributeIfInside|building="*" And FAREA >400 And FAREARAT <0.45 And excludeashouse="no"|landuse="residential"|String;house|terrace AddAttributeIfInside|building="*" And FAREA >400 And FWIDTH <11 And excludeashouse="no"|landuse="residential"|String;house|terrace # - Identify houses for splitting AddAttribute|structcat="*" And house="yes" And FAREA <=400 And NOT structcat="circ*"|String;structcat|bld_house AddAttribute|structcat="split_regular" And house="yes" And FAREA >400|String;structcat|split_house AddAttribute|structcat="split_irregular" And house="yes" And FAREA <=1000|String;structcat|bld_house AddAttribute|structcat="split_irregular" And house="yes" And FAREA >1000|String;structcat|split_house # - Identify Terrace houses for splitting AddAttribute|structcat="bld*" And house="terrace"|String;structcat|bld_house AddAttribute|structcat="split_regular" And house="terrace" And FAREA >400|String;structcat|split_house AddAttribute|structcat="split_irregular" And house="terrace" And FAREA <=1000|String;structcat|bld_house AddAttribute|structcat="split_irregular" And house="terrace" And FAREA >1000|String;structcat|split_house # - Identify Residential Apartments AddAttribute|building="residential" And house ="no" And FAREA >400 And excludeashouse="no"|String;apartment|yes AddAttribute|building="apartment" And FAREA >400 And excludeashouse="no"|String;apartment|yes AddAttributeIfInside|building="*" And house ="no" And FAREA >400 And excludeashouse="no"|landuse="residential"|String;apartment|yes # - Identify Residential Apartments for Splitting AddAttribute|structcat="split_regular" And apartment="yes"|String;structcat|split_apartment AddAttribute|structcat="bld*" And apartment="yes" |String;structcat|bld_apartment AddAttribute|structcat="split_irregular" And apartment="yes" And FAREA <=1500|String;structcat|bld_apartment AddAttribute|structcat="split_irregular" And apartment="yes" And FAREA >1500|String;structcat|split_apartment # - Identify irregular buildings that are not to be split. AddAttribute|structcat="split_irregular" And FAREA <=2000|String;structcat|bld_rect # # IDENTIFY MISSING LEVEL/HEIGHT INFORMATION IN OSM SOURCE DATA # - Identify buildings with height/level recorded in OSM AddAttribute|building="*" And building_levels="*"|String;levelid|level AddAttribute|building="*" And NOT building_levels="*" And height="*"|String;levelid|height # - Indentify buildings with height/level NOT recorded in OSM. AddAttribute|building="*" And levelid="height" And height="*m*"|String;levelid|unknown AddAttribute|building="*" And NOT building_levels="*" And NOT height="*"|String;levelid|unknown AddAttribute|building="*" And building_levels="0"|String;levelid|unknown # ASSIGN LEVEL/HEIGHT TO STRUCTURES # You can assign values for level (height) here for those buildings that have missing # level/height information in OSM. These buildings would otherwise have only 1 level. # TIP:- Adjust the end of line value of "RND(#,#)" values to suit the heights in your area # for the building categories below. eg A value of RND(5,10) gives buildings a # random height between 5 and 10 levels. All values are in building levels, not # height in metres or feet. # - Set Height/Level for Buildings in Specialised Areas AddAttribute|building="hospital" And levelid="unknown"|String;building_levels|RND(5,10) AddAttribute|building="school" And levelid="unknown"|String;building_levels|RND(1,3) AddAttribute|building="university" And levelid="unknown"|String;building_levels|RND(2,4) AddAttribute|building="shop" And levelid="unknown"|String;building_levels|RND(2,4) AddAttribute|building="pub" And levelid="unknown"|String;building_levels|2 AddAttribute|building="agedcare" And levelid="unknown"|String;building_levels|2 AddAttribute|building="commercial" And levelid="unknown"|String;building_levels|RND(2,5) AddAttribute|building="office" And levelid="unknown"|String;building_levels|RND(10,15) AddAttribute|building="hotel" And levelid="unknown"|String;building_levels|RND(10,15) AddAttribute|building="tower" And levelid="unknown"|String;building_levels|RND(10,15) AddAttribute|building="retail" And levelid="unknown"|String;building_levels|RND(2,4) AddAttribute|building="industrial" And levelid="unknown"|String;building_levels|RND(2,3) # - Set height for small/large houses (where no OSM height/level is available) AddAttribute|building="*" And house="yes" And FAREA <200 And levelid="unknown"|String;building_levels|1 AddAttribute|building="*" And house="yes" And FAREA >=200 And levelid="unknown"|String;building_levels|RND(1,2) #AddAttribute|building="*" And structcat="bld_house" And FAREA <200 And levelid="unknown"|String;building_levels|1;2 #AddAttribute|building="*" And structcat="bld_house" And FAREA >=200 And levelid="unknown"|String;building_levels|RND(3,4) # TIP:- For European style buildings disable lines 1 & 2 above (by adding a "#" at line start) and enable lines # 3 & 4 (by removing the "#" at line start). Adjust these values to suit your needs. # - Set Height for Terrace Houses AddAttribute|building="*" And house="terrace" And FAREA >=400 And levelid="unknown"|String;building_levels|RND(2,3) # - Set Height for Small Residential Apartments <1000 sq m (where no OSM height/level is available) AddAttribute|building="*" And apartment="yes" And levelid="unknown" And FAREA >=400 And FAREA <1000|String;building_levels|RND(2,4) # - Set height for Larger Residential Apartments >=1000 sq m (where no OSM height/level is available) AddAttribute|building="*" And apartment="yes" And levelid="unknown" And FAREA >=1000|String;building_levels|RND(5,12) # - Set height for circular buildings (where no OSM height/level is available) AddAttribute|building="*" And structcat="circ_building*" And levelid="unknown"|String;building_levels|2 # - Override height for very large buildings such as shopping centres/malls, factories etc. AddAttribute|building="*" And structcat="split*" And levelid="unknown" And FAREA >=15000|String;building_levels|3 AddAttribute|building="*" And structcat="split*" And levelid="height" And building_levels="1" And FAREA >=15000|String;building_levels|3 AddAttribute|building="*" And structcat="split*" And levelid="height" And building_levels="2" And FAREA >=15000|String;building_levels|3 AddAttribute|building="*" And structcat="split*" And levelid="unknown" And FAREA >=15000|String;building_levels|3 # Tip:- Don't use a value less than 3 on the 4 lines above, as large buildings often span varying # terrain heights and therefore need a minimum height to be set. # - Set height for all other buildings not adjusted by the lines above. AddAttribute|building="yes" And levelid="unknown" And NOT building_levels="*"|String;building_levels|RND(1,2) # TIP:- Storage tanks and water towers use levels (heights) nominated in the lines below and # ignore any values recorded in OSM, as I found this data is usually missing or inaccurate. # The values used below are my idea of average level values for each type of structure. # Adjust level values that to suit your area. # - Set height Water Towers AddAttribute|structcat="circ_water_tower"|String;building_levels|15 # - Set height for small/large Water Storage Tanks (Excluding water towers) AddAttribute|structcat="circ_water" And structdiam<20|String;building_levels|3 AddAttribute|structcat="circ_water" And structdiam>=20|String;building_levels|4 # - Set height for small/large Storage Tanks (Excluding water storage) AddAttribute|structcat="circ_storage" And structdiam<20|String;building_levels|4 AddAttribute|structcat="circ_storage" And structdiam>=20|String;building_levels|5 # - Set height for small/large Silos AddAttribute|structcat="circ_silo" And structdiam<20|String;building_levels|12 AddAttribute|structcat="circ_silo" And structdiam>=20|String;building_levels|18 # - Set height for Chimneys AddAttribute|structcat="circ_chimney"|String;building_levels|15 # # SPLIT NON-RECTANGULAR BUILDING POLYGONS (excluding circular structures) # - This method replaces the existing non-rectangular buildings with a group of smaller rectangular # buildings. As AeroFly only allows rectangular buildings, using a cluster of smaller buildings # allows you to represent a single non-rectangular building. # - Split Large Houses ReplacePolygonByBuildingRectangles|structcat="split_house" And house="yes"|0.8;4;4|0.25;2.0;0.5|String;structcat|bld_split_house # - Split Terrace Houses ReplacePolygonByBuildingRectangles|structcat="split_house" And house="terrace"|0.8;4;4|0.25;2.0;0.5|String;structcat|bld_split_house # - Split Apartments ReplacePolygonByBuildingRectangles|structcat="split_apartment"|0.8;4;4|0.25;2.0;0.5|String;structcat|bld_split_apartment # - Split other buildings ReplacePolygonByBuildingRectangles|structcat="*egular" And FAREA <=4500|0.75;4;4|0.25;2.0;0.5|String;structcat|bld_split_small ReplacePolygonByBuildingRectangles|structcat="*egular" And FAREA>4500 And FAREA <=18000|0.8;4;4|0.25;2.0;0.5|String;structcat|bld_split_small ReplacePolygonByBuildingRectangles|structcat="*egular" And FAREA >18000|0.6;6;6|0.25;2.0;0.5|String;structcat|bld_split_large # # REMOVE PLANTS FROM BUILDINGS # - Identify any trees to be excluded which are located inside a building footprint #AddAttributeIfInside|FTYPE="POINT" And tree="yes"|building="*"|String;skip|yes # TIP:- The line above removes trees from inside any building footprint. However this can # significantly increase processing time by 30% to 300%. Remove the "#" at line start # if you wish to enable this feature. # - This next line removes anything identified in the lines above that needs to be excluded. UnloadFeatures|skip="yes" # # MERGEGRID joins cells spilt by SplitGrid. These 2 commands provide shorter running times for # denser areas when placed correctly. MergeGrid # # STEP 2 - SCENERY CREATION # # CREATE PLANTS CreateAF2Plant|landuse="forest" And FRAND < 0.5|8;40|0|broadleaf CreateAF2Plant|landuse="forest" And FRAND > 0.5|10;40|0|conifer CreateAF2Plant|natural="wood" And FRAND < 0.5|8;40|0|broadleaf CreateAF2Plant|natural="tree" And FRAND < 0.5|8;25|0|broadleaf CreateAF2Plant|natural="tree_row" And FRAND < 0.5|8;40|0|broadleaf CreateAF2Plant|natural="wetland" And FRAND < 0.5|5;6|0|shrub|T00 CreateAF2Plant|natural="scrub" And FRAND < 0.5|8;40|0|broadleaf CreateAF2Plant|leisure="park" And FRAND < 0.5|8;40|0|broadleaf CreateAF2Plant|leisure="nature_reserve" And FRAND < 0.5|8;40|0|conifer CreateAF2Plant|leisure="golf*" And FRAND < 0.5|8;25|0|broadleaf # # CREATE STREET LIGHTING # - Highway Lighting PlacePointsAlongLine|highway="motorway"|SINGLE|200;250|6;6|0|String;point|mlight|hdg CreateAF2Light|point="mlight"|1.0;0.6;0.0|100|0;0;1|20 # - Major City Road Lighting PlacePointsAlongLine|highway="primary"|SINGLE|300;350|0;0|0|String;point|plight|hdg CreateAF2Light|point="plight"|0.8;0.5;0.0|50|0;0;1|15 # - Secondary Road Lighting PlacePointsAlongLine|highway="secondary"|SINGLE|300;350|0;0|0|String;point|slight|hdg CreateAF2Light|point="slight"|0.7;0.6;0.5|30|0;0;1|10 # - Tertiary Road Lighting PlacePointsAlongLine|highway="tertiary"|SINGLE|300;350|0;0|0|String;point|tlight|hdg CreateAF2Light|point="tlight"|0.6;0.36;0.0|20|0;0;1|7 # - Residential Road Lighting PlacePointsAlongLine|highway="residential"|SINGLE|50;100|0;0|0|String;point|rlight|hdg CreateAF2Light|point="rlight"|0.4;0.24;0.0|10|0;0;1|5 # - General Street Lighting PlacePointsAlongLine|highway="living_street"|SINGLE|50;100|0;0|0|String;point|llight|hdg CreateAF2Light|point="llight"|0.4;0.24;0.0|10|0;0;1|5 # - Traffic signals CreateAF2Light|highway="traffic_signals" And FRAND<=0.5 |1.0;0.0;0.0|2|0;0;1|5 CreateAF2Light|highway="traffic_signals" And FRAND>0.5 |0.0;1.0;0.0|2|0;0;1|5 # # CREATE POLYGONS FOR CIRCULAR STRUCTURES # - Create Polygons for 6 Sided Structures (required to build small circular structures) PointToPolygon|structtype="roundpoint" And structdiam=10|10;3|30|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=10|10;3|60|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=10|10;3|90|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=10|10;3|120|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=10|10;3|150|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=10|10;3|180|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=15|15;4|30|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=15|15;4|60|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=15|15;4|90|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=15|15;4|120|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=15|15;4|150|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=15|15;4|180|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=25|25;7|30|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=25|25;7|60|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=25|25;7|90|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=25|25;7|120|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=25|25;7|150|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=25|25;7|180|String;structpurpose|roundpoly # - Create Polygons for 9 Sided Structures (required to build medium circular structures) PointToPolygon|structtype="roundpoint" And structdiam=35|35;6|20|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=35|35;6|40|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=35|35;6|60|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=35|35;6|80|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=35|35;6|100|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=35|35;6|120|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=35|35;6|140|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=35|35;6|160|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=35|35;6|180|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=45|45;8|20|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=45|45;8|40|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=45|45;8|60|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=45|45;8|80|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=45|45;8|100|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=45|45;8|120|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=45|45;8|140|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=45|45;8|160|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=45|45;8|180|String;structpurpose|roundpoly # - Create Polygons for 10 Sided Structures (required to build large circular structures) PointToPolygon|structtype="roundpoint" And structdiam=55|55;9|18|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=55|55;9|36|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=55|55;9|54|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=55|55;9|72|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=55|55;9|90|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=55|55;9|108|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=55|55;9|126|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=55|55;9|144|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=55|55;9|162|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=55|55;9|180|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=65|65;10|18|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=65|65;10|36|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=65|65;10|54|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=65|65;10|72|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=65|65;10|90|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=65|65;10|108|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=65|65;10|126|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=65|65;10|144|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=65|65;10|162|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=65|65;10|180|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=80|80;13|18|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=80|80;13|36|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=80|80;13|54|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=80|80;13|72|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=80|80;13|90|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=80|80;13|108|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=80|80;13|126|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=80|80;13|144|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=80|80;13|162|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=80|80;13|180|String;structpurpose|roundpoly # - Create Polygons for 12 Sided Structures (required to build very large circular structures) PointToPolygon|structtype="roundpoint" And structdiam=100|100;13|15|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=100|100;13|30|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=100|100;13|45|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=100|100;13|60|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=100|100;13|75|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=100|100;13|90|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=100|100;13|105|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=100|100;13|120|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=100|100;13|135|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=100|100;13|150|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=100|100;13|165|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=100|100;13|180|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=150|150;20|15|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=150|150;20|30|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=150|150;20|45|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=150|150;20|60|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=150|150;20|75|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=150|150;20|90|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=150|150;20|105|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=150|150;20|120|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=150|150;20|135|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=150|150;20|150|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=150|150;20|165|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=150|150;20|180|String;structpurpose|roundpoly # - Create Polygons for 15 Sided Structures (required to build the largest circular structures) PointToPolygon|structtype="roundpoint" And structdiam=200|200;22|12|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=200|200;22|24|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=200|200;22|36|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=200|200;22|48|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=200|200;22|60|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=200|200;22|72|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=200|200;22|84|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=200|200;22|96|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=200|200;22|108|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=200|200;22|120|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=200|200;22|132|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=200|200;22|144|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=200|200;22|156|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=200|200;22|168|String;structpurpose|roundpoly PointToPolygon|structtype="roundpoint" And structdiam=200|200;22|180|String;structpurpose|roundpoly # # CREATE CIRCULAR STRUCTURES # - Create Water Tower Structures CreateAF2Building|structpurpose="roundpoly" And structcat="circ_water_tower"|building_levels|NONE|0.3|1;1|flat|residential|0 # - Create Water Tower Beacons CreateAF2Light|structtype="roundpoint" And structcat="circ_water_tower" And FRAND<=0.5 |1.0;0.0;0.0|5000|2.0;0.0;50|50 CreateAF2Light|structtype="roundpoint" And structcat="circ_water_tower" And FRAND>0.5 |1.0;0.0;0.0|5000|2.2;0.0;50|50 # - Create Water Storage Tanks (excluding water towers) CreateAF2Building|structpurpose="roundpoly" And structcat="circ_water"|building_levels|NONE|0.3|1;1|flat|residential|0 # - Create Storage Tanks (excluding water storage) CreateAF2Building|structpurpose="roundpoly" And structcat="circ_storage"|building_levels|NONE|0.3|1;1|flat|residential|0 # - Create Silos CreateAF2Building|structpurpose="roundpoly" And structcat="circ_silo"|building_levels|NONE|0.3|1;1|flat|residential|0 # - Create Chimneys CreateAF2Building|structpurpose="roundpoly" And structcat="circ_chimney"|building_levels|NONE|0.3|1;1|flat|residential|0 # - Create Chimney Beacons CreateAF2Light|structtype="roundpoint" And structcat="circ_chimney" And FRAND<=0.5 |1.0;0.0;0.0|5000|2.0;0.0;50|55 CreateAF2Light|structtype="roundpoint" And structcat="circ_chimney" And FRAND>0.5 |1.0;0.0;0.0|5000|2.2;0.0;50|55 # - Create Round Buildings CreateAF2Building|structpurpose="roundpoly" And structcat="circ_building"|building_levels|height|0.3|1;1|flat|commercial|0 CreateAF2Building|structpurpose="roundpoly" And structcat="circ_velodrome"|NONE|NONE|1|4;4|flat|residential|0 CreateAF2Building|structpurpose="roundpoly" And structcat="circ_house"|NONE|NONE|1|2;2|flat|residential|0 CreateAF2Building|structpurpose="roundpoly" And structcat="circ_other"|NONE|NONE|1|2;2|flat|residential|0 # TIP:- As circular structures are made up of multiple rectangular buildings you will end up with # either a multi coloured side or a multi coloured roof. This is a limitation of the way # AeroFLy assigns building textures when it loads. # - Use "residential" in any of the the command lines above to have multi coloured side # with a single coloured top. (roof is 2 similar light greys that blend together well) # - Use "commercial" in the lines above to have a single coloured side and a multi coloured # top. (roof is a combination of dark grey and light grey) # - The best result is Aerofly was when water towers, storage tanks and silos used residential # textures while circular buildings and chimneys use commercial textures. Change to suit # your preference. # # CREATE BUILDINGS # - Create Houses & Terrace Houses CreateAF2Building|building="*" And structcat="bld_house"|building_levels|height|0.3|1;1|gable|residential|0 # - Create Split Houses (using multiple smaller rectangular buildings) CreateAF2Building|building="*" And structcat="bld_split_house"|building_levels|height|0.3|1;1|gable|residential|0 # - Create Residential Apartments CreateAF2Building|building="*" And structcat="bld_apartment"|building_levels|height|0.3|1;1|gable|residential|0 # - Create Split Residential Apartments (using multiple smaller rectangular buildings) CreateAF2Building|building="*" And structcat="bld_split_apartment"|building_levels|height|0.3|1;1|flat|residential|0 # - Create Other Buildings (using multiple smaller rectangular buildings) CreateAF2Building|building="*" And structcat="bld_split_small"|building_levels|height|0.3|1;1|flat|residential|0 CreateAF2Building|building="*" And structcat="bld_split_large"|building_levels|height|0.3|1;1|flat|residential|0 # TIP:- Aerofly applies textures colour randomly when it loads, based on the building texture # category you have used. Because of this, any group of smaller buildings that have been # created to represent the works best when residential textures are uses, as they have 2 similar # light grey roofs. Commercial textures have either a light grey or dark grey roof, which # is unsuitable for split buildings. # - Create Rectangular buildings CreateAF2Building|building="*" And structcat="bld_rect"|building_levels|height|0.3|1;1|flat|commercial|0 # - Create Convex buildings CreateAF2Building|building="*" And structcat="bld_convex"|building_levels|height|0.3|1;1|flat|commercial|0 # TIP:- Convex buildings are contain triangular shapes which are difficult to represent in AeroFly # as it can only display rectangular buildings. They also are not able to be effectively # split by scenProc. As a result they are often larger than the original building when viewed # in Aerofly, as they have to be converted to a rectangle. You may get a better result if # you disable these buildings by adding a "#" to the start of the command line above. # # CREATE POWER LINE TOWERS # - Create Towers PointToPolygon|power="tower"|1;1|0|String;towertype|powertower CreateAF2Building|towertype="powertower"|NONE|NONE|0.3|17;17|flat|commercial|0 # - Create concrete support bases PointToPolygon|power="tower"|5;5|0|String;towertype|powersupport CreateAF2Building|towertype="powertower"|NONE|NONE|1|1;1|flat|commercial|0 # # CREATE COMMUNICATION TOWERS # - Create Towers PointToPolygon|towertype="tAM*"|4;4|0|String;towertype|tAMpoly PointToPolygon|towertype="tFM*"|4;4|0|String;towertype|tFMpoly PointToPolygon|towertype="tTV*"|4;4|0|String;towertype|tTVpoly PointToPolygon|towertype="tOTH*"|4;4|0|String;towertype|tOTHpoly PointToPolygon|towertype="tMAST*"|2;2|0|String;towertype|tMASTpoly PointToPolygon|towertype="tCOM*"|1;1|0|String;towertype|tCOMpoly CreateAF2Building|towertype="tAMpoly"|NONE|NONE|1|165;165|flat|commercial|0 CreateAF2Building|towertype="tFMpoly"|NONE|NONE|1|99;99|flat|commercial|0 CreateAF2Building|towertype="tTVpoly"|NONE|NONE|1|132;132|flat|commercial|0 CreateAF2Building|towertype="tOTHpoly"|NONE|NONE|1|66;66|flat|commercial|0 CreateAF2Building|towertype="tCOMpoly"|NONE|NONE|1|20;20|flat|commercial|0 CreateAF2Building|towertype="tMASTpoly"|NONE|NONE|1|33;33|flat|commercial|0 # # CREATE RADIO/TV TOWER LIGHTING # - Towers have 2 static lights and 2 flashing lights for most tower types. Counting up # from the bottom, lights 1 & 3 are static and lights 2 and 4 flash in time. # - Create Stacked Beacon Lighting for AM towers CreateAF2Light|towertype="tAM1"|1.0;0.0;0.0|2500|0;0;1|125 CreateAF2Light|towertype="tAM1"|1.0;0.0;0.0|5000|3.2;0.0;30|250 CreateAF2Light|towertype="tAM1"|1.0;0.0;0.0|2500|0;0;1|375 CreateAF2Light|towertype="tAM1"|1.0;0.0;0.0|5000|3.2;0.0;30|500 CreateAF2Light|towertype="tAM2"|1.0;0.0;0.0|2500|0;0;1|125 CreateAF2Light|towertype="tAM2"|1.0;0.0;0.0|5000|3.1;0.0;30|250 CreateAF2Light|towertype="tAM2"|1.0;0.0;0.0|2500|0;0;1|375 CreateAF2Light|towertype="tAM2"|1.0;0.0;0.0|5000|3.1;0.0;30|500 CreateAF2Light|towertype="tAM3"|1.0;0.0;0.0|2500|0;0;1|125 CreateAF2Light|towertype="tAM3"|1.0;0.0;0.0|5000|3.0;0.0;30|250 CreateAF2Light|towertype="tAM3"|1.0;0.0;0.0|2500|0;0;1|375 CreateAF2Light|towertype="tAM3"|1.0;0.0;0.0|5000|3.0;0.0;30|500 # - Create Stacked Beacon Lighting for FM towers CreateAF2Light|towertype="tFM1"|1.0;0.0;0.0|2500|0;0;1|75 CreateAF2Light|towertype="tFM1"|1.0;0.0;0.0|5000|2.9;0.0;30|150 CreateAF2Light|towertype="tFM1"|1.0;0.0;0.0|2500|0;0;1|225 CreateAF2Light|towertype="tFM1"|1.0;0.0;0.0|5000|2.9;0.0;30|300 CreateAF2Light|towertype="tFM2"|1.0;0.0;0.0|2500|0;0;1|75 CreateAF2Light|towertype="tFM2"|1.0;0.0;0.0|5000|2.8;0.0;30|150 CreateAF2Light|towertype="tFM2"|1.0;0.0;0.0|2500|0;0;1|225 CreateAF2Light|towertype="tFM2"|1.0;0.0;0.0|5000|2.8;0.0;30|300 CreateAF2Light|towertype="tFM3"|1.0;0.0;0.0|2500|0;0;1|75 CreateAF2Light|towertype="tFM3"|1.0;0.0;0.0|5000|2.7;0.0;30|150 CreateAF2Light|towertype="tFM3"|1.0;0.0;0.0|2500|0;0;1|225 CreateAF2Light|towertype="tFM3"|1.0;0.0;0.0|5000|2.7;0.0;30|300 # - Create Stacked Beacon Lighting for TV towers CreateAF2Light|towertype="tTV1"|1.0;0.0;0.0|2500|0;0;1|100 CreateAF2Light|towertype="tTV1"|1.0;0.0;0.0|5000|2.7;0.0;30|200 CreateAF2Light|towertype="tTV1"|1.0;0.0;0.0|2500|0;0;1|300 CreateAF2Light|towertype="tTV1"|1.0;0.0;0.0|5000|2.7;0.0;30|400 CreateAF2Light|towertype="tTV2"|1.0;0.0;0.0|2500|0;0;1|100 CreateAF2Light|towertype="tTV2"|1.0;0.0;0.0|5000|2.6;0.0;30|200 CreateAF2Light|towertype="tTV2"|1.0;0.0;0.0|2500|0;0;1|300 CreateAF2Light|towertype="tTV2"|1.0;0.0;0.0|5000|2.6;0.0;30|400 # - Create Stacked Beacon Lighting for Other towers CreateAF2Light|towertype="tOTH1"|1.0;0.0;0.0|2500|0;0;1|50 CreateAF2Light|towertype="tOTH1"|1.0;0.0;0.0|5000|2.5;0.0;30|100 CreateAF2Light|towertype="tOTH1"|1.0;0.0;0.0|2500|0;0;1|150 CreateAF2Light|towertype="tOTH1"|1.0;0.0;0.0|5000|2.5;0.0;30|200 CreateAF2Light|towertype="tOTH2"|1.0;0.0;0.0|2500|0;0;1|50 CreateAF2Light|towertype="tOTH2"|1.0;0.0;0.0|5000|2.4;0.0;30|100 CreateAF2Light|towertype="tOTH2"|1.0;0.0;0.0|2500|0;0;1|150 CreateAF2Light|towertype="tOTH2"|1.0;0.0;0.0|5000|2.4;0.0;30|200 CreateAF2Light|towertype="tOTH3"|1.0;0.0;0.0|2500|0;0;1|50 CreateAF2Light|towertype="tOTH3"|1.0;0.0;0.0|5000|2.3;0.0;30|100 CreateAF2Light|towertype="tOTH3"|1.0;0.0;0.0|2500|0;0;1|150 CreateAF2Light|towertype="tOTH3"|1.0;0.0;0.0|5000|2.3;0.0;30|200 # - Create Beacon Lighting for Communication towers (no stacked lighting due to smaller size) CreateAF2Light|towertype="tCOM1" |1.0;0.0;0.0|5000|2.1;0.0;30|60 CreateAF2Light|towertype="tCOM2" |1.0;0.0;0.0|5000|2.0;0.0;30|60 CreateAF2Light|towertype="tCOM3" |1.0;0.0;0.0|5000|2.0;0.0;30|60 # - Create Stacked Beacon Lighting for Radio masts CreateAF2Light|towertype="tMAST1"|1.0;0.0;0.0|2000|0;0;1|50 CreateAF2Light|towertype="tMAST1"|1.0;0.0;0.0|5000|2.3;0.0;30|100 CreateAF2Light|towertype="tMAST2"|1.0;0.0;0.0|2000|0;0;1|50 CreateAF2Light|towertype="tMAST2"|1.0;0.0;0.0|5000|2.2;0.0;30|100 CreateAF2Light|towertype="tMAST3"|1.0;0.0;0.0|2000|0;0;1|50 CreateAF2Light|towertype="tMAST3"|1.0;0.0;0.0|5000|2.1;0.0;30|100 # #EXPORT DATA FOR USE WITH AEROFLY FS2 ExportTSC|D:\CrispyStuff\Aerofly\Cultivation|YBBN # TIP:- The line below is handy to create an information file for just one structure. This can # allow you to look at the various source data and script added values, so you can trouble # shoot an object that is not appearing as expected. Just remove the "#" and replace both # values with the way reference the item from the OSM webpage. It creates an output file # named "details.txt". Place it at different points in the script to trace values as they # change throughout the file. If you use this line more than once don't forget to change # the file name on each line. #ExportOGR|osm_way_id="451992729" or osm_id="451992729"|KML|D:\CrispyStuff\Aerofly\Cultivation\details.txt|layerName|ADDSPECIALATTR