Креста на Чукотке). координаты хранятся в numeriс полях. на вход задаётся прямоугольная область с координатами левого нижнего угла (64, 178) и координатами правого верхнего угла (68, -177).
как неиспользуя postgis найти входит ли точка в область?
зачем без postGIS?
на данный момент нет возможности внести изменения в бд
Хм where x >= :1 and x <= :2 and y >= и тд
это не работает, когда приходят отрицательные координаты
Ну, перепишыте postgis на любом доступном ЯП.
А, вон оно чё. Ну,тогда наймите программиста.
А что вам в постгисе-то не ок?
Автору туда рано 🤦♀️
в общем случае никак потому что земля не сфера, а учет этой несферичности есть только в postgis можете поиграть с earthdistance правда, непонятно, чем вам постгис не угодил. лежит себе хлеба не просит
Так лучше доку от постгиса почитать и сберечь сил дальше, чем заново антимеридиан чинить
Ой, ладно тебе про несферичность. Тут явно человек просит всего лишь координаты посравнивать.
Возможно, имели в виду что не плоскость. Судя по вопросу автор хочет цилиндр.
земля имеет форму чемодана!
ничего. там вопросов нет, всё работает. но на конкретную бд сейчас его нет возможности поставить
Так чем вас сфера и больше меньше не устроила?
Антимеридиан у человека, не работает там больше-меньше
Вообще -- ладно. Если два заданных угла квадрата расположэны в порядке "с востока на запад и с юга на север" (т.е. для квадрата в районе 0 это будет -- сначала отрицательная координата, потом положытельная) -- то для одной компоненты координат алгоритм такой: координаты углов назовём c1 и с2, координату точки c. ( (с1 <= c2) and ((c1 <= c) and (c <= c2)) or ( (c1 > c2) and ((c <= c1) or (c >= c2)) Применить последовательно для обоих координат (шыроты и долготы), результат сложыть через and. Подразумевается, что все числа от -180 до 180. Если координаты могут быть с переполнением -- то сначала обрезать их до от -180 до 180. Если внутренняя часть квадрата определяется как-то по-другому -- например, в той стороне, где длина стороны квадрата меньшэ -- то сначала переупорядочить координаты. И да, понятно, что эта фигура -- не квадрат ни разу, но, думаю, вам и так сойдёт.
Для простоты лучшэ это как-то оформить в функцыю.
например, в ST_Intersects(geography, geography)
geography -- это те, которые учитывают несферичность? Тогда, имхо, лучшэ нет. Или это просто про сферу, а не про Евклидово?
Там, вроде, действительно какие-то нюансы между geography и geometry.
А чо нехорошэго? Испытатель получил медаль, команда тэстировщиков -- премию, боинг внёс затраты в расходы по контракту, дядя Сэм оправдал своё существование и расходы налогоплательщиков. У всех участвующих лиц всё хорошо.
а как ты это на geometry делать будешь, там просто бесконечная плоскость
А, понял, спасибо.
Да, тогда geography, конечно.
Зачем байки, если есть конкретные примеры типа MCAS?
спасибо. в качестве расширения кругозора (ну, или чисто поржать), плох ли такой вариант и чем? point(lat, lon) <@ box(point(c1.lat, c1.lon), point(c2.lat, 180)) or point(lat, lon) <@ box(point(c1.lat, -180), point(c2.lat, c2.lon))
Тем, что это правильно работает только когда шырота не переходит через 180, а долгота -- переходит. В остальных трёх случаях ("непереходит", "непереходит"; "переходит", "непереходит"; "переходит", "переходит") -- это некорректно.
Я что-то подумал -- дурь это у меня про заворот за 180 шыроты. там всё равно будет всё плохо, если кто-то захочет такое. Так что такое считать только для долготы. а первую координату можно считать не меняющейся. Соответственно рассматривать только два варианта (а не по два на каждую координату). Но вообще задачка, конечно, простенькая, но встрять по мелочи можно много с чем.
Обсуждают сегодня