@@ -1459,6 +1459,16 @@ def seed_within_polygon(self, lons, lats, number=None, **kwargs):
14591459 if number is None :
14601460 number = self .get_config ('seed:number' )
14611461
1462+ lonpoints , latpoints = self .points_within_polygon (lons , lats , number )
1463+
1464+ # Finally seed at calculated positions
1465+ self .seed_elements (lonpoints , latpoints , number = number , ** kwargs )
1466+
1467+ @staticmethod
1468+ def points_within_polygon (lons , lats , number ):
1469+ """Return a number of positions (lon, lat) within given polygon.
1470+
1471+ Helper method for seed_within_polygon"""
14621472 lons = np .asarray (lons )
14631473 lats = np .asarray (lats )
14641474 if len (lons ) < 3 :
@@ -1526,8 +1536,7 @@ def seed_within_polygon(self, lons, lats, number=None, **kwargs):
15261536 else :
15271537 break
15281538
1529- # Finally seed at calculated positions
1530- self .seed_elements (lonpoints , latpoints , number = number , ** kwargs )
1539+ return lonpoints , latpoints
15311540
15321541 @require_mode (mode = Mode .Ready )
15331542 def seed_from_wkt (self , wkts , time , ** kwargs ):
@@ -1597,13 +1606,11 @@ def seed_from_geopandas(self,
15971606 for e , (n , polygon ) in enumerate (zip (number_per_polygon , g_lonlat .geometry .explode (index_parts = False ))):
15981607 logger .info (f'Seeding { n } elements within polygon number { e + 1 } of area { areas [e ]/ 1e6 } km2' )
15991608 lons , lats = polygon .exterior .coords .xy
1600- all_lons = np .append (all_lons , lons )
1601- all_lats = np .append (all_lats , lats )
1602- self .seed_within_polygon (lons = all_lons ,
1603- lats = all_lats ,
1604- number = number ,
1605- time = time ,
1606- ** kwargs )
1609+ lonpoints , latpoints = self .points_within_polygon (lons , lats , n )
1610+ all_lons = np .append (all_lons , lonpoints )
1611+ all_lats = np .append (all_lats , latpoints )
1612+
1613+ self .seed_elements (lon = all_lons , lat = all_lats , number = number , time = time , ** kwargs )
16071614
16081615 @require_mode (mode = Mode .Ready )
16091616 def seed_letters (self , text , lon , lat , time , number , scale = 1.2 ):
0 commit comments