Çevrimiçi bir API yerine yerel olarak yapabilirsiniz. ABD için R: Sayım sınır verisine sahip bir çözüm , census.gov adresindeki TIGER aracılığıyla elde edilebilir ; ABD'yi düşünüyorsanız, ABD eyaletlerini indirebilir ve yolları almak için bir işlev kullanabilirsiniz. Örneğin, California ve rastgele (veya random-ish) bir nokta kullanarak:
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
}
Denemek:
california <- readShapePoly("~/Downloads/US_2000_Census_Tracts/tr06_d00_shp/tr06_d00.shp")
tractLookup(-123.123, 40.789, california)
0004 verir, bu doğrudur.
# 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)
Bu işe yarıyor, ancak Mac'imde 5 saniye sürüyor, bu da çok şey yaparsanız muhtemelen çok fazla olurdu; Birisinin kısa sürede milyonlarca kat daha hızlı olacak bir PostGIS çözümü ile tartacağından şüpheleniyorum ...