Beräkna tyngdpunkten
En bounding box kan täcka allt från ett kvarter till en hel delstat eller ett helt land. För enkelhetens skull kan vi hantera dessa data genom att omvandla bounding boxen till en så kallad centroid – det vill säga mittpunkten i bounding boxen. Beräkningen är enkel: vi tar mittpunkterna på de linjer som bildas av latitud- och longitudvärdena.
numpy har importerats som np.
Den här övningen är en del av kursen
Analys av sociala medier i Python
Övningsinstruktioner
- Hämta den första uppsättningen koordinater från place-JSON:en.
- Beräkna den centrala longituden genom att summera longitudlistan och dividera med två.
- Gör samma sak för latituderna.
- Applicera funktionen
calculateCentroid()på kolumnenplace.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
def calculateCentroid(place):
""" Calculates the centroid from a bounding box."""
# Obtain the coordinates from the bounding box.
coordinates = place[____][____][0]
longs = np.unique( [x[0] for x in coordinates] )
lats = np.unique( [x[1] for x in coordinates] )
if len(longs) == 1 and len(lats) == 1:
# return a single coordinate
return (longs[0], lats[0])
elif len(longs) == 2 and len(lats) == 2:
# If we have two longs and lats, we have a box.
central_long = ____.____(____) / ____
central_lat = ____.____(____) / ____
else:
raise ValueError("Non-rectangular polygon not supported: %s" %
",".join(map(lambda x: str(x), coordinates)) )
return (central_long, central_lat)
# Calculate the centroids of place
centroids = tweets_sotu[____].apply(____)