Last active
January 21, 2020 08:55
-
-
Save espinielli/b1ccc1bf11c6e354f0d7986ffbe0dcb7 to your computer and use it in GitHub Desktop.
R: ggplot2 map of some European airports
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
.Rproj.user | |
.Rhistory | |
.RData | |
.Ruserdata |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
icao | ir390_date | |
---|---|---|
LSZH | 25-11-2014 18:46 | |
LSGG | 16-12-2014 15:17 | |
EGBB | 20-01-2015 14:53 | |
EGCC | 26-01-2015 10:21 | |
GCLP | 28-01-2015 10:03 | |
GCTS | 28-01-2015 10:45 | |
LEMD | 28-01-2015 11:25 | |
LEBB | 28-01-2015 12:37 | |
LEBL | 28-01-2015 13:05 | |
LEIB | 28-01-2015 13:34 | |
LEMG | 28-01-2015 14:03 | |
GCFV | 02-02-2015 11:12 | |
GCXO | 12-02-2015 12:06 | |
LIME | 18-02-2015 14:28 | |
EIDW | 18-02-2015 15:21 | |
EGLL | 18-02-2015 15:59 | |
EKCH | 19-02-2015 12:18 | |
LEAL | 24-02-2015 16:02 | |
LIPZ | 02-03-2015 09:50 | |
EGKK | 08-03-2015 15:11 | |
LOWW | 19-03-2015 10:51 | |
LFPG | 19-03-2015 13:36 | |
LEVC | 31-03-2015 10:49 | |
EPWA | 31-03-2015 12:49 | |
EDDP | 31-03-2015 13:39 | |
LBSF | 31-03-2015 15:39 | |
LJLJ | 01-04-2015 13:51 | |
LIRF | 15-04-2015 10:33 | |
EDDL | 24-04-2015 14:01 | |
EDDF | 06-05-2015 15:06 | |
GCRR | 08-05-2015 18:42 | |
EGSS | 21-05-2015 10:51 | |
EDDK | 26-06-2015 09:19 | |
EDDW | 27-08-2015 12:41 | |
EGGD | 27-08-2015 18:06 | |
LFPO | 01-09-2015 15:49 | |
LGAV | 01-09-2015 16:38 | |
LHBP | 02-09-2015 10:57 | |
LICC | 16-10-2015 18:59 | |
EBCI | 21-10-2015 13:59 | |
EETN | 04-11-2015 17:52 | |
LIMC | 18-11-2015 14:41 | |
EDDN | 01-12-2015 10:11 | |
EDDE | 02-12-2015 16:27 | |
EVRA | 08-12-2015 09:37 | |
EDDV | 14-12-2015 10:32 | |
EBBR | 16-12-2015 11:09 | |
EDDM | 17-12-2015 10:20 | |
ESSA | 11-01-2016 09:13 | |
LFSB | 18-01-2016 12:25 | |
LIPE | 19-01-2016 20:09 | |
EICK | 27-01-2016 11:21 | |
EDDH | 12-02-2016 13:28 | |
LIML | 23-02-2016 16:33 | |
EDDR | 09-03-2016 13:35 | |
EGGW | 07-06-2016 12:37 | |
EFHK | 17-06-2016 06:21 | |
ENGM | 19-07-2016 02:45 | |
LPPR | 22-12-2016 10:38 | |
EDDG | 22-12-2016 10:58 | |
ELLX | 09-01-2017 18:43 | |
LIRN | 11-01-2017 19:42 | |
LEPA | 11-01-2017 21:32 | |
EDDB | 11-01-2017 22:41 | |
EDDT | 11-01-2017 22:52 | |
LKPR | 12-01-2017 00:10 | |
EGPH | 12-01-2017 03:41 | |
ESGG | 12-01-2017 04:49 | |
LFLL | 12-01-2017 14:13 | |
LPPT | 13-01-2017 02:05 | |
EDDS | 20-02-2017 08:55 | |
LEZL | 05-04-2017 13:04 | |
LMML | 05-04-2017 13:44 | |
EHAM | 29-08-2017 11:02 | |
LIMF | 09-11-2017 17:33 | |
EGNT | 21-01-2018 01:45 | |
LDZA | 15-02-2018 11:34 | |
EGPD | 20-02-2018 16:21 | |
EGPF | 20-02-2018 22:41 | |
LIRA | 18-05-2018 21:34 | |
LROP | 29-08-2018 11:33 | |
LZIB | 28-09-2018 12:54 | |
EDDC | 03-04-2019 21:09 | |
LPFR | 03-04-2019 23:14 | |
EGLC | 25-04-2019 13:29 | |
LFML | 07-06-2019 12:09 | |
LFBO | 26-06-2019 12:35 | |
LFMN | 06-09-2019 16:08 | |
EYVI | 22-09-2019 06:08 | |
LCLK | NA |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
apt_icao | longitude | latitude | is_eapn | is_imped | |
---|---|---|---|---|---|
EBBR | 4.48444444444444 | 50.901388888888874 | TRUE | TRUE | |
EBCI | 4.45277777777778 | 50.46 | FALSE | TRUE | |
EDDE | 10.95805555555555 | 50.979722222222215 | FALSE | TRUE | |
EDDH | 9.98833333333333 | 53.63027777777777 | TRUE | TRUE | |
EDDK | 7.14277777777778 | 50.86583333333333 | FALSE | TRUE | |
EDDP | 12.23638888888888 | 51.423888888888875 | FALSE | TRUE | |
EDDR | 7.10944444444444 | 49.21444444444444 | FALSE | TRUE | |
EDDS | 9.22194444444444 | 48.69 | TRUE | TRUE | |
EDDV | 9.683611111111109 | 52.46027777777777 | FALSE | TRUE | |
EFHK | 24.963333333333328 | 60.31722222222221 | FALSE | TRUE | |
EGBB | -1.74805555555556 | 52.453888888888876 | FALSE | TRUE | |
EGGW | -0.3683333333333333 | 51.87472222222222 | TRUE | TRUE | |
EGLC | 0.0552777777777778 | 51.50527777777777 | FALSE | TRUE | |
EGLL | -0.4613888888888888 | 51.4775 | TRUE | TRUE | |
EGNT | -1.68972222222222 | 55.03805555555555 | FALSE | TRUE | |
EGPD | -2.1980555555555603 | 57.2025 | FALSE | TRUE | |
EHAM | 4.764166666666669 | 52.30805555555555 | TRUE | TRUE | |
EICK | -8.49111111111111 | 51.84138888888887 | FALSE | TRUE | |
EIDW | -6.2700000000000005 | 53.42138888888888 | TRUE | TRUE | |
EPWA | 20.96722222222222 | 52.16583333333333 | FALSE | TRUE | |
ESGG | 12.291111111111109 | 57.660000000000004 | TRUE | TRUE | |
ESSA | 17.918611111111108 | 59.65194444444444 | TRUE | TRUE | |
GCFV | -13.86388888888888 | 28.45277777777777 | FALSE | TRUE | |
GCRR | -13.605277777777768 | 28.945555555555547 | FALSE | TRUE | |
GCXO | -16.34166666666666 | 28.48277777777777 | FALSE | TRUE | |
LBSF | 23.408333333333328 | 42.695 | FALSE | TRUE | |
LDZA | 16.06888888888888 | 45.74305555555555 | FALSE | TRUE | |
LEIB | 1.37305555555556 | 38.87277777777777 | FALSE | TRUE | |
LEMG | -4.499166666666669 | 36.675000000000004 | FALSE | TRUE | |
LEPA | 2.73888888888889 | 39.551666666666655 | TRUE | TRUE | |
LFPG | 2.5477777777777804 | 49.009722222222216 | TRUE | TRUE | |
LFPO | 2.37944444444444 | 48.72333333333333 | TRUE | TRUE | |
LGAV | 23.944444444444436 | 37.93666666666665 | TRUE | TRUE | |
LHBP | 19.26194444444444 | 47.43944444444443 | TRUE | TRUE | |
LICC | 15.06388888888888 | 37.466666666666654 | FALSE | TRUE | |
LIMC | 8.723055555555561 | 45.63 | TRUE | TRUE | |
LIMF | 7.64944444444444 | 45.2025 | TRUE | TRUE | |
LIRF | 12.23888888888888 | 41.80027777777777 | TRUE | TRUE | |
LJLJ | 14.45611111111111 | 46.22444444444444 | FALSE | TRUE | |
LKPR | 14.26 | 50.10083333333333 | TRUE | TRUE | |
LMML | 14.477500000000001 | 35.8575 | FALSE | TRUE | |
LOWW | 16.569722222222218 | 48.11027777777777 | TRUE | TRUE | |
LPPR | -8.67805555555556 | 41.23555555555555 | FALSE | TRUE | |
LSGG | 6.10944444444444 | 46.23833333333333 | TRUE | TRUE | |
LSZH | 8.54805555555556 | 47.458055555555546 | TRUE | TRUE | |
LZIB | 17.21277777777777 | 48.17 | FALSE | TRUE | |
LFLL | 5.08111111111111 | 45.72555555555555 | TRUE | TRUE | |
LIPZ | 12.35194444444444 | 45.50527777777777 | FALSE | TRUE | |
EDDL | 6.75722222222222 | 51.280833333333334 | TRUE | TRUE | |
EDDT | 13.28777777777777 | 52.55972222222222 | TRUE | TRUE | |
EKCH | 12.656111111111109 | 55.61805555555555 | TRUE | TRUE | |
LEBL | 2.0783333333333296 | 41.296944444444435 | TRUE | TRUE | |
LEMD | -3.5608333333333295 | 40.472222222222214 | TRUE | TRUE | |
LFML | 5.215 | 43.43666666666665 | TRUE | TRUE | |
LFSB | 7.5291666666666694 | 47.59 | TRUE | TRUE | |
LIRN | 14.29083333333333 | 40.88444444444443 | TRUE | TRUE | |
EGCC | -2.275 | 53.353888888888875 | TRUE | TRUE | |
LIRA | 12.597222222222218 | 41.79944444444444 | TRUE | TRUE | |
EDDB | 13.500555555555549 | 52.362222222222215 | TRUE | TRUE | |
EVRA | 23.97111111111111 | 56.92361111111111 | FALSE | TRUE | |
EGGD | -2.7191666666666703 | 51.38277777777777 | FALSE | TRUE | |
EGSS | 0.23500000000000001 | 51.885000000000005 | TRUE | TRUE | |
EDDF | 8.57055555555556 | 50.03333333333333 | TRUE | TRUE | |
GCTS | -16.5725 | 28.044444444444437 | FALSE | TRUE | |
LIPE | 11.29694444444444 | 44.530833333333334 | TRUE | TRUE | |
LROP | 26.085 | 44.57111111111111 | FALSE | TRUE | |
ENGM | 11.08388888888888 | 60.20277777777777 | TRUE | TRUE | |
EGPF | -4.433055555555559 | 55.87194444444444 | FALSE | TRUE | |
LPFR | -7.96583333333333 | 37.014444444444436 | TRUE | TRUE | |
EDDN | 11.078055555555549 | 49.49861111111111 | FALSE | TRUE | |
GCLP | -15.38666666666666 | 27.931944444444436 | FALSE | TRUE | |
LEBB | -2.9105555555555602 | 43.30111111111111 | FALSE | TRUE | |
LEZL | -5.898888888888889 | 37.41805555555555 | FALSE | TRUE | |
ELLX | 6.20444444444444 | 49.62333333333333 | FALSE | TRUE | |
LCLK | 33.63027777777777 | 34.87888888888887 | FALSE | FALSE | |
LIME | 9.70027777777778 | 45.66888888888887 | FALSE | TRUE | |
EDDC | 13.768055555555549 | 51.13444444444443 | FALSE | TRUE | |
EDDM | 11.78611111111111 | 48.353888888888875 | TRUE | TRUE | |
EETN | 24.8325 | 59.41333333333333 | FALSE | TRUE | |
EYVI | 25.28777777777777 | 54.63694444444444 | FALSE | TRUE | |
LPPT | -9.13416666666667 | 38.77416666666666 | TRUE | TRUE | |
EGPH | -3.3725 | 55.95 | TRUE | TRUE | |
EDDW | 8.78666666666667 | 53.0475 | FALSE | TRUE | |
LEAL | -0.5580555555555555 | 38.28222222222222 | FALSE | TRUE | |
EGKK | -0.1902777777777777 | 51.14805555555555 | TRUE | TRUE | |
LEVC | -0.48166666666666663 | 39.48944444444444 | FALSE | TRUE | |
LFMN | 7.215000000000001 | 43.66527777777777 | TRUE | TRUE | |
LIML | 9.27833333333333 | 45.44944444444444 | TRUE | TRUE | |
EDDG | 7.68472222222222 | 52.134722222222216 | FALSE | TRUE | |
LFBO | 1.36777777777778 | 43.635000000000005 | FALSE | TRUE |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# | |
# export to CSV the list of APDF airports | |
# | |
library(ROracle) | |
library(dplyr) | |
library(readr) | |
export_apdf_airports <- function(on_date = Sys.Date()) { | |
on_date <- format(on_date) | |
usr <- Sys.getenv("PRU_DEV_USR") | |
pwd <- Sys.getenv("PRU_DEV_PWD") | |
dbn <- Sys.getenv("PRU_DEV_DBNAME") | |
withr::local_envvar(c("TZ" = "UTC", | |
"ORA_SDTZ" = "UTC")) | |
con <- withr::local_db_connection( | |
ROracle::dbConnect( | |
DBI::dbDriver("Oracle"), | |
usr, pwd, | |
dbname = dbn, | |
timezone = "UTC") | |
) | |
query <- " | |
SELECT | |
apt.APT_ICAO, pru.LON AS LONGITUDE, pru.LAT AS LATITUDE, | |
apt.APT_IN_EAPN AS IS_EAPN, | |
DECODE(apt.APT_ICAO,'LCLK','N','Y') IS_IMPED | |
FROM | |
PRU_AIRPORT.STAT_AIRPORT_INFO apt, PRU_AIRPORT pru | |
WHERE | |
apt.APT_IS_POSTING = 'Y' | |
AND apt.APT_ICAO = pru.ICAO_CODE | |
AND (pru.WEF <= TO_DATE(?ON_DATE, 'YYYY-MM-DD') | |
AND TO_DATE(?ON_DATE, 'YYYY-MM-DD') < pru.TILL) | |
" | |
query <- DBI::sqlInterpolate(con, query, ON_DATE = on_date) | |
ROracle::dbSendQuery(con, query) %>% | |
ROracle::fetch(n = -1) %>% | |
janitor::clean_names() | |
} | |
export_apdf_airports() %>% | |
mutate_at(.vars = vars(matches('^is_')), .funs = ~ . == 'Y') %>% | |
write_csv("airport.csv") | |
# IR390 first processed date | |
# NO SQL but directly from Thierry | |
tibble::tribble( | |
~ICAO, ~IR390_DATE, | |
"LSZH", "25-11-2014 18:46", | |
"LSGG", "16-12-2014 15:17", | |
"EGBB", "20-01-2015 14:53", | |
"EGCC", "26-01-2015 10:21", | |
"GCLP", "28-01-2015 10:03", | |
"GCTS", "28-01-2015 10:45", | |
"LEMD", "28-01-2015 11:25", | |
"LEBB", "28-01-2015 12:37", | |
"LEBL", "28-01-2015 13:05", | |
"LEIB", "28-01-2015 13:34", | |
"LEMG", "28-01-2015 14:03", | |
"GCFV", "02-02-2015 11:12", | |
"GCXO", "12-02-2015 12:06", | |
"LIME", "18-02-2015 14:28", | |
"EIDW", "18-02-2015 15:21", | |
"EGLL", "18-02-2015 15:59", | |
"EKCH", "19-02-2015 12:18", | |
"LEAL", "24-02-2015 16:02", | |
"LIPZ", "02-03-2015 09:50", | |
"EGKK", "08-03-2015 15:11", | |
"LOWW", "19-03-2015 10:51", | |
"LFPG", "19-03-2015 13:36", | |
"LEVC", "31-03-2015 10:49", | |
"EPWA", "31-03-2015 12:49", | |
"EDDP", "31-03-2015 13:39", | |
"LBSF", "31-03-2015 15:39", | |
"LJLJ", "01-04-2015 13:51", | |
"LIRF", "15-04-2015 10:33", | |
"EDDL", "24-04-2015 14:01", | |
"EDDF", "06-05-2015 15:06", | |
"GCRR", "08-05-2015 18:42", | |
"EGSS", "21-05-2015 10:51", | |
"EDDK", "26-06-2015 09:19", | |
"EDDW", "27-08-2015 12:41", | |
"EGGD", "27-08-2015 18:06", | |
"LFPO", "01-09-2015 15:49", | |
"LGAV", "01-09-2015 16:38", | |
"LHBP", "02-09-2015 10:57", | |
"LICC", "16-10-2015 18:59", | |
"EBCI", "21-10-2015 13:59", | |
"EETN", "04-11-2015 17:52", | |
"LIMC", "18-11-2015 14:41", | |
"EDDN", "01-12-2015 10:11", | |
"EDDE", "02-12-2015 16:27", | |
"EVRA", "08-12-2015 09:37", | |
"EDDV", "14-12-2015 10:32", | |
"EBBR", "16-12-2015 11:09", | |
"EDDM", "17-12-2015 10:20", | |
"ESSA", "11-01-2016 09:13", | |
"LFSB", "18-01-2016 12:25", | |
"LIPE", "19-01-2016 20:09", | |
"EICK", "27-01-2016 11:21", | |
"EDDH", "12-02-2016 13:28", | |
"LIML", "23-02-2016 16:33", | |
"EDDR", "09-03-2016 13:35", | |
"EGGW", "07-06-2016 12:37", | |
"EFHK", "17-06-2016 06:21", | |
"ENGM", "19-07-2016 02:45", | |
"LPPR", "22-12-2016 10:38", | |
"EDDG", "22-12-2016 10:58", | |
"ELLX", "09-01-2017 18:43", | |
"LIRN", "11-01-2017 19:42", | |
"LEPA", "11-01-2017 21:32", | |
"EDDB", "11-01-2017 22:41", | |
"EDDT", "11-01-2017 22:52", | |
"LKPR", "12-01-2017 00:10", | |
"EGPH", "12-01-2017 03:41", | |
"ESGG", "12-01-2017 04:49", | |
"LFLL", "12-01-2017 14:13", | |
"LPPT", "13-01-2017 02:05", | |
"EDDS", "20-02-2017 08:55", | |
"LEZL", "05-04-2017 13:04", | |
"LMML", "05-04-2017 13:44", | |
"EHAM", "29-08-2017 11:02", | |
"LIMF", "09-11-2017 17:33", | |
"EGNT", "21-01-2018 01:45", | |
"LDZA", "15-02-2018 11:34", | |
"EGPD", "20-02-2018 16:21", | |
"EGPF", "20-02-2018 22:41", | |
"LIRA", "18-05-2018 21:34", | |
"LROP", "29-08-2018 11:33", | |
"LZIB", "28-09-2018 12:54", | |
"EDDC", "03-04-2019 21:09", | |
"LPFR", "03-04-2019 23:14", | |
"EGLC", "25-04-2019 13:29", | |
"LFML", "07-06-2019 12:09", | |
"LFBO", "26-06-2019 12:35", | |
"LFMN", "06-09-2019 16:08", | |
"EYVI", "22-09-2019 06:08", | |
"LCLK", NA | |
) %>% | |
janitor::clean_names() %>% | |
write_csv("airport-ir390-date.csv") | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Version: 1.0 | |
RestoreWorkspace: Default | |
SaveWorkspace: Default | |
AlwaysSaveHistory: Default | |
EnableCodeIndexing: Yes | |
UseSpacesForTab: Yes | |
NumSpacesForTab: 2 | |
Encoding: UTF-8 | |
RnwWeave: Sweave | |
LaTeX: pdfLaTeX | |
AutoAppendNewline: Yes | |
StripTrailingWhitespace: Yes |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
library(readr) | |
library(sf) | |
library(units) | |
library(rnaturalearth) | |
library(ggplot2) | |
library(ggrepel) | |
library(ggsflabel) | |
apts <- read_csv("airport.csv") %>% | |
# define groups ... | |
mutate(group = case_when( | |
!is_eapn & !is_imped ~ "ONGOING", | |
!is_eapn & is_imped ~ "NOT_EAPN", | |
is_eapn & !is_imped ~ "NOTHING", | |
is_eapn & is_imped ~ "EAPN" | |
)) %>% | |
# ... and get rid of the meaningless one | |
filter(group != "NOTHING") %>% | |
# make it a geographic object but keep the other the coords anyway | |
sf::st_as_sf( | |
coords = c("longitude","latitude"), | |
crs = 4326, | |
remove = FALSE, | |
agr = "identity") %>% | |
# use LAEA projection | |
st_transform(crs = 3035) | |
# global bounding box | |
bbox_3035 <- apts %>% | |
# put all buffers together... | |
sf::st_union() %>% | |
# ...take the polygon enclosing all of them ... | |
sf::st_convex_hull() %>% | |
# st_transform(3035) %>% | |
# ...with a 50 NM buffer around ... | |
st_buffer(set_units(150, km)) %>% | |
sf::st_bbox() %>% | |
# TODO: use 'round away from zero' eventually | |
# https://shrektan.com/post/2018/04/25/human-round-round-to-nearest-ties-away-from-zero/ | |
# round() %>% | |
as.numeric() %>% | |
`names<-`(c("left", "bottom", "right", "top")) | |
# just plot them (for fun) | |
world <- rnaturalearth::ne_countries(scale = "medium", returnclass = "sf") %>% | |
st_transform(crs = 3035) | |
ggplot2::ggplot(data = world) + | |
ggplot2::geom_sf(colour = "gray70", size = 0.5 / .pt) + | |
ggplot2::geom_sf(data = apts, mapping = aes(fill = group), shape = 21, size = 2.5) + | |
scale_fill_manual( | |
breaks = c( "EAPN", "NOT_EAPN", "ONGOING"), | |
values = c("green", "blue", "red")) + | |
ggplot2::coord_sf(xlim = c(bbox_3035["left"], bbox_3035["right"]), | |
ylim = c(bbox_3035["bottom"], bbox_3035["top"]), | |
expand = TRUE) + | |
ggplot2::theme_minimal() + | |
ggplot2::theme(panel.background = ggplot2::element_rect(fill = "aliceblue"), | |
legend.position = "none") | |
ggsave("airport-apdf.png", width = 12) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment