Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Định vị địa lý một số lượng lớn các bài đăng dựa trên Địa chỉ IP. (880.000 hàng)

Chúng tôi sẽ tạo một số địa chỉ IP, tem định vị địa lý và vẽ biểu đồ cho chúng:

thư viện
library(iptools)
library(rgeolocate)
library(tidyverse)

Tạo một triệu địa chỉ IPv4 ngẫu nhiên (theo cách được phân phối quá đồng đều):

ips <- ip_random(1000000)

Và, xác định vị trí địa lý của chúng:

system.time(
  rgeolocate::maxmind(
    ips, "~/Data/GeoLite2-City.mmdb", c("longitude", "latitude")
  ) -> xdf
)
##    user  system elapsed 
##   5.016   0.131   5.217 

5s cho 1m IPv4s. 👍🏼

Bây giờ do tính đồng nhất, các bong bóng sẽ nhỏ một cách ngu ngốc, vì vậy chỉ với ví dụ này, chúng tôi sẽ làm tròn chúng lên một chút:

xdf %>% 
  mutate(
    longitude = (longitude %/% 5) * 5,
    latitude = (latitude %/% 5) * 5
  ) %>%  
  count(longitude, latitude) -> pts

Và, lập biểu đồ cho chúng:

ggplot(pts) +
  geom_point(
    aes(longitude, latitude, size = n), 
    shape=21, fill = "steelblue", color = "white", stroke=0.25
  ) +
  ggalt::coord_proj("+proj=wintri") +
  ggthemes::theme_map() +
  theme(legend.justification = "center") +
  theme(legend.position = "bottom")

Bạn có thể thấy ý tôi là abt "quá đồng đều". Tuy nhiên, bạn có IPv4 "thực", vì vậy bạn phải là gtg.

Cân nhắc sử dụng scale_size_area() , nhưng thành thật mà nói, hãy cân nhắc không vẽ các IPv4 trên bản đồ địa lý. Tôi thực hiện nghiên cứu trên quy mô internet để kiếm sống và những tuyên bố về độ chính xác để lại nhiều điều đáng mong đợi. Tôi hiếm khi đi dưới phân bổ cấp quốc gia vì lý do đó (và chúng tôi trả tiền cho dữ liệu "thực").




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Vi phạm ràng buộc toàn vẹn:1052 Cột 'id' trong đó mệnh đề không rõ ràng

  2. Tạo một thủ tục được lưu trữ:thiết lập bộ ký tự và đối chiếu

  3. MySQL InnoDB khóa chết khi CHỌN với khóa độc quyền (CHO CẬP NHẬT)

  4. Xem trước và tải lên hình ảnh bằng cách sử dụng cơ sở dữ liệu PHP và MySQL

  5. Nhận mySQL MONTH () để sử dụng các số 0 ở đầu?