PostGIS  3.2.2dev-r@@SVN_REVISION@@

◆ geohash_point_as_int()

unsigned int geohash_point_as_int ( POINT2D pt)

Definition at line 672 of file lwalgorithm.c.

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

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: