Эта статья представляет собой учебное пособие о том, как использовать NASA API с помощью Python. Это первая часть серии API НАСА.
Эта статья - часть задачи Daily Python, которую я взял на себя. Я буду писать короткие статьи о Python ежедневно.
Зарегистрируйтесь на сайте NASA API: https://api.nasa.gov/. После этого шага вы получите ключ API по электронной почте. Этот ключ API будет использоваться для дальнейшего взаимодействия с API НАСА.
Требования:
- Python 3.0
- Пип
Установите следующие пакеты:
- Запросы - Библиотека для выполнения HTTP-запросов.
- Pprint - Библиотека для печати структур данных в отформатированном виде.
- 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
- APOD - астрономическая картина дня
- Asteroids NeoWs - NeoWs (веб-служба объектов, сближающихся с Землей)
- 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 операции для получения информации об объектах, сближающихся с Землей.
- Кормить
- Погляди
- Просматривать
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()
Сохраненное изображение:
Надеюсь, эта статья была полезной, оставьте несколько аплодисментов, если она вам понравилась.