Consulta SQL para punto en polígono usando PostgreSQL

Tengo la siguiente tabla simple:

<code>CREATE TABLE tbl_test
(
  id serial NOT NULL,
  poly polygon NOT NULL
)
WITH (OIDS=FALSE);
</code>

Entonces trato de insertar una fila con un polígono:

<code>insert into tbl_test values(1, PolyFromText('POLYGON((0 0, 10 10, 10 0, 0 0))'))
</code>

Y ejecuta en este error:

la columna "poli" es de tipo polígono pero la expresión es de tipo geometría

Que es cojo. Así que mis primeras preguntas son:

¿Realmente tengo que echar?

De todos modos, después de fundirlo funciona. Y ahora estoy tratando de hacer una consulta simple de ST_Contains:

<code>select id, poly from tbl_test where ST_Contains(poly, Point(GeomFromText('POINT(9 2)')))
</code>

Lo que da el error:

<code>ERROR:  function st_contains(polygon, point) does not exist
LINE 1: select id, poly from tbl_test where ST_Contains(poly, Point(...
                                            ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
</code>

¿Que se supone que haga?

Los siguientes trabajos:

<code>select st_contains(st_geomfromtext('POLYGON((0 0, 10 10, 10 0, 0 0))'), st_geomfromtext('POINT(0 0)'))
</code>

Pero eso es probablemente porque ambos argumentos son de tipo Geometría. La consulta real contra los datos de la tabla no funciona.

Responder:

Doi! El problema fue que el DB que creé no estaba basado en el DB de la plantilla postgis (y por lo tanto no tenía las funciones relevantes ni las tablas de columnas de geometría, etc.). Para concluir, permítanme señalar que la forma en que PostGIS requiere que agregue cientos de funciones, filas y algunas tablas a su base de datos solo para que tenga soporte GIS es completamente escaso. Hace que la copia de seguridad del esquema sea mucho más compleja y es muy propensa a errores (no se puede permitir si llama a AddGeometryColumn y solo agrega una columna de geometría).

Respuestas a la pregunta(2)

Su respuesta a la pregunta