У меня есть две таблицы.В первой таблице каждая строка представляет многоугольник.Во второй таблице каждая строка представляет точку.Я хочу найти каждую точку в пределах одного многоугольника.Я пытаюсь использовать ST_Contains, ST_MultiPolygon и ST_Point в улье.Я думаю, что есть способ передать все строки в ST_MultiPolygon, но не уверен, как это сделать.Ниже приведены мои тестовые данные.
pid | shape
1 | [2,0,3,0,3,1,2,1]
2 | [0,0,1,0,1,1,0,1]
Это таблица полигонов.
pid | x | y
1 | 0.5 | 0.5
2 | 2.1 | 0.5
3 | 1.5 | 0.5
Это таблица баллов
Я хочу получитьрезультат как
pid | is_in
1 | true
2 | true
3 | false
Вот способ, которым я думаю, чтобы решить эту проблему.я хочу определить, есть ли точка в одном из полигонов, хранящихся в улье.Предположим, у меня есть 2 полигона [2,0,3,0,3,1,2,1] и [0,0,1,0,1,1,0,1], на самом деле они действительно есть [(2,0), (3,0), (3,1), (2,1)] и [(0,0), (1,0), (1,1), (0,1)].Причина, по которой я сохранил этот странный способ, заключается в том, что ST_MultiPolygon принимает этот тип формата в качестве параметра, например ST_MultiPolygon (array (2,0,3,0,3,1,2,1)).Объединяя ST_MultiPolygon с ST_Contains и st_point, я могу получить логический результат, который указывает, находится ли точка в MultiPolygon.ST_MultiPolygon может даже принимать несколько массивов, таких как ST_MultiPolygon (массив (2,0,3,0,3,1,2,1), массив (0,0,1,0,1,1,0,1)).Таким образом, если у меня есть способ скормить все полигоны в мультиполигоны, то я знаю, есть ли точка в одном из полигонов.
Любой комментарий будет оценен.