def _GetGridPointsWithinRadius(self):
     """ Create a dictionary of GpGridPoints within distanceMeters from a center point.
     
     Scan through the GridPoints in the bounding box region. Add all in-bound points to the dictionary.
     Associate a weight with each GridPoint that is inversely proportional to its distance from the
     center point.
     """
     radiusMeters = self.SearchBoundaryMeters
     self.gpGridPointsInBoundsDic = {}
     stepSize = MAXIMUM_RESOLUTION - self.MaxSearchResolution + 1
     for latInt in range(self.SWCornerGridPoint.LattitudeInt,self.NWCornerGridPoint.LattitudeInt + stepSize, \
                         stepSize):
         for lonInt in range (self.SWCornerGridPoint.LongitudeInt,self.SECornerGridPoint.LongitudeInt + stepSize, \
                              stepSize):
             gridPoint = GpGridPoint()
             gridPoint.InitFromIntLatLon(latInt,lonInt,self.MaxSearchResolution)
             gpPoint = GpPoint(gridPoint.LattitudeFloat,gridPoint.LongitudeFloat)
             distanceMeters = GpMath.distance(self.CenterGpPoint,gpPoint)
             if distanceMeters <= radiusMeters:
                 weight = self._WeightGridPointByDistance(distanceMeters)
                 self.gpGridPointsInBoundsDic[gridPoint.ToShortString()] = weight
    def _GetBoundingBoxCells(self):
        """ Get three GpGridPoint corners of a Bounding Box for distanceMeters from a center point.

        The corner points are set to the MaxSearchResolution
        """
        centerGpPoint = self.CenterGpPoint
        degreesOffset = GpMath.distanceMetersToDegrees(centerGpPoint, self.SearchBoundaryMeters)
        # Get bounding corner points
        swCornerF = GpPoint(centerGpPoint.lat - degreesOffset.lat, \
                           centerGpPoint.lon - degreesOffset.lon)
        self.SWCornerGridPoint = GpGridPoint()
        self.SWCornerGridPoint.InitFromGpPoint(swCornerF, self.MaxSearchResolution)

        nwCornerF = GpPoint(centerGpPoint.lat + degreesOffset.lat, \
                           centerGpPoint.lon - degreesOffset.lon)
        self.NWCornerGridPoint = GpGridPoint()
        self.NWCornerGridPoint.InitFromGpPoint(nwCornerF,self.MaxSearchResolution)

        seCornerF = GpPoint(centerGpPoint.lat - degreesOffset.lat, \
                           centerGpPoint.lon + degreesOffset.lon)
        self.SECornerGridPoint = GpGridPoint()
        self.SECornerGridPoint.InitFromGpPoint(seCornerF,self.MaxSearchResolution)
 def ComputeSearchListForMilesProximity(self,centerGpPoint, distanceMiles):
     distanceMeters = GpMath.milesToMeters(distanceMiles)
     self.ComputeSearchListForMetersProximity(centerGpPoint, distanceMeters)