sql >> Databasteknik >  >> RDS >> PostgreSQL

Använd bounding box från PostGIS i vanilla Postgres-frågan

Om du vill få bbox-koordinaterna som separerade värden kanske du vill ta en titt på ST_XMax , ST_YMax , ST_XMin , ST_YMin . Följande CTE, som bäddar in din fråga, borde ge dig en idé:

WITH j (geom) AS (
 SELECT 
  ST_Extent(ST_Envelope(
   ST_Rotate(ST_Buffer(
    ST_GeomFromText('POINT(-87.6297982 41.8781136)',4326)::GEOGRAPHY,160934)::GEOMETRY,0)))
)
SELECT
    ST_XMax(geom),ST_YMax(geom),
    ST_XMin(geom),ST_YMin(geom)
FROM j


      st_xmax      |     st_ymax     |      st_xmin      |     st_ymin      
-------------------+-----------------+-------------------+------------------
 -85.6903925527536 | 43.327349928921 | -89.5681600538661 | 40.4285062983098

Sidoanteckning :Att lagra geometrivärden som siffror kan se enkelt ut, men det är knappast det bättre valet - speciellt när det handlar om polygoner! Så jag skulle verkligen föreslå att du lagrar dessa värden som geometry eller geography , vilket kan tyckas komplicerat vid en första anblick men definitivt lönar sig på lång sikt.

Det här svaret kan belysa avstånds-/inneslutningsfrågor som involverar polygoner:Getting all Buildings in range of 5 miles from specified coordinates




  1. Kan jag lägga till en UNIK begränsning till en PostgreSQL-tabell efter att den redan har skapats?

  2. Hur hämtar man mikrosekunder eller millisekunder från MySQL aktuell tid?

  3. Det går inte att analysera Oracle-tidsstämpel i C#

  4. Omdirigeringar - alternativ till <meta http-equiv='refresh' />?