Улей, передайте другой ряд в функцию - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть две таблицы.В первой таблице каждая строка представляет многоугольник.Во второй таблице каждая строка представляет точку.Я хочу найти каждую точку в пределах одного многоугольника.Я пытаюсь использовать 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)).Таким образом, если у меня есть способ скормить все полигоны в мультиполигоны, то я знаю, есть ли точка в одном из полигонов.

Любой комментарий будет оценен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...