#!/usr/bin/env python import string import sys import sys sys.path.append('../old') import distance target = (-115.19611, 36.212500) max_dist = 200 def seconds_to_degrees(seconds): if seconds[-1] in ['W', 'S']: return(float(seconds[:-1]) / -3600) else: return(float(seconds[:-1]) / 3600) null_trans = string.maketrans('', '') results = [] airports_file = open('../raw_data/FAA_ATA-100/APT.del', 'r') for line in airports_file.readlines(): fields = string.split(line, '|') entry_type = fields[0] if entry_type == 'APT': position = (seconds_to_degrees(fields[26]), seconds_to_degrees(fields[24])) dist = round(distance.distance(position, target)) if dist > max_dist: continue site_number = fields[1] landing_facility = fields[2] identifier = fields[3] state = fields[8] county = fields[9] state_abbrev = fields[10] city = fields[11] usage = fields[13] county = string.translate(county, null_trans, ". '") #if not usage == 'PU': # continue if not landing_facility == 'AIRPORT': continue #print identifier elif dist > max_dist: continue elif entry_type == 'RWY': #RWY|50877.29*C|AK|15W/33W|5000|600|WATER||||15W||||||||||||||||||||||||||||||||||A(V)|||||33W|||Y|||||||||||||||||||||||||||||||A(V)|||||||||||||||||||||||||||||||||||| if not fields[1] == site_number: raise Exception, 'unmatched runway' #print line runway_ident = fields[3] runway_length = int(fields[4] or '0') runway_width = fields[5] runway_surface_type = fields[6] runway_surface_treatment = fields[7] runway_surface_pcn = fields[8] runway_lights = fields[9] runway_end_ident = fields[10] runway_alignment = fields[11] runway_ils = fields[12] runway_dthreshold = int(fields[29] or '0') if runway_length > 1000 and runway_length <= 1500: runway_ldistance = runway_length - runway_dthreshold results.append((identifier, runway_ident, runway_length, runway_width, runway_surface_type, dist, runway_dthreshold, runway_ldistance, city, state)) continue # Do reciprocol end. runway_end_ident = fields[49] runway_ils = fields[51] runway_dthreshold = int(fields[68] or '0') if runway_length > 1000 and runway_length <= 1500: runway_ldistance = runway_length - runway_dthreshold results.append((identifier, runway_end_ident, runway_length, runway_width, runway_surface_type, dist, runway_dthreshold, runway_ldistance, city, state)) print len(results) def sortby_runway_length(a, b): return(cmp(a[2], b[2])) def sortby_runway_ldistance(a, b): return(cmp(a[7], b[7])) def sortby_dist(a, b): return(cmp(a[5], b[5])) def sortby_runway_dthreshold(a, b): #return(cmp(a[6], b[6])) return(cmp(b[6], a[6])) #results.sort(sortby_runway_length) results.sort(sortby_dist) #results.sort(sortby_runway_ldistance) #results.sort(sortby_runway_dthreshold) for result in results: print string.join(map(str, result), ', ')