PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Calcolare la distanza tra una posizione GPS e il valore geografico di Postgis utilizzando una funzione?

Hasura ha integrato il supporto per PostGIS nel proprio schema GraphQL. Poiché il tuo campo è già di tipo geography , non hai bisogno della funzione.

In Hasura devi creare la relazione tra le offers e address tabelle e la query GraphQL dovrebbe essere qualcosa del tipo:

query nearby_offers($point: geography!) {
  offers(where: {address: {location: {_st_d_within: {distance: 200000, from: $point}}}}) {
    id
    offer_fields
    address {
      location
    }
  }
}

Il tipo di geografia in Hasura prevede che il valore sia in GEOJSON formato. Ecco come funziona la tua variabile $point dovrebbe assomigliare a:

{
  "point": {
    "type" : "Point", 
    "coordinates": [longitude, latitude]
  }
}

Lo stesso tipo di variabile (GEOJSON) è prevista per l'inserimento di valori (mutazione).