PostGIS  3.3.9dev-r@@SVN_REVISION@@

◆ geohash_point_as_int()

unsigned int geohash_point_as_int ( POINT2D pt)

Definition at line 664 of file lwalgorithm.c.

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

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: