PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

PostgreSQL:pokaż podróże w obrębie ramki ograniczającej

Ponieważ twoje współrzędne są przechowywane w kolumnach x,y, musisz użyć ST_MakePoint aby stworzyć odpowiednią geometrię. Następnie możesz utworzyć BBOX za pomocą funkcji ST_MakeEnvelope i sprawdź, czy współrzędne początkowe i końcowe znajdują się w BBOX, używając ST_Contains , np.

WITH bbox(geom) AS (
  VALUES (ST_MakeEnvelope(-8.68494,41.24895,-8.47569,41.11591,4326))
)
SELECT * FROM trips,bbox
WHERE 
  ST_Contains(bbox.geom,ST_SetSRID(ST_MakePoint(lon_start,lat_start),4326)) AND
  ST_Contains(bbox.geom,ST_SetSRID(ST_MakePoint(lon_end,lat_end),4326));

Uwaga: CTE nie jest tak naprawdę konieczne i znajduje się w zapytaniu tylko w celach ilustracyjnych. Możesz powtórzyć ST_MakeEnvelope funkcja na obu warunkach w WHERE klauzula zamiast bbox.geom . To zapytanie zakłada również SRS WGS84 (4326).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MultipleActiveResultSets dla modelu danych encji postgresql i ado.net

  2. Błąd składni Postgresa przy lub w pobliżu IF

  3. Dodawanie X godzin - @Query - Spring Data JPA

  4. Jak mogę zwrócić '0' z zapytania w pgsql, jeśli wiersz nie istnieje?

  5. Jak wymienić stół w Postgresie?