Эта статья представляет собой учебное пособие о том, как использовать NASA API с помощью Python. Это первая часть серии API НАСА.

Эта статья - часть задачи Daily Python, которую я взял на себя. Я буду писать короткие статьи о Python ежедневно.

Зарегистрируйтесь на сайте NASA API: https://api.nasa.gov/. После этого шага вы получите ключ API по электронной почте. Этот ключ API будет использоваться для дальнейшего взаимодействия с API НАСА.

Требования:

  1. Python 3.0
  2. Пип

Установите следующие пакеты:

  1. Запросы - Библиотека для выполнения HTTP-запросов.
  2. Pprint - Библиотека для печати структур данных в отформатированном виде.
  3. urllib - Библиотека для обработки URL-адресов
pip install requests pprint urllib3

Давайте импортируем эти библиотеки

import requests
from urllib.request import urlretrieve
from pprint import PrettyPrinter
pp = PrettyPrinter()
pp = PrettyPrinter()

Экземпляр ‘pp’ PrettyPrinter будет использоваться для украшения вывода JSON.

Давайте сохраним ключ API в переменной, которая будет использоваться в программе.

apiKey = 'YOUR_NASA_API_KEY'

В этой статье мы рассмотрим следующие API

  1. APOD - астрономическая картина дня
  2. Asteroids NeoWs - NeoWs (веб-служба объектов, сближающихся с Землей)
  3. EPIC - Камера для получения полихроматических изображений Земли

Начнем с написания функции для использования APOD API.

def fetchAPOD():
  URL_APOD = "https://api.nasa.gov/planetary/apod"
  date = '2020-01-22'
  params = {
      'api_key':api_key,
      'date':date,
      'hd':'True'
  }
  response = requests.get(URL_APOD,params=params).json()
  pp.pprint(response)
fetchAPOD()

Давайте определим функции для использования Asteroids NeoWs API

Есть 3 операции для получения информации об объектах, сближающихся с Землей.

  1. Кормить
  2. Погляди
  3. Просматривать

def fetchAsteroidNeowsFeed():
  URL_NeoFeed = "https://api.nasa.gov/neo/rest/v1/feed"
  params = {
      'api_key':api_key,
      'start_date':'2020-01-22',
      'end_date':'2020-01-23'
  }
  response = requests.get(URL_NeoFeed,params=params).json()
  pp.pprint(response)
fetchAsteroidNeowsFeed()

Примечание. Приведенные выше данные можно использовать для изучения пути астероидов и их вероятности столкновения с другими Neos.

def fetchAsteroidNeowsLookup():
  asteroid_id = '3542519'
  URL_NeoLookup = "https://api.nasa.gov/neo/rest/v1/neo/"+ asteroid_id
  params = {
      'api_key':api_key
  }
  response = requests.get(URL_NeoLookup,params=params).json()
  pp.pprint(response)
fetchAsteroidNeowsLookup()

def fetchAsteroidNeowsBrowse():
  URL_NeoBrowse = "https://api.nasa.gov/neo/rest/v1/neo/browse/"
  params = {
      'api_key':api_key
  }
  response = requests.get(URL_NeoBrowse,params=params).json()
  pp.pprint(response)
fetchAsteroidNeowsBrowse()

Наконец, давайте определим функцию для использования API EPIC (Earth Polychromatic Imaging Camera).

def fetchEPICData():
  URL_EPIC = "https://api.nasa.gov/EPIC/api/natural/"
  params = {
      'api_key':api_key,
  }
  response = requests.get(URL_EPIC,params=params).json()
  pp.pprint(response)
fetchEPICData()

Давайте сохраним изображение, используя идентификатор «image», который мы получили из «fetchEPICData».

def fetchEPICImage():
  YEAR = '2015'
  MONTH = '10'
  DAY = '31'
  IMAGE_ID = 'epic_1b_20151031074844'
  URL_EPIC = "https://epic.gsfc.nasa.gov/archive/natural/"
  URL_EPIC = URL_EPIC + YEAR +'/' + MONTH + '/'+DAY
  URL_EPIC = URL_EPIC + '/png'
  URL_EPIC = URL_EPIC + '/' + IMAGE_ID + '.png' 
  print(URL_EPIC)
  urlretrieve(URL_EPIC,IMAGE_ID+'.png')
  
fetchEPICImage()

Сохраненное изображение:

Надеюсь, эта статья была полезной, оставьте несколько аплодисментов, если она вам понравилась.

Следите за ежедневным вызовом Python здесь: