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])
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)