Seeding from shapefile

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


o = OceanDrift(loglevel=20)  # Set loglevel to 0 for debug information
15:24:23 INFO    opendrift:509: OpenDriftSimulation initialised (version 1.13.1 / v1.13.1-82-gbc545aa)

Seed particles within all polygons from shapefile

o.seed_from_shapefile(o.test_data_folder() +
                      'shapefile_spawning_areas/Torsk.shp',
                      number=1000, time=datetime.utcnow())
/root/project/examples/example_seed_from_shapefile.py:18: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).
  number=1000, time=datetime.utcnow())
15:24:23 INFO    opendrift.models.basemodel.environment:206: Adding a global landmask from GSHHG
15:24:28 INFO    opendrift.models.basemodel.environment:229: Fallback values will be used for the following variables which have no readers:
15:24:28 INFO    opendrift.models.basemodel.environment:232:    x_sea_water_velocity: 0.000000
15:24:28 INFO    opendrift.models.basemodel.environment:232:    y_sea_water_velocity: 0.000000
15:24:28 INFO    opendrift.models.basemodel.environment:232:    sea_surface_height: 0.000000
15:24:28 INFO    opendrift.models.basemodel.environment:232:    x_wind: 0.000000
15:24:28 INFO    opendrift.models.basemodel.environment:232:    y_wind: 0.000000
15:24:28 INFO    opendrift.models.basemodel.environment:232:    upward_sea_water_velocity: 0.000000
15:24:28 INFO    opendrift.models.basemodel.environment:232:    ocean_vertical_diffusivity: 0.000000
15:24:28 INFO    opendrift.models.basemodel.environment:232:    sea_surface_wave_significant_height: 0.000000
15:24:28 INFO    opendrift.models.basemodel.environment:232:    sea_surface_wave_stokes_drift_x_velocity: 0.000000
15:24:28 INFO    opendrift.models.basemodel.environment:232:    sea_surface_wave_stokes_drift_y_velocity: 0.000000
15:24:28 INFO    opendrift.models.basemodel.environment:232:    sea_surface_wave_period_at_variance_spectral_density_maximum: 0.000000
15:24:28 INFO    opendrift.models.basemodel.environment:232:    sea_surface_wave_mean_period_from_variance_spectral_density_second_frequency_moment: 0.000000
15:24:28 INFO    opendrift.models.basemodel.environment:232:    sea_surface_swell_wave_to_direction: 0.000000
15:24:28 INFO    opendrift.models.basemodel.environment:232:    sea_surface_swell_wave_peak_period_from_variance_spectral_density: 0.000000
15:24:28 INFO    opendrift.models.basemodel.environment:232:    sea_surface_swell_wave_significant_height: 0.000000
15:24:28 INFO    opendrift.models.basemodel.environment:232:    sea_surface_wind_wave_to_direction: 0.000000
15:24:28 INFO    opendrift.models.basemodel.environment:232:    sea_surface_wind_wave_mean_period: 0.000000
15:24:28 INFO    opendrift.models.basemodel.environment:232:    sea_surface_wind_wave_significant_height: 0.000000
15:24:28 INFO    opendrift.models.basemodel.environment:232:    surface_downward_x_stress: 0.000000
15:24:28 INFO    opendrift.models.basemodel.environment:232:    surface_downward_y_stress: 0.000000
15:24:28 INFO    opendrift.models.basemodel.environment:232:    turbulent_kinetic_energy: 0.000000
15:24:28 INFO    opendrift.models.basemodel.environment:232:    turbulent_generic_length_scale: 0.000000
15:24:28 INFO    opendrift.models.basemodel.environment:232:    ocean_mixed_layer_thickness: 50.000000
15:24:28 INFO    opendrift.models.basemodel.environment:232:    sea_floor_depth_below_sea_level: 10000.000000
15:24:28 INFO    opendrift:1491: Seeding 1000 elements within 8 polygons
15:24:28 INFO    opendrift:1498: Seeding 88 elements within polygon number 1 of area 16914.1561363245 km2
15:24:28 INFO    opendrift:1498: Seeding 114 elements within polygon number 2 of area 22025.651607662567 km2
15:24:28 INFO    opendrift:1498: Seeding 613 elements within polygon number 3 of area 118549.4287716422 km2
15:24:28 INFO    opendrift:1498: Seeding 18 elements within polygon number 4 of area 3429.86024645089 km2
15:24:28 INFO    opendrift:1498: Seeding 23 elements within polygon number 5 of area 4460.511714037541 km2
15:24:28 INFO    opendrift:1498: Seeding 81 elements within polygon number 6 of area 15582.701473774634 km2
15:24:28 INFO    opendrift:1498: Seeding 24 elements within polygon number 7 of area 4696.037566369465 km2
15:24:28 INFO    opendrift:1498: 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(o.test_data_folder() + 'shapefile_spawning_areas/Torsk.shp')
gdf = gdf.iloc[[1, 5]]
o.seed_from_geopandas(gdf, number=2000, time=datetime.utcnow())

o.plot(fast=True)
OpenDrift - OceanDrift 3000 elements seeded at 2025-05-09 15:24 UTC
/root/project/examples/example_seed_from_shapefile.py:25: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).
  o.seed_from_geopandas(gdf, number=2000, time=datetime.utcnow())
15:24:28 INFO    opendrift:1491: Seeding 2000 elements within 2 polygons
15:24:28 INFO    opendrift:1498: Seeding 1171 elements within polygon number 1 of area 22025.651607662567 km2
15:24:28 INFO    opendrift:1498: Seeding 829 elements within polygon number 2 of area 15582.701473774634 km2
15:24:28 WARNING opendrift:2446: Plotting fast. This will make your plots less accurate.

(<GeoAxes: title={'center': 'OpenDrift - OceanDrift\n3000 elements seeded at 2025-05-09 15:24 UTC'}>, <Figure size 719.781x1100 with 1 Axes>)

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

Gallery generated by Sphinx-Gallery