3 votos

¿Cómo puedo consultar las tablas de Postgres directamente desde OpenLayers?

Tengo un mapa que se está alojando con los componentes de OpenGeo. El mapa contiene capas WMS de millones de parcelas y algunas paradas de tren. Todos nuestros datos espaciales están en PostgresSQL.

Ahora mismo la única interacción que tengo con Postgres es a través de OpenLayers/OpenGeo. Me gustaría poder enviar consultas a la base de datos mediante código (supongo que JavaScript o PHP) para poder interactuar mejor con los datos. Por ejemplo, me gustaría poder enviar un número de identificación de parcela introducido por el usuario a la base de datos para poder obtener la latitud y la longitud de la parcela, y luego usar OpenLayers para hacer zoom hasta ella. También me gustaría poder obtener una lista de los nombres de las paradas de ferrocarril y rellenar un menú desplegable con ellos, y luego hacer un zoom hasta la parada de ferrocarril cuando el usuario la seleccione en el menú desplegable. Puedo escribir las consultas que necesitaría en SQL y ejecutarlas en una consola, pero estoy perdido en cuanto a cómo utilizar PHP o JavaScript, etc para ejecutar realmente la consulta y devolver los resultados. ¿Alguien tiene alguna sugerencia o punteros en cuanto a donde puedo empezar a aprender lo que tengo que hacer.

Muchas gracias por su ayuda.

0 votos

Se podría utilizar simplemente WFS para pasar las consultas a través de filtros CQL (u OGC) y ahorrar la escritura de un nuevo servidor.

0 votos

He estado luchando un poco con conseguir que el WFS funcione, así que iba a tratar de evitarlo. Sin embargo, voy a echar otro vistazo. ¿Alguna idea de cómo hacer un ping desde el servidor Postgres directamente? Gracias.

3voto

MrLemon Puntos 151

Estoy seguro de que hay una manera más elegante de hacer esto, pero se puede utilizar un php script para consultar la base de datos, y modificar el resultado de la consulta a su necesidad (por ejemplo, la consulta de la coordenada de una parcela determinada, y los utilizan para cambiar el zoom y el centro con con yourMap.setCenter . Mi php script tiene un aspecto similar a

<?php
// Connecting, selecting database
$dbconn = pg_connect("host=localhost dbname=test user= youruser password=yourpassword")
    or die('Could not connect: ' . pg_last_error());

// Performing SQL query
$query = 'SELECT departuretime FROM trajectories';
$result = pg_query($query) or die('Query failed: ' . pg_last_error());

// Fetch all the result in an array
$out=pg_fetch_all($result);
// encode the array to JSON format so it is usable in javascript
$myarr=json_encode($out);
echo $myarr;

// Free resultset
pg_free_result($result);

// Closing connection
pg_close($dbconn);

?>

Esto devuelve un JSON que puede ser utilizado en javascript. Desde tu JS script, puedes llamarlo a través de una petición AJAX (yo uso Jquery):

var yourData;
$.ajax({
  type: 'GET',
  url: 'yourScript.php',
  dataType: 'json',
  success: function(data) {
    yourData=data;
    //and whatever you need 
  },
  data: {},
  async: false
});
console.log(yourData)

No te olvides de poner async: false para que la petición no se haga de forma asíncrona (para que pueda modificar yourdata o utilizarlo más tarde en el script)

También puede consultar uno de los talleres de OpenGeo (en particular este ), hay un ejemplo para hacer una consulta SQL a una base de datos postGIS desde un clic en el mapa.

De nuevo, puede (¿debe?) haber una solución más elegante, pero por ahora, esto me ha funcionado.

0voto

Scott Saad Puntos 247

Si no quiere codificar todo, puede utilizar QuantumGIS para solicitar datos y ver los resultados. Véase el blog de A. Graser por ejemplo.

0voto

geom Puntos 41

Una cuestión que sigue siendo interesante, incluso con los nuevos Openlayers 3/4. La forma que elijo es obtener geojson de una base de datos Postgis a través de una función que llamé, que devolvió los datos y estilo de acuerdo a mi configuración.

En Javascript defino los datos y el estilo => la función llama a un php-script vía GET para recuperar los datos de Postgis => la función estiliza los datos para renderizarlos en Openlayers 3. Los scripts completos se pueden ver en ¿Existe una manera fácil de utilizar Postgis-geojson en Openlayers 3?

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X