PostGIS  3.6.1dev-r@@SVN_REVISION@@

◆ geohash_point_as_int()

unsigned int geohash_point_as_int ( POINT2D pt)

Definition at line 679 of file lwalgorithm.c.

680 {
681  int is_even=1;
682  double lat[2], lon[2], mid;
683  int bit=32;
684  unsigned int ch = 0;
685 
686  double longitude = pt->x;
687  double latitude = pt->y;
688 
689  lat[0] = -90.0;
690  lat[1] = 90.0;
691  lon[0] = -180.0;
692  lon[1] = 180.0;
693 
694  while (--bit >= 0)
695  {
696  if (is_even)
697  {
698  mid = (lon[0] + lon[1]) / 2;
699  if (longitude > mid)
700  {
701  ch |= 0x0001u << bit;
702  lon[0] = mid;
703  }
704  else
705  {
706  lon[1] = mid;
707  }
708  }
709  else
710  {
711  mid = (lat[0] + lat[1]) / 2;
712  if (latitude > mid)
713  {
714  ch |= 0x0001 << bit;
715  lat[0] = mid;
716  }
717  else
718  {
719  lat[1] = mid;
720  }
721  }
722 
723  is_even = !is_even;
724  }
725  return ch;
726 }
double y
Definition: liblwgeom.h:390
double x
Definition: liblwgeom.h:390

References POINT2D::x, and POINT2D::y.

Referenced by circ_node_compare(), and test_geohash_point_as_int().

Here is the caller graph for this function: