Calculando o centróide
O retângulo delimitador (bounding box) pode variar de um quarteirão a um estado inteiro ou até um país. Para simplificar, uma forma de lidar com esses dados é traduzir o bounding box para o que chamamos de um centroide, ou o centro do retângulo. O cálculo do centroide é direto: calculamos os pontos médios das linhas criadas pelas latitudes e longitudes.
numpy já foi importado como np.
Este exercício faz parte do curso
Analisando dados de mídias sociais em Python
Instruções do exercício
- Obtenha o primeiro conjunto de coordenadas do JSON de place.
- Calcule a longitude central somando a lista de longitudes e dividindo por dois.
- Faça o mesmo para as latitudes.
- Aplique a função
calculateCentroid()à colunaplace.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
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(____)