@@ -846,3 +846,31 @@ def test_matching_gdf_from_geoms(edge_only):
846
846
gdf ["b" ] = "abc"
847
847
actual = snkit .network .matching_gdf_from_geoms (gdf , geoms )
848
848
assert_frame_equal (actual , expected )
849
+
850
+
851
+ def test_nearest ():
852
+ a = Point ((0 , 0 ))
853
+ b = Point ((0 , 2 ))
854
+ c = Point ((0 , 1 ))
855
+ d = Point ((1 , 1 ))
856
+ ab = LineString ([a , b ])
857
+ cd = LineString ([c , d ])
858
+ gdf = GeoDataFrame (geometry = [ab , cd ])
859
+
860
+ # default RangeIndex
861
+ actual = snkit .network .nearest (Point (0.1 , - 0.1 ), gdf )
862
+ assert actual .geometry == LineString ([Point (0 , 0 ), Point (0 , 2 )])
863
+
864
+ # set integer index, not running from 0..n
865
+ gdf ["edge_id" ] = [1 , 4 ]
866
+ gdf .set_index ("edge_id" , inplace = True )
867
+ actual = snkit .network .nearest (Point (1.0 , 0.9 ), gdf )
868
+ assert actual .name == 4
869
+ assert actual .geometry == LineString ([Point (0 , 1 ), Point (1 , 1 )])
870
+
871
+ # set a non-integer index
872
+ gdf ["edge_id" ] = ["ab" , "cd" ]
873
+ gdf .set_index ("edge_id" , inplace = True )
874
+ actual = snkit .network .nearest (Point (1.1 , 1.1 ), gdf )
875
+ assert actual .name == "cd"
876
+ assert actual .geometry == LineString ([Point (0 , 1 ), Point (1 , 1 )])
0 commit comments