คุณสามารถทำได้แบบโลคัลแทน API ออนไลน์ โซลูชันเดียวที่มีข้อมูลขอบเขตการสำรวจสำมะโนประชากรของสหรัฐอเมริกามีให้บริการผ่านTIGER ที่ census.gov ; หากคุณกำลังคิดเกี่ยวกับสหรัฐอเมริกาคุณสามารถดาวน์โหลดสหรัฐอเมริกาและใช้ฟังก์ชั่นเพื่อรับผืน ตัวอย่างเช่นการใช้แคลิฟอร์เนียและจุดสุ่ม (หรือ random-ish):
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)
ใช้งานได้ แต่ใช้เวลา 5 วินาทีบน Mac ของฉันซึ่งอาจจะมากเกินไปถ้าคุณทำสิ่งนี้มาก ฉันสงสัยว่าบางคนจะมีน้ำหนักในไม่ช้าด้วยโซลูชัน PostGIS ที่จะเร็วขึ้นเป็นล้านเท่า ...