Прежде всего, используйте тип географии для ваших данных вместо длинных столбцов.Почему география, а не геометрия?Поскольку вы используете SRID = 4326 и с типом географии, вам будет намного проще, если вы хотите, например, рассчитать расстояние в метрах, а затем с типом геометрии, который будет рассчитываться в градусах для этого SRID.
Чтобы создать географию с вашим латомфункция использования длинного столбца st_setsrid(st_makepoint(long,lat),4326)::geography
Ok.Теперь, отвечая на ваш вопрос о вашей фактической структуре
У меня есть список из 13000 мест (с широтой и долготой) --- в таблице: место.У меня есть список из 22000 полигонов ---- в другой таблице с именем place_polygon.Мне нужно попытаться разрешить поляризацию для тех полигонов, которым они принадлежат.
Это запрос, который я написал:
select *
from stg_place.place a
left join stg_place.place_polygon b on
ST_DWithin (st_setsrid(st_make_point(long,lat),4326),b.geom,0);
Я использовал ST_DWithin () вместо ST_Within (), потому чтов более старой версии Postgres + PostGIS (наверняка 9.6 и ниже) он гарантирует использование пространственного индекса для geoms, если он создан.