Более

Импортировать столбец из одного шейп-файла в другой с помощью PostGIS?


Итак, у меня есть два шейп-файла: один - это шестнадцатеричный шейп-файл с данными о том, сколько в нем собак, кошек и птиц, а другой - с линиями округов.

Как мне объединить два шейп-файла, чтобы показать, в каком округе находится каждый шестигранник? Я пробовал следующий запрос

создать таблицу newhex AS (выбрать * из гексов, графств, где ST_Within (hexes.geom, countties.geom));

но я получаю ошибкуОшибка при выполнении запроса пользователя: ОШИБКА: столбец "gid" указан более одного раза

Я предполагаю, что есть два столбца разницы geom, которые противоречат столбцам geom. Итак, я попробовал другой запрос с явным выбором столбца geom шестнадцатеричного бункера и названия округа с помощью:

выберите shp_ohhexsm.geom, ohcounties.name из shp_ohhexsm, ohcounties, где ST_Within (shp_ohhexsm.geom, ohcounties.geom)

Но я получаю этот странный результат

Есть ли способ просто объединить названия округов в мои шестнадцатеричные файлы без странных пробелов?


У вас есть две проблемы, которые вам нужно рассмотреть:

  1. Ваши маленькие шестиугольные многоугольники по-прежнему являются многоугольниками и могут накладываться на два полигона графства, при этом ST_Within возвращаетложный. Вероятно, вы захотите уменьшить эти шестиугольные многоугольники до точки, например центроид. Этого можно добиться с помощьюST_Centroidфункция.

  2. Само соединение основано на географическом местоположении, которое может быть решено с помощью оператора соединения следующим образом:

    ВЫБРАТЬ * ИЗ гексагонов H ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ графств C НА ST_Within (ST_Centroid (H.geom), C.geom);

    Левое внешнее соединение гарантирует, что вы не отбрасываете гексагональный многоугольник, центр тяжести которого может находиться за пределами геометрии вашего округа, возвращаяЗНАЧЕНИЕ NULLстоимость.

Последняя проблема, которую вам нужно решить, связана сСОЗДАТЬ ТАБЛИЦУ КАК…утверждение, в котором у вас не может быть двух одинаковых имен столбцов. Вам нужно перечислить свои столбцы вручную, и вам может потребоваться переименовать столбец сcol_name как новое_имясинтаксис как здесь:

ВЫБЕРИТЕ H.gid КАК gid_hex, C.gid КАК gid_county ОТ…

(предполагая тот же запрос, что и раньше, и у вас есть двагидстолбцы, и вы хотите сохранить их оба).