PostGIS  3.7.0dev-r@@SVN_REVISION@@

◆ geohash_point_as_int()

unsigned int geohash_point_as_int ( POINT2D pt)

Definition at line 669 of file lwalgorithm.c.

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