2014-09-26 5 views
0

Я тип геометрий определены и и как многоугольники и круги enteried в this.Polygon были enteried используя запрос следующего типа:Проверьте, если точка находится внутри геометрии в PostGIS из PHP

ST_GeomFromText('POLYGON$polygon') 

где $ многоугольника содержит точки.

И я вошел в круг в той же колонке, как:

ST_Buffer((ST_GeomFromText('POINT($longitude $latitude)')), $radius) 

Теперь мне нужно проверить, если заданная точка лежит внутри и геометрии.

Может кто-нибудь мне помочь?

Я попытался с помощью этого запроса:

ST_CONTAINS(shape,ST_GeomFromText('POINT($longitude $latitude)')) 

где форма мое имя столбца типа геометрии. Но это всегда верно для кругов, даже если они вне круга.

+0

Пример круга и точки были бы полезны. –

+0

Вы имеете в виду круг в POSTGIS? –

+0

Я ввел (0,0) для круга с lon, lat и rad = (85,27,5000) –

ответ

0

Рассматривая комментарии, вы используете типы геометрии с пространственной системой отсчета, которая использует единицы измерения в градусах (SRID = 4326). Создание круга с радиусом 5000 градусов - это массивный круг, который будет содержать все на земле.

Возможно, вы захотите использовать проецируемую пространственную систему отсчета с единицами измерения метров, или вы можете захотеть использовать тип географии. Вы также можете буферизировать круг с использованием типа географии, а затем преобразовать его обратно в тип геометрии.

+0

Вы можете предложить SQL для использования типа географии, а затем преобразовать его –

+0

'ST_Buffer (ST_MakePoint (85, 27) :: география, 5000) :: geometry' –

+0

Я сделал это, но когда я попытался найти центроид круга, он дает чем то, что я дал. Почему? –

Смежные вопросы