|
|
|
Postgis работа с полигоном координат ST_Containts ни чего не возвращает помогите разобрать
|
|||
|---|---|---|---|
|
#18+
Доброго всем времени суток. У меня проблема следующего плана. Есть табличка в ней поле с геометрией точки (координаты на карте), из нее надо выбрать все записи которые попадают в определенную область. Вроде все тривиально , на деле оказалось не совсем. Перерыл весь инет , не нашел ни одного нормального примера работы с полигоном координат. Дибильные по другому назвать не могу из мануала не катят. Я делаю следующее : 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 то же пробовал результат тот же. Просветите пожалуйста, кто сведущ куда рыть ? За ранее всем, кто поделится информацией благодарен. Да координаты в примере от балды в базе и при выполнении реальные и не работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 09:30 |
|
||
|
Postgis работа с полигоном координат ST_Containts ни чего не возвращает помогите разобрать
|
|||
|---|---|---|---|
|
#18+
Какая проекция в поле geo? Может проекции разные. Надо привести к одной проекции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 11:14 |
|
||
|
Postgis работа с полигоном координат ST_Containts ни чего не возвращает помогите разобрать
|
|||
|---|---|---|---|
|
#18+
Оператор && - пересечения, а ST_Within Возвращает 1 (TRUE), если геометрияA находится"пространственно внутри" геометрии B. Пересечение это не охват. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 11:20 |
|
||
|
Postgis работа с полигоном координат ST_Containts ни чего не возвращает помогите разобрать
|
|||
|---|---|---|---|
|
#18+
Для примера 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)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 11:31 |
|
||
|
Postgis работа с полигоном координат ST_Containts ни чего не возвращает помогите разобрать
|
|||
|---|---|---|---|
|
#18+
big-trotКакая проекция в поле geo? Может проекции разные. Надо привести к одной проекции. Что такое проекция ? Я только начал в этом разбираться. Просто точки на карте хранятся в базе , сделаны методом ST_GeomFromText('POINT('||lng ||' '||lat||' )',4326) , полигон руками (динамически собирается) как показал в примере выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 16:45 |
|
||
|
Postgis работа с полигоном координат ST_Containts ни чего не возвращает помогите разобрать
|
|||
|---|---|---|---|
|
#18+
big-trot, Таких примеров в мануалах пруд пруди с 1-ками и 10-ми, мне нужен пример работы именно с координатами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 16:47 |
|
||
|
Postgis работа с полигоном координат ST_Containts ни чего не возвращает помогите разобрать
|
|||
|---|---|---|---|
|
#18+
Разобрался, все работает сложность состояла как всегда в мелочи , координаты работают не совсем так как точки на плоскости. Отсюда и все проблемы, точки тупо не попадали внутрь полигона, поменял границы появились значения. Может кому пригодится , рабочий вариант как геометрией так и с географией: -- геометрия 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 в таблице Как создавать поля написано в мануалах причем доходчиво. Спасибо единственному откликнувшемуся, хоть и не помог, но попытался. Думаю тема закрыта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2015, 11:10 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=111&tid=1998013]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 249ms |
| total: | 384ms |

| 0 / 0 |
