Estoy trabajando en un sistema que almacena información de latitud / longitud de direcciones en una tabla PostGIS. Para almacenar Lat / Long en el tipo de datos de geometría, estoy usando la función ST_GeometryFromText.
Por ejemplo, la siguiente llamada de función obtiene el valor geométrico contra la posición Long / Lat especificada:
myPointGeo = ST_GeometryFromText('POINT(40.758871 -73.985114)');
Del mismo modo, convierto un polígono en representación geométrica de la siguiente manera:
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 ))')
Quiero saber si la posición anterior / lateral anterior reside en este Polígono o no. Para esto estoy usando la función ST_Within. Pero aunque 'myPointGeo' realmente reside dentro del Polígono, ST_Within está devolviendo falso. Estoy usando ST_Within de esta manera:
St_Within(myPointGeo,myPolygonGeo)
¿Qué estoy haciendo mal aquí? ¿Debo usar alguna otra función para este propósito?
Respuestas:
Creo que ST_Intersects funcionaría mejor, devuelve un verdadero o falso sobre si dos geometrías se cruzan o no. Entonces querrás hacer algo como:
o puedes hacer:
fuente