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

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

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

30 ответов

6 просмотров

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

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

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

А чем вам питонисты не угодили?😂
.
79
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
32
Hello. Could you please help me with finding all coordinates within a radius using a spatial index, given that I have a table with coordinates? SET @lng = 37.57925; SET @lat ...
Rinchin G
7
Язык Си можно выучить за день? По книжке ANSI C на 230 страниц
Vincent Vegan
29
Не получается у меня либу Zstd статически слинковать, вылазят какие-то AV Вроде example у них не сложный есть, вроде всё делаю как там... но не выходит чего-то Вопрос - если ...
notme
4
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Привет, запускаю werf в dind в k8s, получаю ошибку на этапе build/beforeSetup: /.werf/stapel/embedded/bin/bash: /.werf/scripts/5898bdfe5214357d3706b879cc8d3d78460fb379607cbd...
florius0
7
Всех приветствую. Направьте меня в нужное русло. Постепенно переписываю проект с delphi на lazarus. Приложение - обычный windows/linux клиент для бд firebird. Тут все хорошо. ...
Mishutka
8
Привет всем, подскажите, есть сайт на ево 1.4, надо сделать его мультиязычным, структура документов одинаковой останется, чисто тексты разные, свои тв для каждого языка, поддо...
Oleg
7
@rouse_79 https://github.com/AlexanderBagel/FWZip/blob/8c6882a31ffaa9a23e66e22eaa5b1f7ebfcad43c/zlib_external.pas#L393 Почему Си-шная функция memset, параметр отвечающий за з...
notme
8
Карта сайта