I have created the following function that measures the distance from one point in a GDF to all points in another GDF and returns a table back with the shortest distance for each point. It works well for one point however I neglected the fact I have a table of 4000 points and so it takes 10 mins. I have ran it in PostGIS and can get it down to less than a second. Is there a way to do this in Python that could match the PostGIS speed?
def get_distance_to(gdf_in, aoi_df, aoi): dist_df_list = list() for row in range(len(gdf_in)): single_row = gdf_in.iloc[row] distances = aoi_df.geometry.distance(single_row.geometry) dist_list = distances.to_list() closest_aoi = min(dist_list) single_row["dist_to_"+aoi] = closest_aoi df = single_row.to_frame().T dist_df_list.append(df) completed_distances = pd.concat(dist_df_list, ignore_index=True, sort=False) return completed_distances
my input tables looks something like this
and the output table looks like this