Страница 1 из 1

ST_Crosses всегда false

Добавлено: 21 июл 2010, 12:51
gustator
Какую бы геометрию я ему не подсовывал овтет всегда один -- f. Не понимаю почему :(

Re: ST_Crosses всегда false

Добавлено: 21 июл 2010, 14:32
gustator
Т.е. пересекаются ли полигоны, или нет -- не важно. Вот, например, делаю в тестовой базе два пересекающихся полигона. Проверяю:

Код: Выделить всё

SELECT ST_Crosses('01030000000100000006000000B88AD7038FE0E03FECF726CF2E6BD93F43A81EB9877DEF3F317AABB5B30CBEBFF38E21548FDCE33FB2346075E778E2BF11E7BD0A37C2D33FE69F499590CCDFBFA708129A1386C23F6DACA98C7E32CCBFB88AD7038FE0E03FECF726CF2E6BD93F', '01030000000100000004000000FCF7E54B38B2CF3F08E5575F408BE83F71DA9E963F15F13F6B43A411DFA3B63FB0C9F44E51B3D13F830446432618DC3FFCF7E54B38B2CF3F08E5575F408BE83F');
Ответ f. Но, при этом ST_Intersects даёт ответ t а если я уберу пересечения, то ST_Intersects даст ответ f

Код: Выделить всё

SELECT ST_Intersects('01030000000100000006000000B88AD7038FE0E03FECF726CF2E6BD93F43A81EB9877DEF3F317AABB5B30CBEBFF38E21548FDCE33FB2346075E778E2BF11E7BD0A37C2D33FE69F499590CCDFBFA708129A1386C23F6DACA98C7E32CCBFB88AD7038FE0E03FECF726CF2E6BD93F', '01030000000100000004000000FCF7E54B38B2CF3F08E5575F408BE83FB61DC5AE0B2BEB3FC9E00D0F408FE53FB0C9F44E51B3D13F830446432618DC3FFCF7E54B38B2CF3F08E5575F408BE83F');
Crosses конечно тоже даст f, но меня это не утешает))

Re: ST_Crosses всегда false

Добавлено: 21 июл 2010, 15:51
gustator
Ага, видимо что-то я не понял :0)

ST_Overlaps делает то, что я хочу. А что тогда делает ST_Crosses ? )

Re: ST_Crosses всегда false

Добавлено: 21 июл 2010, 16:49
Denis Rykov
Функция ST_Crosses не предназначена для проверки на пересечение полигонов и помимо прочих одним из условий получения True является необходимость того, чтобы размерность результата пересечения была меньше максимальной размерности сравниваемых геометрий.
http://postgis.refractions.net/docs/ST_Crosses.html