def find_nearest_station(self, lon, lat, return_distance=False): """ finds the nearest station available in downloaded data Parameters ---------- lon : float Longitude of point lat : float Latitude of point return_distance : boolean, optional if True also distance is returned Returns ------- station : ISMN_station ISMN_station object distance : float, optional distance to station in meters, measured in cartesian coordinates and not on a great circle. Should be OK for small distances """ if self.kdTree is None: self.kdTree = NN.findGeoNN( self.metadata['longitude'], self.metadata['latitude']) d, index = self.kdTree.find_nearest_index(lon, lat) all_index = np.where( self.metadata['station'] == self.metadata['station'][index]) if return_distance: return ISMN_station(self.metadata[all_index]), d else: return ISMN_station(self.metadata[all_index])
def _setup_kdtree(self): """ Setup kdTree """ if self.kdTree is None: self.kdTree = NN.findGeoNN(self.activearrlon, self.activearrlat, self.geodatum) self.kdTree._build_kdtree()