API เพื่อย้อนกลับ geocode ละติจูดลองจิจูดไปยังระบบสำมะโนประชากร?


11

ฉันมีละติจูดลองจิจูดพิกัด (ส่วนใหญ่เมือง / เมือง centroids) ในสหรัฐอเมริกาซึ่งฉันต้องการค้นหาระบบสำมะโนประชากรที่มี

ตัวอย่างเช่น

input => nn.nnn, -nn.nnn 
output => 010300

มี API ฟรีหรือต้นทุนต่ำที่สามารถช่วยได้หรือไม่ (โดยพื้นฐานแล้ว Yahoo Placefinder พร้อมการตอบสนองเพิ่มเติมของทางสำรวจสำมะโนประชากร)

(ฉันเข้าใจว่าหลาย ๆ เมืองรวมถึงการสำรวจสำมะโนประชากรหลายแห่งและฉันคาดหวังว่าเมืองเล็ก ๆ บางแห่งจะมีเพียงส่วนหนึ่งของการสำรวจสำมะโนประชากรเพียงแห่งเดียวฉันรู้สึกไม่สนใจเรื่องนี้ในตอนนี้)


คุณกำลังคิดเกี่ยวกับวิธีแก้ปัญหาสำหรับผู้ไม่เชื่อเรื่องพระเจ้าในบางพื้นที่หรือไม่?
radek

คำตอบ:


10

FCC สำมะโนประชากรบล็อกแปลง API เป็นสิ่งที่คุณกำลังมองหา


ได้. น่าอายเพราะฉันคิดว่ามันเป็นอีกส่วนหนึ่งของโครงการและลืมไปแล้ว ขอบคุณ
Citizentools

หมายเหตุในปี 2018 ลิงค์นั้นแสดงว่า "API นี้ถูกแทนที่ด้วย Area and Census Block API ใหม่ซึ่งได้รับการปรับปรุงเพื่อลดเวลาตอบสนองและสนับสนุนองค์ประกอบข้อมูลที่เกี่ยวข้องกับพื้นที่เพิ่มเติมดังนั้น API ดั้งเดิมนี้กำลังถูกปลดประจำการ" และเชื่อมโยงไปgeo.fcc.gov/api/census แสดงความคิดเห็นเพื่อลูกหลาน
arvi1000

5

ใน PostGIS หากคุณมีตารางคะแนนและข้อมูลขอบเขตการสำรวจสำมะโนประชากรที่ @Sminbamangu อ้างถึงคุณสามารถคำนวณได้โดยใช้วิธีการต่อไปนี้:

SELECT 
       c.census_tract, 
       p.point_id
FROM
       census_boundary as c,
       table_of_points as p
WHERE
       ST_Contains(c.geom, p.geom);

ท่านสามารถเข้าดู ST_Contains คำอธิบายที่นี่ นี่จะส่งกลับตารางคะแนนและสำมะโนประชากรที่พวกเขาอยู่


พยายามใน Spatialite ที่มี 10 คะแนนและข้อมูล California และใช้เวลาประมาณ 0.2 วินาที ... +1
Simbamangu

นิสัยดี - ฉันต้องสำรวจอวกาศ ฉันเริ่มใช้ PostGIS เมื่อ 6 เดือนที่แล้วและชอบ แต่ก็ค่อนข้างหนัก จะดีถ้ามีชุดข้อมูลในตัวที่พกพาได้มากกว่าเมื่อไม่มีอินเทอร์เน็ต
djq

2

คุณสามารถทำได้แบบโลคัลแทน 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 ที่จะเร็วขึ้นเป็นล้านเท่า ...


1

ตามที่ระบุไว้โดย @Simbamangu สิ่งนี้สามารถทำได้อย่างง่ายดายโดยใช้ซอฟต์แวร์ GIS เดสก์ท็อปในตลาด

สำหรับแหล่งที่มาฟรีและเปิดให้ดูที่ " เข้าร่วมคุณลักษณะตามสถานที่ " ในQGIS

หากคุณวางแผนที่จะทำสิ่งนี้ซ้ำ ๆ เมื่อเวลาผ่านไปคุณสามารถลองใส่ชุดข้อมูลลงใน PostGIS และสร้างการรวมเชิงพื้นที่ (ดูตัวอย่างนี้ในวิธีใช้ออนไลน์) จากนั้นคุณสามารถเห็นภาพผลลัพธ์ใน QGIS

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.