Menghitung centroid
Bounding box dapat berkisar dari satu blok kota hingga satu negara bagian atau bahkan negara. Demi kesederhanaan, salah satu cara menangani data ini adalah dengan menerjemahkan bounding box menjadi yang disebut centroid, yaitu titik tengah bounding box. Perhitungan centroid cukup langsung — kita menghitung titik tengah garis yang dibentuk oleh lintang dan bujur.
numpy telah diimpor sebagai np.
Latihan ini merupakan bagian dari kursus
Menganalisis Data Media Sosial dengan Python
Instruksi latihan
- Dapatkan himpunan koordinat pertama dari JSON place.
- Hitung bujur tengah dengan menjumlahkan daftar bujur dan membaginya dengan dua.
- Lakukan hal yang sama untuk lintang.
- Terapkan fungsi
calculateCentroid()pada kolomplace.
Latihan interaktif langsung praktik
Cobalah latihan ini dengan melengkapi kode contoh ini.
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(____)