sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL:reizen binnen een selectiekader weergeven

Aangezien uw coördinaten zijn opgeslagen in x,y-kolommen, moet u ST_MakePoint gebruiken om een ​​goede geometrie te creëren. Daarna kunt u een BBOX maken met behulp van de functie ST_MakeEnvelope en controleer of de begin- en eindcoördinaten zich in de BBOX bevinden met ST_Contains , bijv.

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));

Opmerking: de CTE is niet echt nodig en staat alleen ter illustratie in de query. U kunt de ST_MakeEnvelope . herhalen functie op beide voorwaarden in de WHERE clausule in plaats van bbox.geom . Deze zoekopdracht gaat ook uit van de SRS WGS84 (4326).



  1. Activex ListView Control-zelfstudie-01

  2. Hoe gegevens twee keer te bestellen. Maar maak de eerste bestellingBy ineffectief

  3. Het Halloween-probleem – Deel 1

  4. Envers + MYSQL + List<String> =SQLSyntaxErrorException:Opgegeven sleutel was te lang;