API для зміни географічної широти, довготи до перепису урочища?


11

У мене є маса координат широти, довготи (в основному центроїдів міста / селища) у Сполучених Штатах, для яких я хотів би знайти урочище, що містить перепис.

Наприклад,

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

Чи є там безкоштовний або недорогий API, який може допомогти? (По суті Yahoo Placefinder, з додатковою реакцією перепису.)

(Я розумію, що у багатьох містах є декілька переписних урочищ, і я би сподівався, що деякі невеликі міста містять лише частини одного або декількох уроків перепису. Я зараз ігнорую це питання.)


Ви думаєте про рішення для певної сфери чи країни агностичного рішення?
radek

Відповіді:


10

Перетворення блок Перепису FCC API саме те , що ви шукаєте.


Так. Збентежуючи, бо я вважав це за іншу частину проекту і забув. Дякую.
Громадяни

Зауважте, у 2018 році на цьому посиланні видно "Цей API був замінений новим 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 очками та даними Каліфорнії, і це робить це приблизно за 0,2 секунди ... +1.
Simbamangu

Приємно - я повинен досліджувати Простір. Я почав використовувати PostGIS 6 місяців тому і люблю це, але це досить важкий обов'язок. Було б добре мати більше автономних наборів даних, які є портативними для часів, коли немає Інтернету.
djq

2

Ви можете зробити це локально, а не онлайн-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, яке буде в мільйон разів швидше ...


1

Як згадував @Simbamangu, це можна легко зробити на локальному рівні майже за допомогою будь-якого настільного GIS-програмного забезпечення на ринку.

Для вільного та відкритого коду подивіться на " атрибути приєднання за місцем " у QGIS .

Якщо ви плануєте робити це неодноразово з часом, ви можете розглянути можливість розміщення наборів даних у PostGIS та створення просторового з'єднання (див. Цей приклад в онлайн-довідці). Потім можна візуалізувати результати в QGIS.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.