Aan de slagBegin gratis

Het zwaartepunt berekenen

De begrenzingsdoos (bounding box) kan variëren van één stadsblok tot een hele staat of zelfs een land. Om het eenvoudig te houden, kun je deze gegevens benaderen door de box te vertalen naar een zogenoemd centroid: het middelpunt van de box. De berekening is rechttoe rechtaan: je bepaalt de middelpunten van de lijnen die worden gevormd door de breedte- en lengtegraden.

numpy is al geïmporteerd als np.

Deze oefening maakt deel uit van de cursus

Socialmediagegevens analyseren in Python

Bekijk cursus

Oefeninstructies

  • Haal de eerste set coördinaten op uit de place-JSON.
  • Bereken de centrale lengtegraad door de lijst met lengtegraden op te tellen en door twee te delen.
  • Doe hetzelfde voor de breedtegraden.
  • Pas de functie calculateCentroid() toe op de kolom place.

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan te vullen.

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(____)
Code bewerken en uitvoeren