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 adalah bagian dari kursus
Menganalisis Data Media Sosial dengan Python
Petunjuk 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 praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
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(____)