The Satellite Database is a listing of active satellites currently in orbit around the Earth. The database includes basic information about the satellites and their orbits.
options(width=100)
knitr::opts_chunk$set(out.width='1000px',dpi=200,message=FALSE,warning=FALSE)
#load packages and csv file
library(ggplot2)
library(dplyr)
library(gridExtra)
library(RColorBrewer)
library(Amelia)
library(ggmap)
#load and check the csv file
df<-read.csv('database.csv',sep=',')
#missmap(df, main="Missings Map", col=c("yellow", "black"),y.cex = 0.4, x.cex = 0.6, legend=FALSE)
Most of the missing entries of this dataset are for Longitude.of.Geosynchronous.Orbit..Degrees
column (18)
## Official.Name.of.Satellite Country.Organization.of.UN.Registry
## 16 USA 246 NR
## 184 ChinaSat 2C NR
## 443 Gaofen 4 NR
## 447 Cosmos 2513 NR
## 567 USA 253 USA
## 568 USA 254 USA
## 797 Long Excursion 1 NR
## 801 Luch 5A Russia
## 852 MUOS-5 NR
## 954 ORBCOMM FM-21 USA
## 1019 QueztSat-1 United Kingdom
## 1025 Raduga 1-M3 Russia
## 1040 Resurs-P3 NR
## 1090 USA 241 USA
## 1103 SCD-2 NR
## 1105 S-Cube NR
## 1110 USA 236 USA
## 1246 TDRS-12 USA
## Operator.Owner
## 16 US Air Force
## 184 China Satellite Communication Corp. (China Satcom)
## 443 China Aerospace Science and Technology Corporation (CASTC)
## 447 Ministry of Defense
## 567 Air Force Satellite Control Network
## 568 Air Force Satellite Control Network
## 797
## 801 Russian Federal Space Agency
## 852 DoD/US Navy
## 954 ORBCOMM Inc.
## 1019 SES World Skies (SES [Société Européenne des Satellites (SES)]) -- total capacity leased to subsidiary of EchoStar Corp.
## 1025 Ministry of Defense
## 1040 Russian Federal Space Agency (Roskosmos)
## 1090 US Air Force
## 1103 Instituto Nacional de Pesquisas Espaciais (INPE)
## 1105 Planetary Exploration Research Center (PERC) of the Chiba Institute of Technology, Tohoku University
## 1110 National Reconnaissance Office (NRO)/US Air Force
## 1246 National Aeronautics and Space Administration (NASA)
## Country.of.Operator.Owner Users Purpose
## 16 USA Military Communications
## 184 China Commercial/Government Communications
## 443 China Government Earth Observation
## 447 Russia Military Communications
## 567 USA Military Space Observation
## 568 USA Military Space Observation
## 797 China
## 801 Russia Government Communications
## 852 USA Military Communications
## 954 USA Commercial Communications
## 1019 USA Commercial Communications
## 1025 Russia Military Communications
## 1040 Russia Government/Commercial Earth Observation
## 1090 USA Military Earth Observation
## 1103 Brazil Government Earth Observation
## 1105 Japan Civil Technology Development
## 1110 USA Military Communications
## 1246 USA Government Communications
## Detailed.Purpose Class.of.Orbit Type.of.Orbit
## 16 GEO
## 184 GEO
## 443 Optical Imaging GEO
## 447 GEO
## 567 Imaging GEO
## 568 Imaging GEO
## 797
## 801 GEO
## 852 GEO
## 954 LEO Non-Polar Inclined
## 1019 GEO
## 1025 GEO
## 1040 LEO Sun-Synchronous
## 1090 Infrared Imaging GEO
## 1103 Meteorology/Earth Science LEO Non-Polar Inclined
## 1105 LEO Non-Polar Inclined
## 1110 Data Relay GEO
## 1246 GEO
## Longitude.of.Geosynchronous.Orbit..Degrees. Perigee..Kilometers. Apogee..Kilometers.
## 16 NA 35700 35803
## 184 NA 35787 35801
## 443 NA 35792 35796
## 447 NA 35783 35805
## 567 NA 35749 35757
## 568 NA 35800 35900
## 797 NA NA NA
## 801 NA 35778 35793
## 852 NA 35576 35998
## 954 NA 810 822
## 1019 NA 35774 35798
## 1025 NA 35777 35797
## 1040 NA 469 472
## 1090 NA 35770 35790
## 1103 NA 735 760
## 1105 NA 397 408
## 1110 NA 35771 35805
## 1246 NA 35780 35785
## Eccentricity Inclination..Degrees. Period..Minutes. Launch.Mass..Kilograms.
## 16 1.22e-03 4.20 1436.1 6169
## 184 1.66e-04 0.50 1436.1 5200
## 443 4.74e-05 0.60 1436.1 4600
## 447 2.61e-04 0.00 1436.1 5000
## 567 9.50e-05 0.03 1434
## 568 1.18e-03 0.03
## 797 NA NA
## 801 1.78e-04 4.85 1436.8 950
## 852 5.01e-03 4.50 1436.1 6804
## 954 8.35e-04 45.00 101.21 45
## 1019 2.85e-04 0.02 1436.09 5514
## 1025 2.37e-04 0.10 1436.13 2400
## 1040 2.19e-04 97.28 94.01 5900
## 1090 2.37e-04 6.45 1436.11 4500
## 1103 1.76e-03 25.00 99.8 110
## 1105 8.12e-04 51.64 92.61 4
## 1110 4.03e-04 4.91 23.94
## 1246 5.93e-05 6.99 1435.88 3454
## Dry.Mass..Kilograms. Power..Watts. Date.of.Launch Expected.Lifetime..Years.
## 16 9/18/2013 14
## 184 11/3/2015 15
## 443 12/28/2015 8
## 447 12/10/2015
## 567 600 7/28/2014
## 568 600 7/28/2014
## 797
## 801 12/11/2011
## 852 6/24/2016
## 954 22 160 9/23/1998 5
## 1019 9/29/2011 15
## 1025 11/11/2013 5
## 1040 3/13/2016 5
## 1090 3/19/2013 12
## 1103 70 10/23/1998 3
## 1105 9/17/2015
## 1110 6/20/2012
## 1246 1600 3,500 (EOL) 1/23/2014 15
## Contractor
## 16 Lockheed Martin Space Systems
## 184 China Academy of Space Technology (CAST)
## 443 China Aerospace Science and Technology Corporation
## 447 ISS Reshetnev
## 567 Orbital Sciences Corp.
## 568 Orbital Sciences Corp.
## 797
## 801 ISS Reshetnev/Thales Alenia Space
## 852 Lockheed Martin Missiles and Space
## 954 Orbital Sciences Corp.
## 1019 Space Systems/Loral
## 1025 OAO Resetneva
## 1040 TsSKB Progress (State Research & Production Space Rocket Center)
## 1090 Lockheed Martin Space Systems
## 1103 Instituto Nacional de Pesquisas Espaciais (INPE)
## 1105 Planetary Exploration Research Center (PERC) of the Chiba Institute of Technology and Tohoku University
## 1110 National Reconnaissance Laboratory
## 1246 Boeing Satellite Systems
## Country.of.Contractor Launch.Site Launch.Vehicle COSPAR.Number
## 16 USA Cape Canaveral Atlas 5 2013-050A
## 184 China Xichang Satellite Launch Center Long March 3B 2015-063A
## 443 China Xichang Satellite Launch Center Long March 3B 2015-083A
## 447 Russia Baikonur Cosmodrome Proton M 2015-075A
## 567 USA Cape Canaveral Delta 4M 2014-043A
## 568 USA Cape Canaveral Delta 4M 2014-043B
## 797
## 801 Russia/France Baikonur Cosmodrome Proton M 2011-074B
## 852 USA Cape Canaveral Atlas 5 2016-041A
## 954 USA Wallops Island Flight Facility Pegasus 1998-053A
## 1019 USA Baikonur Cosmodrome Proton M 2011-054A
## 1025 Russia Baikonur Cosmodrome Proton M 2013-062A
## 1040 Russia Baikonur Cosmodrome Soyuz 2-1b 2016-016A
## 1090 USA Cape Canaveral Atlas 5 2013-011A
## 1103 Brazil Cape Canaveral Pegasus 1998-060A
## 1105 Japan International Space Station Cubesat Deployer 1998-067GY
## 1110 USA Cape Canaveral Atlas 5 2012-033A
## 1246 USA Cape Canaveral Atlas 5 2014-004A
## NORAD.Number
## 16 39256
## 184 41021
## 443 41194
## 447 41121
## 567 40099
## 568 40100
## 797 NA
## 801 37951
## 852 41622
## 954 25475
## 1019 37826
## 1025 39375
## 1040 41386
## 1090 39120
## 1103 25504
## 1105 40898
## 1110 38466
## 1246 39504
As in a first step I’m interested in an overview (Countries, date, Purpose), I will not remove these NA’s. There are also empty rows (4) for the Date.of.Launch
so I need to remove them since I want to create a year
and month
columns for later use.
df<-df[!(is.na(df[,19]) | df[,19]==""), ]
df$year<-as.numeric(format(as.POSIXct(df$Date.of.Launch,format="%m/%d/%Y"),"%Y"))
df$month<-as.numeric(format(as.POSIXct(df$Date.of.Launch,format="%m/%d/%Y"),"%m"))
Purpose
ggplot(df,aes(x=factor(year))) + geom_bar(aes(fill=Purpose)) + theme(axis.text.x = element_text(angle=90, hjust=1),legend.position='top',legend.text=element_text(size=5),legend.key.size = unit(.2, "cm"),legend.title=element_blank(),axis.title.x=element_blank())
d1<-as.data.frame(df %>% group_by(Purpose) %>% summarise(number = n()) %>% arrange(-number))
d1$Purpose <- reorder(d1$Purpose, -d1$number)
d1$Percentage <- d1$number / sum(d1$number) * 100
d1$LABEL <-paste0(round(d1$Percentage,1),"%")
ggplot(d1, aes(x=Purpose, y=number)) + geom_bar(width = 0.9, stat="identity") + xlab('') + ylab('') + geom_text(aes(label=LABEL), position=position_dodge(width=0.9), vjust=-0.25,size=2) + theme(axis.text.x = element_text(angle=90, hjust=1))
Country
ggplot(df,aes(x=factor(year))) + geom_bar(aes(fill=Country.of.Contractor)) + theme(axis.text.x = element_text(angle=90, hjust=1),legend.position='top',legend.text=element_text(size=5),legend.key.size = unit(.2, "cm"),legend.title=element_blank(),axis.title.x=element_blank())
Here I select the Country.of.Contractor
having the USA to show the contribution of the USA vs. world
df1<-df %>% mutate(isUSA = ifelse(grepl("USA", Country.of.Contractor ), 'isUSA',' other'))
ggplot(df1,aes(x=factor(year))) + geom_bar(aes(fill=isUSA)) + theme(axis.text.x = element_text(angle=90, hjust=1),legend.position='top',legend.text=element_text(size=5),legend.key.size = unit(.2, "cm"),legend.title=element_blank(),axis.title.x=element_blank())
d1<-as.data.frame(df %>% group_by(Country.of.Contractor) %>% summarise(number = n()) %>% arrange(-number))
d1$Country.of.Contractor <- reorder(d1$Country.of.Contractor, -d1$number)
d1$Percentage <- d1$number / sum(d1$number) * 100
d1$LABEL <-paste0(round(d1$Percentage,0),"%")
ggplot(d1, aes(x=Country.of.Contractor, y=number)) + geom_bar(width = 0.9, stat="identity") + xlab('') + ylab('') + geom_text(aes(label=LABEL), position=position_dodge(width=0.9), hjust=.2,vjust=-0.25,size=2) + theme(axis.text.x = element_text(angle=90, hjust=1))
US/Europe
res<-df %>% group_by(year,month) %>% summarise(number= n())
mymonths <- c("January","February","March","April","May","June","July","August","September","October","November","December")
res$MonthAbb <- mymonths[ res$month ]
res$ordered_month <- factor(res$MonthAbb, levels = month.name)
ggplot(data=res, aes(x=year,y=ordered_month)) + geom_tile(aes(fill = number),colour = "white") + scale_fill_gradient(low="steelblue", high="black") + theme(axis.title.y=element_blank(),axis.title.x=element_blank())
as.data.frame(df %>% group_by(Purpose,Country.of.Contractor) %>% summarise(number = n()) %>% arrange(-number)) %>% ggplot(aes(x=Country.of.Contractor,y=Purpose,size=number)) + geom_point() + theme(axis.text.x = element_text(angle=90, hjust=1),axis.text=element_text(size=6),axis.title.y=element_blank(),axis.title.x=element_blank())
getGeo<-function(x,coord){
for(i in 1:length(x)){
val<-as.numeric(geocode(as.character(x[i])))[coord]
return(val)
}
}
launches<-factor(unique(df$Launch.Site))
pos<-as.data.frame(launches)
#get geocode
pos$geoLon<-sapply(pos$launches,getGeo,1)
pos$geoLat<-sapply(pos$launches,getGeo,2)
#impute by hand 2 unknown locations
pos$geoLat[13]<-40.954662848
pos$geoLon[13]<-100.28833218
pos$geoLat[18]<-51.6999972
pos$geoLon[18]<-128.0
#impute all by hand
#pos$geoLon<-c(-52.77235,-80.60771,102.24487,63.31336,-120.57244,59.84240,80.22655,40.57484,128.33411,80.22655,111.72082,80.22655,40.95466,130.95750,-118.22393,-118.22393,-81.51594,51.70000,-152.40413,-75.46988,80.22655,131.07611,167.7280,NA,34.68018,127.53411)
#pos$geoLat<-c(5.207912,28.392218,27.893082,45.859478,34.742027,51.094366,13.725865,62.927855,51.883937,13.725865,38.804986,13.725865,100.288332,30.374834,33.74340,33.743406,28.330790,128.000000,57.790832,37.936702,13.725865,31.251236 ,8.730619,NA,31.884686,34.441730)
colnames(pos)[1]<-'Launch.Site'
#group dataframe by Launch.Site
res<-df %>% group_by(Launch.Site) %>% summarise(number= n())
res<-merge(res,pos,by='Launch.Site')
map<-ggplot() + borders("world",colour="grey75",fill="white")
g1<-map + geom_point(data=res,aes(x=geoLon, y=geoLat,size=number,color=factor(Launch.Site)),alpha=.5) + theme(legend.text=element_text(size=5),legend.position="none")
g1 + geom_text(aes(label = ifelse(res$number>150,as.character(res$Launch.Site),''), x = res$geoLon, y = res$geoLat))
History :
Comments :
Earth Observation
the last 10 years