PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Berechnen der Entfernung zwischen einem GPS-Standort und einem Postgis-Geografiewert mithilfe einer Funktion?

Hasura hat Unterstützung für PostGIS in ihr GraphQL-Schema integriert. Da Ihr Feld bereits vom Typ geography ist , benötigen Sie die Funktion nicht.

In Hasura müssen Sie die Beziehung zwischen den offers erstellen und address Tabellen, und die GraphQL-Abfrage sollte in etwa so aussehen:

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

Der geografische Typ in Hasura erwartet, dass der Wert in GEOJSON ist Format. So funktioniert Ihre Variable $point sollte so aussehen:

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

Beim Einfügen von Werten (Mutation) wird derselbe Variablentyp (GEOJSON) erwartet.