Kom igångKom igång gratis

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

Visa kurs

Ö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å kolumnen place.

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(____)
Redigera och kör kod