API để đảo ngược vĩ độ mã địa lý, kinh độ cho đường điều tra dân số?


10

Tôi có một loạt các tọa độ kinh độ, vĩ độ (chủ yếu là thành phố / thị trấn) ở Hoa Kỳ mà tôi muốn tìm đường điều tra dân số có chứa.

Ví dụ,

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

Có một API miễn phí hoặc chi phí thấp ngoài kia có thể giúp đỡ không? (Về cơ bản là Yahoo Placefinder, với phản hồi bổ sung của điều tra dân số.)

(Tôi hiểu rằng nhiều thành phố bao gồm nhiều vùng điều tra dân số và tôi hy vọng rằng một số thị trấn nhỏ chỉ chứa một phần của một hoặc nhiều vùng điều tra dân số. Tôi hiện đang thoải mái bỏ qua vấn đề đó.)


Bạn đang suy nghĩ về giải pháp cho một giải pháp bất khả tri của một khu vực hoặc quốc gia?
radek

Câu trả lời:


9

Các FCC khối điều tra dân số chuyển đổi API là chính xác những gì bạn đang tìm kiếm.


Vâng Xấu hổ, vì tôi đã xem nó cho một phần khác của dự án, và đã quên mất. Cảm ơn.
Citizentools

Lưu ý, vào năm 2018, liên kết đó hiển thị "API này đã được thay thế bằng API Khu vực và điều tra dân số mới, được cập nhật để giảm thời gian phản hồi và hỗ trợ các yếu tố dữ liệu liên quan đến Khu vực bổ sung. Như vậy, API kế thừa này đang bị ngừng hoạt động." và các liên kết đến Geo.fcc.gov/api/crade . Bình luận cho hậu thế
arvi1000

5

Trong PostGIS, nếu bạn có bảng điểm và thông tin ranh giới điều tra dân số mà @Sminbamangu đề cập đến bạn có thể tính toán điều này bằng cách sử dụng phương pháp sau:

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

Bạn có thể xem mô tả ST_Contains tại đây . Điều này sẽ trả về một bảng các điểm và đường điều tra dân số nơi chúng được đặt.


Đã thử rằng trong Spatialite với 10 điểm và dữ liệu California và nó thực hiện điều đó trong khoảng 0,2 giây ... +1.
Simbamangu

Nice - Tôi phải khám phá Spatialite. Tôi đã bắt đầu sử dụng PostGIS 6 tháng trước và yêu thích nó, nhưng đó là nhiệm vụ khá nặng nề. Sẽ thật tuyệt nếu có thêm các bộ dữ liệu độc lập có thể mang theo được khi không có internet.
djq

2

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 ...


1

Như được đề cập bởi @Simbamangu, điều này có thể dễ dàng thực hiện tại địa phương chỉ bằng bất kỳ phần mềm GIS trên máy tính để bàn nào trên thị trường.

Đối với nguồn mở và miễn phí, hãy xem " tham gia thuộc tính theo vị trí " trong QGIS .

Nếu bạn có kế hoạch cần thực hiện việc này nhiều lần theo thời gian, bạn có thể xem xét đưa các bộ dữ liệu vào PostGIS và tạo một liên kết không gian (xem ví dụ này trong trợ giúp trực tuyến). Sau đó, bạn có thể hình dung các kết quả trong QGIS.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.