Bạn có thể làm điều đó cục bộ thay vì API trực tuyến. Một giải pháp với dữ liệu ranh giới R: C điều tra cho Hoa Kỳ có sẵn thông qua TIGER tại c Điều tra địa chỉ ; nếu bạn đang nghĩ về Hoa Kỳ thì bạn có thể tải xuống các tiểu bang Hoa Kỳ và sử dụng một chức năng để có được các vùng. Ví dụ: sử dụng California và một điểm ngẫu nhiên (hoặc ngẫu nhiên):
library(maps)
library(maptools)
tractLookup <- function(x, y, state) {
pt <- SpatialPoints(data.frame(x = x, y = y))
overlay.pt <- overlay(pt, state) # what index number does pt fall inside?
return(census$TRACT[overlay.pt]) # give the Tract number from the census layer
}
Dùng thử:
california <- readShapePoly("~/Downloads/US_2000_Census_Tracts/tr06_d00_shp/tr06_d00.shp")
tractLookup(-123.123, 40.789, california)
Cung cấp 0004, đó là chính xác.
# Look at the map
plot(census)
map('state', c('California'), lwd = 2, col = 'green', add = F) # optional
points(-123.123, 40.789, col = 'red', lwd = 2)
Điều này hoạt động, nhưng mất 5 giây trên máy Mac của tôi, có lẽ sẽ quá nhiều nếu bạn sẽ làm nhiều việc này; Tôi nghi ngờ ai đó sẽ cân nhắc trong một thời gian ngắn với giải pháp PostGIS sẽ nhanh hơn gấp triệu lần ...