powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Postgis работа с полигоном координат ST_Containts ни чего не возвращает помогите разобрать
7 сообщений из 7, страница 1 из 1
Postgis работа с полигоном координат ST_Containts ни чего не возвращает помогите разобрать
    #38949263
AndryDl44
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго всем времени суток. У меня проблема следующего плана. Есть табличка в ней поле с геометрией точки (координаты на карте), из нее надо выбрать все записи которые попадают в определенную область. Вроде все тривиально , на деле оказалось не совсем. Перерыл весь инет , не нашел ни одного нормального примера работы с полигоном координат. Дибильные по другому назвать не могу из мануала не катят. Я делаю следующее :

SELECT * FROM table
WHERE
ST_Within(geo,ST_GeometryFromText('POLYGON((70.95 87.76,71.01 87.77,70.94 87.76, 70.85 87.74,70.95 87.76))',4326));

вроде должно работать , ан нет . Запрос ничего не возвращает, а должен. Та же конструкция но ST_Containts (зеркальной функцией) тот же результат.

вот так показывает что пересечения есть

SELECT * FROM table
WHERE
geo && ST_GeometryFromText('POLYGON((70.95 87.76,71.01 87.77,70.94 87.76, 70.85 87.74,70.95 87.76))',4326));

но это ведь не совсем то, это проверка в индексе

Еще пробовал st_covers - результат не адекватный. Не могу понять что я делаю не так. Подозреваю что полигон собирается не адекватно. ST_PolygonFromText то же пробовал результат тот же.
Просветите пожалуйста, кто сведущ куда рыть ? За ранее всем, кто поделится информацией благодарен.
Да координаты в примере от балды в базе и при выполнении реальные и не работает
...
Рейтинг: 0 / 0
Postgis работа с полигоном координат ST_Containts ни чего не возвращает помогите разобрать
    #38949435
big-trot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Какая проекция в поле geo? Может проекции разные. Надо привести к одной проекции.
...
Рейтинг: 0 / 0
Postgis работа с полигоном координат ST_Containts ни чего не возвращает помогите разобрать
    #38949448
big-trot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Оператор && - пересечения, а ST_Within Возвращает 1 (TRUE), если геометрияA находится"пространственно внутри" геометрии B.
Пересечение это не охват.
...
Рейтинг: 0 / 0
Postgis работа с полигоном координат ST_Containts ни чего не возвращает помогите разобрать
    #38949469
big-trot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для примера

SELECT ST_Within(ST_GeometryFromText('POLYGON((1 1,1 2,2 2,2 1,1 1))',4326)
,ST_GeometryFromText('POLYGON((1 1,1 2,3 3,2 1,1 1))',4326))

SELECT ST_Within(ST_GeometryFromText('POLYGON((1 1,1 2,3 3,2 1,1 1))',4326)
,ST_GeometryFromText('POLYGON((1 1,1 2,2 2,2 1,1 1))',4326))
...
Рейтинг: 0 / 0
Postgis работа с полигоном координат ST_Containts ни чего не возвращает помогите разобрать
    #38949934
AndryDl44
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
big-trotКакая проекция в поле geo? Может проекции разные. Надо привести к одной проекции.
Что такое проекция ? Я только начал в этом разбираться. Просто точки на карте хранятся в базе , сделаны методом ST_GeomFromText('POINT('||lng ||' '||lat||' )',4326) , полигон руками (динамически собирается) как показал в примере выше.
...
Рейтинг: 0 / 0
Postgis работа с полигоном координат ST_Containts ни чего не возвращает помогите разобрать
    #38949935
AndryDl44
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
big-trot,
Таких примеров в мануалах пруд пруди с 1-ками и 10-ми, мне нужен пример работы именно с координатами.
...
Рейтинг: 0 / 0
Postgis работа с полигоном координат ST_Containts ни чего не возвращает помогите разобрать
    #38951023
AndryDl44
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разобрался, все работает сложность состояла как всегда в мелочи , координаты работают не совсем так как точки на плоскости. Отсюда и все проблемы, точки тупо не попадали внутрь полигона, поменял границы появились значения. Может кому пригодится , рабочий вариант как геометрией так и с географией:

-- геометрия
select * from geo_table
where
st_within(geom,st_geometryfromtext('POLYGON((41 58,41.016 57.77,40.94 57.763, 40.85 57.743,41 58',4326))

--география
select * from geo_table
where
ST_CoveredBy(geog,ST_GeogFromText('SRID=4326;POLYGON((41 58,41.016 57.77,40.94 57.763, 40.85 57.743,41 58))'));

--Поиск по удаленности от точки
SELECT * FROM geo_table
WHERE ST_DWithin(
geog,
ST_GeogFromText('SRID=4326;POINT(41.016 57.77)'),
$radius_meters
);

geog - поле geography в таблице
geom- поле geometry в таблице
Как создавать поля написано в мануалах причем доходчиво.
Спасибо единственному откликнувшемуся, хоть и не помог, но попытался.
Думаю тема закрыта.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Postgis работа с полигоном координат ST_Containts ни чего не возвращает помогите разобрать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]