5 votos

Promoción de la radio en millas alrededor de los lugares de uso de PostGIS

Tengan paciencia conmigo que soy nuevo en PostGIS y SIG en general. Yo tampoco sé el dominio lo suficientemente bien como para crear un buen título para este post!!! Aquí es lo que estoy tratando de lograr:

He Lugares en mi sistema. Cada Lugar tiene una promoción de radio en millas. Dado un punto arbitrario (lat/lng), quiero encontrar a todos los Lugares que abarcan el punto arbitrario en su promoción de la radio.

He aquí lo que los lugares de las tablas de aspecto:

venues
id | name | latitude | longitude | promo_radius

Es esto posible con PostGIS? Hay recursos que me ayudan a comprender mejor la consulta?

Gracias!

3voto

Adam Puntos 343

No dar ningún tipo de información acerca de las tablas. Suponiendo que el punto no está en una mesa y lugares tiene los campos id, radio, geom...

select
   venue.id
from
   venue
where
   st_dwithin(
            st_geographyfromtext( 'POINT(' || venues.longitude || ' ' || venues.latitude || ')'),
            'POINT(0 0)'::geography,
            venues.radius * 1609.344)

Este pasa a través de los lugares de la tabla y

  • lee el punto de geometría almacenados para el lugar en varias sedes.geom,
  • y se comprueba si el PUNTO(0 0) está dentro de los locales.radio convertir de millas a metros de la sede.

Devuelve el lugar.id si se cruzan.

Podría ser una forma más elegante para la construcción de la geografía de la long/lat.

Recomiendo jugar con SpatiaLite para aprender acerca de la geometría básica de las operaciones. Es más fácil de configurar y empezar de PostGIS. Tienen un bonito tutorial, demasiado. La mayoría de las funciones son las mismas que si sólo un nombre diferente.

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