Var är Internationella Rymdstationen (ISS) just nu?

I den här verkstan ska vi försöka ge oss på att spåra den Internationellla Rymdstationen (IIS). Så här:

Vi ritar ut världskartan och sen ritar vi ut ISS, ser ni den röda ringen? Det markerar var IIS befinner sig just nu, men den rör sig hela tiden, så vi måste se till att uppdatera kartan ofta.

Vi ska också ta reda på hur många astronauter som är ombord och vad de heter, sä här

Det här behöver vi göra:

  1. Skapa ett nytt Python projekt.
  2. Importera beroenden.
  3. Programmera in addressen till ISS servern.
  4. Hämta namnen på besättningsmedlemmarna.
  5. Skriva ut namnen till en fil.
  6. Visa filen på skärmen.
  7. Presentera världskartan på skärmen.
  8. Rita ut ISS på kartan var 5:e sekund.

1. Skapa ISS-tracker projekt

  1. Börja med att skapa en katalog på disk, namnge den till 'iss-tracker'.
  2. Ladda ned:

ISS

Karta

  1. Lägg dem i katalogen som du döpte till 'iss-tracker'.
  2. Skapa en fil som heter 'main.py'

2. Importera beroenden

Skriv in de här instruktionerna längst upp i filen 'main.py'

import json
import turtle
import urllib.request
import time
import webbrowser

3. Programmera in addressen till ISS servern

Det finns en NASA webserver som kan svara på information om ISS. Den har en address på internet som vi kan programmera mot.

Lägg till instruktionerna som inte är utgråade i filen (de andra har du redan skrivit in) och spara. Testa!!


import json import turtle import urllib.request import time import webbrowser

url = "http://api.open-notify.org/astros.json" response = urllib.request.urlopen(url)

Här skapar vi en variabel, som heter url och innehåller adressen till NASA server. Vi skickar också ett meddelande och frågar, och får ett svar som vi lägger in i en variable som heter respone.

4. Hämta namnen på besättningsmedlemmarna.

Lägg till instruktionerna som inte är utgråade i filen (de andra har du redan skrivit in) och spara. Testa!!


import json import turtle import urllib.request import time import webbrowser url = "http://api.open-notify.org/astros.json" response = urllib.request.urlopen(url)

result = json.loads(response.read()) people = result["people"]

Här läser vi svaret och skapar en variabel som heter result och lägger in svaret i den. Sen skapar vi en variabel som heter people och lägger in namnen på besättningen i den.

Prova att skriva ut den om du vill, genom att lägg till instruktionerna som inte är utgråade i filen (de andra har du redan skrivit in) och spara. Testa!!


import json import turtle import urllib.request import time import webbrowser url = "http://api.open-notify.org/astros.json" response = urllib.request.urlopen(url) result = json.loads(response.read()) people = result["people"]

print(people)

Vad händer?

5.Skriva ut namnen till en fil.

Iställer för att skriva ut alla namnen på bestttningen till konsolen, så ska vi skriva ut dem till en fil, som vi sen kan visa på skärmen.

Lägg till instruktionerna som inte är utgråade i filen (de andra har du redan skrivit in) och spara. Testa!!


import json import turtle import urllib.request import time import webbrowser url = "http://api.open-notify.org/astros.json" response = urllib.request.urlopen(url) result = json.loads(response.read()) people = result["people"]

file = open("iss.txt", "w") file.write("För närvarande är " + str(result["number"]) + " astronauter på ISS: \n\n")

for p in people: file.write(p['name'] + " - ombord" + "\n")

Vad händer här? Jo, vi skapar en variabel som innehåller en fil som heter 'iss.txt'. Sen skriver vi in antalet astronauter (result["number"])i filen.

Sen skapar vi en 'for-loop' för att skriva in alla namnen (p["name"]) på besättningen i filen.

6. Visa filen på skärmen

Ni ska vi visa namnen på besättningen. Lägg till instruktionerna som inte är utgråade i filen (de andra har du redan skrivit in) och spara. Testa!!


import json import turtle import urllib.request import time import webbrowser url = "http://api.open-notify.org/astros.json" response = urllib.request.urlopen(url) result = json.loads(response.read()) people = result["people"] file = open("iss.txt", "w") file.write("För närvarande är " + str(result["number"]) + " astronauter på ISS: \n\n") for p in people: file.write(p['name'] + " - ombord" + "\n")

file.close() webbrowser.open("iss.txt")

