2013-02-14 2 views
0

Я работаю над системой, которая хранит информацию о широтах и ​​долготах адресов в таблице PostGIS. Чтобы хранить Lat/Long в типе данных геометрии, я использую функцию ST_GeometryFromText.PostGIS: Search Geometric Position

Например, следующий вызов функции получает геометрическое значение от указанного Lat/Long позиции:

myPointGeo = ST_GeometryFromText('POINT(40.758871 -73.985114)); 

Аналогично, преобразовать многоугольник в геометрическом представлении следующим образом:

myPolygonGeo = ST_GeometryFromText('POLYGON ((40.7566484549725 -73.9878561496734, 40.7556894646734 -73.9853026866913, 40.7545841705587 -73.9860537052154, 40.7548036054111 -73.9881458282471, 40.7559820394514 -73.9887895584106, 40.7566484549725 -73.9878561496734))') 

Я хочу чтобы узнать, находится ли выше эталонная/длинная позиция внутри этого многоугольника или нет. Для этого я использую функцию ST_Within. Но хотя myPointGeo действительно находится внутри Polygon, ST_Within возвращает false. Я использую ST_Within таким образом:

St_Within(myPointGeo,myPolygonGeo) 

Что я здесь делаю неправильно? Должен ли я использовать для этого какую-то другую функцию?

ответ

0

Запрос выглядит правильно. Он возвращает false, поскольку точка не находится в многоугольнике. Две геометрии не пересекаются.

point in polygon

+0

Спасибо, за вас ответили. Не могли бы вы сказать, какой инструмент вы используете для визуализации WKT? – Haider

+0

Конечно, я использую JTS TestBuilder, который прост, полезен и графичен. Http://gis.stackexchange.com/a/12119/1872 –