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}
References POINT2D::x, and POINT2D::y.
Referenced by circ_node_compare(), and test_geohash_point_as_int().