Хороший способ привязать публикацию к местоположению с помощью PostGIS

Я настраиваю приложение с учетом местоположения, как указано здесь . С тех пор я узнал гораздо больше о приложениях ГИС и решил изменить несколько вещей в настройке, которую я первоначально предложил - теперь я собираюсь использовать базу данных postgresql с расширением postgis, чтобы разрешить геометрические поля, и использовать Данные TIGER/Line для его заполнения. Данные TIGER/Line, по-видимому, предлагают разные наборы данных в разных разрешениях (слоях) — есть данные для штатов, округов, почтовых индексов, блоков и т. д. Мне нужен способ связать сообщение с адресом, используя максимально возможное разрешение зернистости. .

Например, если возможно, я хотел бы связать пост с определенной улицей (наилучшее разрешение). Если не улица, то конкретный почтовый индекс (менее конкретный). Если не почтовый индекс, то конкретный округ (менее конкретный) и так далее. Примечание: я хочу в конечном итоге показать все это на карте.

Вот что я предлагаю:

Местоположения

id              -- int
street_name     -- varchar  -- NULL
postal_code_id  -- int      -- NULL
county_id       -- int      -- NULL
state_id        -- int

Почтовые индексы

id      -- int
code    -- varchar
geom    -- geometry

Округи

id      -- int
name    -- varchar
geom    -- geometry

Таблица состояний аналогична и так далее...

Как видите, таблица местоположений будет определять уровень специфичности любых установленных полей. Таблицы почтовых индексов, округов и штатов не связаны друг с другом внешним ключом (слишком сложно, чтобы определить правильную иерархию, которая действует везде), однако я считаю, что есть способ определить их взаимосвязь с помощью поля геометрии (например, запросить, в каком штате находится определенный почтовый индекс или какие почтовые индексы принадлежат определенному штату).

Я думаю, что это хорошая установка, потому что, если база данных будет расти (скажем, я решу включить в базу данных данные по районам или кварталам), я могу добавить еще одну таблицу для этих данных, а затем добавить еще один внешний ключ в таблицу местоположений (например, блок_идентификатор).

Кто-нибудь знает лучший способ сделать это?


person BDuelz    schedule 14.01.2012    source источник


Ответы (1)


Возможно ли, чтобы улица принадлежала двум разным округам? или два почтовых индекса? В моей стране это возможно, особенно в городах. Если это возможно, ваша схема не будет работать.

Несмотря на то, что я сказал ранее, я бы добавил геометрию улиц (открыть карту улиц), не привязывая ее к почтовому индексу, округу или даже штату, а затем с помощью простого запроса, который пересекает геометрию улиц с другой таблицы, вы можете получить эту информацию и заполнить другую таблицу, которая имеет эти отношения.

person Francisco Valdez    schedule 17.01.2012