Ошибка Postgis при выборе всех пересечений многоугольника

я могу получить весь многоугольник на пересечении этого: -7.9245860488441 -37.122384500713, -7.9245860488441 -37.11904223938, -7.9233955716106 -37.1187601948

SELECT * 
FROM propriedades 
WHERE ST_Intersects(
    ST_GeomFromText(location::geometry),
    ST_GeomFromText('POLYGON(-7.9245860488441 -37.122384500713,-7.9245860488441 -37.11904223938,-7.9233955716106 -37.1187601948)'));

propriedades - расположение моего стола - это столбец, на котором сохранены полигоны географии

возвращенная ошибка

ОШИБКА: ошибка синтаксического анализа - неверная геометрия. ПОДСКАЗКА: "POLYGON (-7.9245860488441" ‹- ошибка синтаксического анализа в позиции 25 внутри геометрии

*** Ошибка ** *

ОШИБКА: ошибка синтаксического анализа - недопустимая геометрия Состояние SQL: XX000 Подсказка: "POLYGON (-7.9245860488441" ‹- ошибка синтаксического анализа в позиции 25 внутри геометрии

решено, я использовал географию, без геометрии:

SELECT * 
FROM propriedades 
WHERE ST_Intersects(
    location,
    'POLYGON((-7.9239281216632 -37.118491021708,-7.9239281216632 -37.116096663161,-7.9240937813677 -37.116105295265,-7.9241591799314 -37.116171875421,-7.9246636046819 -37.116271405188,-7.9259677455811 -37.118572530098,-7.9256079206171 -37.118728486796,-7.9243335012771 -37.118675962065,-7.9243194973485 -37.11849254918,-7.9242705964918 -37.118491021708,-7.9239281216632 -37.118491021708))'
)

но у меня другая проблема, я хочу пересечения> 50 метров

как это http://slimber.com/gallery/pictures2/23/235563/polygons.jpg


person Ciro Vargas    schedule 19.09.2012    source источник


Ответы (1)


Есть две проблемы с WKT многоугольника, поэтому он не может быть проанализирован. Для многоугольников нужны круглые скобки с двумя глубинами, а последняя координата должна совпадать с первой координатой, чтобы получилось замкнутое линейное кольцо (т. Е. треугольники требуют четырех точек). WKT должен выглядеть так:

POLYGON((-7.9245860488441 -37.122384500713, -7.9245860488441 -37.11904223938,
         -7.9233955716106 -37.1187601948, -7.9245860488441 -37.122384500713))

Кроме того, ST_GeomFromText(location::geometry) действительно не нужен, поскольку ::geometry уже является оператором преобразования PostgreSQL в geometry. Если это тип geography, тогда location::geometry должно быть достаточно, чтобы преобразовать его как geometry.

person Mike T    schedule 19.09.2012