PostGIS  3.4.0dev-r@@SVN_REVISION@@

◆ geohash_point_as_int()

unsigned int geohash_point_as_int ( POINT2D pt)

Definition at line 661 of file lwalgorithm.c.

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