Calcular el centroide
La caja envolvente (bounding box) puede abarcar desde una manzana de una ciudad hasta un estado entero o incluso un país. Para simplificar, una forma de manejar estos datos es traducir la caja envolvente a lo que se llama un centroide, es decir, el centro de la caja. El cálculo del centroide es sencillo: calculamos los puntos medios de las líneas creadas por las latitudes y longitudes.
numpy se ha importado como np.
Este ejercicio forma parte del curso
Análisis de datos de redes sociales con Python
Instrucciones del ejercicio
- Obtén el primer conjunto de coordenadas del JSON
place. - Calcula la longitud central sumando la lista de longitudes y dividiéndola entre dos.
- Haz lo mismo con las latitudes.
- Aplica la función
calculateCentroid()a la columnaplace.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
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(____)