PostGIS  3.0.6dev-r@@SVN_REVISION@@

◆ geohash_point_as_int()

unsigned int geohash_point_as_int ( POINT2D pt)

Definition at line 663 of file lwalgorithm.c.

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

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: