Bắt đầu ngayBắt đầu miễn phí

Tính centroid

Hộp giới hạn (bounding box) có thể bao phủ từ một khu phố cho đến cả một bang hoặc thậm chí một quốc gia. Để đơn giản hóa, một cách xử lý dữ liệu này là chuyển hộp giới hạn thành một centroid — tức tâm của hộp giới hạn. Việc tính centroid khá trực quan: ta tính các điểm giữa của các đoạn thẳng tạo bởi vĩ độ và kinh độ.

numpy đã được import dưới tên np.

Bài tập này là một phần của khóa học

Phân tích dữ liệu mạng xã hội bằng Python

Xem khóa học

Hướng dẫn bài tập

  • Lấy bộ tọa độ đầu tiên từ JSON của place.
  • Tính kinh độ trung tâm bằng cách cộng danh sách kinh độ rồi chia cho hai.
  • Làm tương tự với các vĩ độ.
  • Áp dụng hàm calculateCentroid() cho cột place.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

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(____)
Chỉnh sửa và Chạy Mã