Ett fönster öppnas på skärmen som visar innehållet i filen, med namnen på besättningen.

7. Presentera världskartan på skärmen.

Nu ska vi visa världskartan, och då ska vi använda Turtle graphics.

Lägg till instruktionerna som inte är utgråade i filen (de andra har du redan skrivit in) och spara. Testa!!


import json import turtle import urllib.request import time import webbrowser url = "http://api.open-notify.org/astros.json" response = urllib.request.urlopen(url) result = json.loads(response.read()) people = result["people"] file = open("iss.txt", "w") file.write("För närvarande är " + str(result["number"]) + " astronauter på ISS: \n\n") for p in people: file.write(p['name'] + " - ombord" + "\n") file.close() webbrowser.open("iss.txt")

# Lägg in världskartan i Turtle graphics screen = turtle.Screen() screen.setup(1280, 720) screen.setworldcoordinates(-180, -90, 180, 90)

Ladda kartan och ISS

screen.bgpic("map.gif") screen.register_shape("iss.gif") iss = turtle.Turtle() iss.shape("iss.gif") iss.setheading(45) iss.penup()

Med Turtle kan man rita saker och presentera bilder. Här skapar vi sen 'screen', och laddar våra bilder.

8. Rita ut ISS på kartan var 5:e sekund.

Till slut ska vi rita ut ISS pp kartan, och uppdatera positionen var 5:e sekund.

Lägg till instruktionerna som inte är utgråade i filen (de andra har du redan skrivit in) och spara. Testa!!


import json import turtle import urllib.request import time import webbrowser url = "http://api.open-notify.org/astros.json" response = urllib.request.urlopen(url) result = json.loads(response.read()) people = result["people"] file = open("iss.txt", "w") file.write("För närvarande är " + str(result["number"]) + " astronauter på ISS: \n\n") for p in people: file.write(p['name'] + " - ombord" + "\n") file.close() webbrowser.open("iss.txt") # Lägg in världskartan i Turtle graphics screen = turtle.Screen() screen.setup(1280, 720) screen.setworldcoordinates(-180, -90, 180, 90)

Ladda kartan och ISS

screen.bgpic("map.gif") screen.register_shape("iss.gif") iss = turtle.Turtle() iss.shape("iss.gif") iss.setheading(45) iss.penup()

while True: url = "http://api.open-notify.org/iss-now.json" response = urllib.request.urlopen(url) result = json.loads(response.read())
# Ta fram ISS positionen
location = result["iss_position"]
lat = location['latitude']
lon = location['longitude']

# Skriv ut latitud ocg longitud i konsolen
lat = float(lat)
lon = float(lon)
print("\nLatitude: " + str(lat))
print("\nLongitude: " + str(lon))

# Rita ut ISS
iss.goto(lon, lat)

# Vänta i 5 sekunder och fortätt sen...
time.sleep(5)

Så här ser det ut i sin helhet


import json
import turtle
import urllib.request
import time
import webbrowser
# import geocoder

url = "http://api.open-notify.org/astros.json" response = urllib.request.urlopen(url) result = json.loads(response.read()) people = result["people"] print(people)

file = open("iss.txt", "w") file.write("För närvarande är " + str(result["number"]) + " astronauter på ISS: \n\n")

for p in people: file.write(p['name'] + " - ombord" + "\n")

print long and lat

g = geocoder.ip('me')

file.write("\nYour current lat / long is: " + str(g.latlng))

file.close() webbrowser.open("iss.txt")

Setup the world map in turtle module

screen = turtle.Screen() screen.setup(1280, 720) screen.setworldcoordinates(-180, -90, 180, 90)

load the world map image

screen.bgpic("map.gif") screen.register_shape("iss.gif") iss = turtle.Turtle() iss.shape("iss.gif") iss.setheading(45) iss.penup()

while True: # load the current status of the ISS in real-time url = "http://api.open-notify.org/iss-now.json" response = urllib.request.urlopen(url) result = json.loads(response.read())

# Extract the ISS location
location = result["iss_position"]
lat = location['latitude']
lon = location['longitude']

# Ouput lon and lat to the terminal
lat = float(lat)
lon = float(lon)
print("\nLatitude: " + str(lat))
print("\nLongitude: " + str(lon))

# Update the ISS location on the map
iss.goto(lon, lat)

# Refresh each 5 seconds
time.sleep(5)

Vad duktig du varit som kommit hit. Bra jobbat!!

An unhandled error has occurred. Reload 🗙