Ви можете зробити це локально, а не онлайн-API. Одне рішення з даними про межі перепису R: США доступне через TIGER на сайті census.gov ; якщо ви думаєте про США, то ви можете завантажити штати США і скористатися функцією, щоб отримати урочища. Наприклад, використовуючи Каліфорнію та випадкову (або випадкову точку) точку:
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
}
Спробуй:
california <- readShapePoly("~/Downloads/US_2000_Census_Tracts/tr06_d00_shp/tr06_d00.shp")
tractLookup(-123.123, 40.789, california)
Дає 0004, що правильно.
# 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)
Це працює, але на моєму Mac використовується 5 секунд, що, мабуть, буде занадто багато, якщо ви збираєтеся зробити багато цього; Я підозрюю, що незабаром хтось зважиться на рішення PostGIS, яке буде в мільйон разів швидше ...