Seeding from shapefile

from datetime import datetime
import geopandas as gpd
from opendrift import test_data_folder
from opendrift.models.oceandrift import OceanDrift


o = OceanDrift(loglevel=20)  # Set loglevel to 0 for debug information
17:12:52 INFO    opendrift:513: OpenDriftSimulation initialised (version 1.14.2 / v1.14.2-88-gf09b7bd)

Seed particles within all polygons from shapefile

o.seed_from_shapefile(test_data_folder +
                      'shapefile_spawning_areas/Torsk.shp',
                      number=1000, time=datetime.now())
17:12:52 INFO    opendrift.models.basemodel.environment:206: Adding a global landmask from GSHHG
17:12:56 INFO    opendrift.models.basemodel.environment:229: Fallback values will be used for the following variables which have no readers:
17:12:56 INFO    opendrift.models.basemodel.environment:232:    x_sea_water_velocity: 0.000000
17:12:56 INFO    opendrift.models.basemodel.environment:232:    y_sea_water_velocity: 0.000000
17:12:56 INFO    opendrift.models.basemodel.environment:232:    sea_surface_height: 0.000000
17:12:56 INFO    opendrift.models.basemodel.environment:232:    x_wind: 0.000000
17:12:56 INFO    opendrift.models.basemodel.environment:232:    y_wind: 0.000000
17:12:56 INFO    opendrift.models.basemodel.environment:232:    upward_sea_water_velocity: 0.000000
17:12:56 INFO    opendrift.models.basemodel.environment:232:    ocean_vertical_diffusivity: 0.000000
17:12:56 INFO    opendrift.models.basemodel.environment:232:    sea_surface_wave_significant_height: 0.000000
17:12:56 INFO    opendrift.models.basemodel.environment:232:    sea_surface_wave_stokes_drift_x_velocity: 0.000000
17:12:56 INFO    opendrift.models.basemodel.environment:232:    sea_surface_wave_stokes_drift_y_velocity: 0.000000
17:12:56 INFO    opendrift.models.basemodel.environment:232:    ocean_mixed_layer_thickness: 50.000000
17:12:56 INFO    opendrift.models.basemodel.environment:232:    sea_floor_depth_below_sea_level: 10000.000000
17:12:56 INFO    opendrift:1517: Seeding 1000 elements within 8 polygons
17:12:56 INFO    opendrift:1529: Seeding 88 elements within polygon number 1 of area 16914.1561363245 km2
17:12:56 INFO    opendrift:1529: Seeding 114 elements within polygon number 2 of area 22025.651607662567 km2
17:12:56 INFO    opendrift:1529: Seeding 613 elements within polygon number 3 of area 118549.4287716422 km2
17:12:56 INFO    opendrift:1529: Seeding 18 elements within polygon number 4 of area 3429.86024645089 km2
17:12:56 INFO    opendrift:1529: Seeding 23 elements within polygon number 5 of area 4460.511714037541 km2
17:12:56 INFO    opendrift:1529: Seeding 81 elements within polygon number 6 of area 15582.701473774634 km2
17:12:56 INFO    opendrift:1529: Seeding 24 elements within polygon number 7 of area 4696.037566369465 km2
17:12:56 INFO    opendrift:1529: Seeding 39 elements within polygon number 8 of area 7617.026431077248 km2

Alternative by using GeoPandas and selecting a subset of two polygons

gdf = gpd.read_file(test_data_folder + 'shapefile_spawning_areas/Torsk.shp')
gdf = gdf.iloc[[1, 5]]
o.seed_from_geopandas(gdf, number=2000, time=datetime.now())

o.plot(fast=True)
OpenDrift - OceanDrift 3000 elements seeded at 2025-07-11 17:12 UTC
17:12:56 INFO    opendrift:1517: Seeding 2000 elements within 2 polygons
17:12:56 INFO    opendrift:1529: Seeding 1171 elements within polygon number 1 of area 22025.651607662567 km2
17:12:56 INFO    opendrift:1529: Seeding 829 elements within polygon number 2 of area 15582.701473774634 km2
17:12:56 WARNING opendrift:2391: Plotting fast. This will make your plots less accurate.

(<GeoAxes: title={'center': 'OpenDrift - OceanDrift\n3000 elements seeded at 2025-07-11 17:12 UTC'}>, <Figure size 719.781x1100 with 1 Axes>)

Total running time of the script: (0 minutes 12.600 seconds)

Gallery generated by Sphinx-Gallery