172 похожих чатов

Всем привет. есть точка на карте с координатами (66.019245, -179.355989) (залив

Креста на Чукотке). координаты хранятся в numeriс полях. на вход задаётся прямоугольная область с координатами левого нижнего угла (64, 178) и координатами правого верхнего угла (68, -177).
как неиспользуя postgis найти входит ли точка в область?

30 ответов

15 просмотров

зачем без postGIS?

Nikolaj-Rudakov Автор вопроса
central hardware
зачем без postGIS?

на данный момент нет возможности внести изменения в бд

Хм where x >= :1 and x <= :2 and y >= и тд

Nikolaj-Rudakov Автор вопроса
Konstantin Zaitsev
Хм where x >= :1 and x <= :2 and y >= и тд

это не работает, когда приходят отрицательные координаты

Ну, перепишыте postgis на любом доступном ЯП.

Nikolaj Rudakov
это не работает, когда приходят отрицательные коор...

А, вон оно чё. Ну,тогда наймите программиста.

А что вам в постгисе-то не ок?

в общем случае никак потому что земля не сфера, а учет этой несферичности есть только в postgis можете поиграть с earthdistance правда, непонятно, чем вам постгис не угодил. лежит себе хлеба не просит

Konstantin Zaitsev
Автору туда рано 🤦‍♀️

Так лучше доку от постгиса почитать и сберечь сил дальше, чем заново антимеридиан чинить

Ivan Frolkov
в общем случае никак потому что земля не сфера, а ...

Ой, ладно тебе про несферичность. Тут явно человек просит всего лишь координаты посравнивать.

Ivan Frolkov
в общем случае никак потому что земля не сфера, а ...

Возможно, имели в виду что не плоскость. Судя по вопросу автор хочет цилиндр.

Nikolaj-Rudakov Автор вопроса
Darafei Praliaskouski
А что вам в постгисе-то не ок?

ничего. там вопросов нет, всё работает. но на конкретную бд сейчас его нет возможности поставить

Nikolaj Rudakov
ничего. там вопросов нет, всё работает. но на конк...

Так чем вас сфера и больше меньше не устроила?

Konstantin Zaitsev
Так чем вас сфера и больше меньше не устроила?

Антимеридиан у человека, не работает там больше-меньше

Вообще -- ладно. Если два заданных угла квадрата расположэны в порядке "с востока на запад и с юга на север" (т.е. для квадрата в районе 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. Если внутренняя часть квадрата определяется как-то по-другому -- например, в той стороне, где длина стороны квадрата меньшэ -- то сначала переупорядочить координаты. И да, понятно, что эта фигура -- не квадрат ни разу, но, думаю, вам и так сойдёт.

Для простоты лучшэ это как-то оформить в функцыю.

Darafei Praliaskouski
например, в ST_Intersects(geography, geography)

geography -- это те, которые учитывают несферичность? Тогда, имхо, лучшэ нет. Или это просто про сферу, а не про Евклидово?

Darafei Praliaskouski
например, в ST_Intersects(geography, geography)

Там, вроде, действительно какие-то нюансы между geography и geometry.

Дмитрий Иванов
screenshot И так сойдет не всегда хорошо...

А чо нехорошэго? Испытатель получил медаль, команда тэстировщиков -- премию, боинг внёс затраты в расходы по контракту, дядя Сэм оправдал своё существование и расходы налогоплательщиков. У всех участвующих лиц всё хорошо.

Ilya Anfimov
Там, вроде, действительно какие-то нюансы между ge...

а как ты это на geometry делать будешь, там просто бесконечная плоскость

Дмитрий Иванов
screenshot И так сойдет не всегда хорошо...

Зачем байки, если есть конкретные примеры типа MCAS?

Nikolaj-Rudakov Автор вопроса
Ilya Anfimov
Вообще -- ладно. Если два заданных угла квадрата р...

спасибо. в качестве расширения кругозора (ну, или чисто поржать), плох ли такой вариант и чем? 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))

Nikolaj Rudakov
спасибо. в качестве расширения кругозора (ну, или...

Тем, что это правильно работает только когда шырота не переходит через 180, а долгота -- переходит. В остальных трёх случаях ("непереходит", "непереходит"; "переходит", "непереходит"; "переходит", "переходит") -- это некорректно.

Ilya Anfimov
Вообще -- ладно. Если два заданных угла квадрата р...

Я что-то подумал -- дурь это у меня про заворот за 180 шыроты. там всё равно будет всё плохо, если кто-то захочет такое. Так что такое считать только для долготы. а первую координату можно считать не меняющейся. Соответственно рассматривать только два варианта (а не по два на каждую координату). Но вообще задачка, конечно, простенькая, но встрять по мелочи можно много с чем.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта