def test_exceptions_return_points_in_polygon(self):
		#If the input s correct it must create a list
		for i in range(len(self.valid_input)):
			assert isinstance(gu.return_points_in_polygon(zip(self.reference1, self.reference2),self.valid_input[i]), list)

		#If it is incorrect(type1)it must raise an exception
		for i in range(len(self.invalid_input)):
			self.assertRaises(TypeError, gu.return_points_in_polygon, self.reference1, self.invalid_input[i])

		#Similarly for type 2			
		for i in range(len(self.invalid_input2)):
			self.assertRaises(TypeError, gu.return_points_in_polygon, self.reference1, self.invalid_input2[i])
Exemple #2
0
    def _get_data_crime_circle(self,fullDataCrime):
        """ Receives a non-filtered DF
        Computes the database of the points inside the circle by filtering them by distance 
        :param fullDataCrime
        """        
        #Getting boundaries
        boundaries = self._get_circle_boundaries()

        districts = fullDataCrime['District'].unique()        
        
        if len(districts)== 0:
            raise ValueError("There are no districts in data")        

        district_polygons = {dist: du.get_polygon(dist) for dist in districts}

        districts_to_search = []
        
        #Filtering districts where the circle has values, to optimize time
        for bound in boundaries:
            for dist in district_polygons.keys():
                if dist not in districts_to_search: 
                    if gu.return_points_in_polygon([bound],district_polygons[dist]):
                        districts_to_search.append(dist)

        dataframe = fullDataCrime[fullDataCrime['District'].isin(districts_to_search)]

        #Getting the points inside of circle by distance (less equal than 1 mile)
        index_of_entries_in_circle = []

        for entry in dataframe.index:
            lat, lon = dataframe.ix[entry].Latitude, dataframe.ix[entry].Longitude

            if gu.calculate_distance_between_points(self.address.lat, self.address.lon, lat, lon) <= 1:
                index_of_entries_in_circle.append(entry)

        return dataframe.ix[index_of_entries_in_circle]
	def text_output_return_points_in_polygon(self):
		#Validates that it retunrs a list
		assert isinstance(gu.return_points_in_polygon(self.reference1,valid_input[0]), list)