Tengo dificultades con una consulta PostGIS. Estoy tratando de consultar mi base de datos ( world_countries
) utilizando un cuadro delimitador dibujado en un mapa web de Google. El objetivo de esta consulta es encontrar cualquier país que se encuentre dentro de una caja dibujada por el usuario, y devolverlo en formato GeoJSON. La consulta es la siguiente:
SELECT ST_AsGeoJSON(the_geom)
FROM
"world_countries"
WHERE
((the_geom && 'POLYGON((
-1572563.9181513 7593219.6338481,
-1709539.0728192 6507202.3361235,
-413167.07328311 6477850.5172661,
-271299.948805577549191.905562,
-1572563.9181513 7593219.6338481))'));
y el mensaje de error es:
ERROR: Operation on two geometries with different SRIDs
SQL state: XX000
El SRID de estos datos es 900913 ( srid(the_geom) = 900913
). Cuando miro estos datos en ArcGIS y los recorro, los valores del cuadro anterior coinciden con los de ArcGIS.
¿Hay alguna razón por la que una geometría poligonal requiera un SRID específico? Supuse que mis valores estaban dentro del rango.
Una nota rápida sobre mi proyección. Originalmente tenía un mapa de países del mundo en forma geométrica utilizando WGS_84. Luego usé ArcGIS para reproyectar esto en 'WGS 1984 Web Mercator.prj' basado en este hilo de rosca.
Como estoy usando la siguiente versión de PostGIS "POSTGIS="1.3.6" GEOS="3.1.1-CAPI-1.6.0" PROJ="Rel. 4.7.1, 23 September 2009" USE_STATS"
He ejecutado lo siguiente SQL
para incluir la información de proyección de Google:
INSERT into spatial_ref_sys (srid, auth_name, auth_srid, srtext, proj4text) values (900913 ,'EPSG',900913,'GEOGCS["WGS 84", DATUM["World Geodetic System
1984", SPHEROID["WGS 84", 6378137.0, 298.257223563,AUTHORITY["EPSG","7030"]], AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich", 0.0, AUTHORITY["EPSG","8901"]], NIT["degree",0.017453292519943295], AXIS["Longitude", EAST], AXIS["Latitude", NORTH],AUTHORITY["EPSG","4326"]], PROJECTION["Mercator_1SP"],PARAMETER["semi_minor", 6378137.0],
PARAMETER["latitude_of_origin",0.0], PARAMETER["central_meridian", 0.0], PARAMETER["scale_factor",1.0], PARAMETER["false_easting", 0.0], PARAMETER["false_northing", 0.0],UNIT["m", 1.0], AXIS["x", EAST], AXIS["y", NORTH],AUTHORITY["EPSG","900913"]] |','+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m
+nadgrids=@null +no_defs');