![]() |
OpenSWMM Engine
6.0.0-alpha.3
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.3)
|
Namespaces | |
| namespace | detail |
| namespace | formats |
Classes | |
| struct | DbDeleter |
| struct | DecodedLinestring |
| struct | DecodedMultipolygon |
| struct | DecodedPoint |
| struct | FilePathPair |
Two-string carrier for any external file path that appears in a SWMM .inp file. More... | |
| class | GeoPackageInputPlugin |
| class | GeoPackageOutputPlugin |
| class | GeoPackagePluginInfo |
| IPluginComponentInfo for the GeoPackage I/O plugin. More... | |
| class | GeoPackageReportPlugin |
| class | GpkgError |
| struct | SimulationContext |
| Central, reentrant simulation context. More... | |
| struct | StmtDeleter |
| class | Transaction |
Typedefs | |
| using | DbPtr = std::unique_ptr<sqlite3, DbDeleter> |
| using | StmtPtr = std::unique_ptr<sqlite3_stmt, StmtDeleter> |
Enumerations | |
| enum | WkbType : uint32_t { WKB_POINT = 1 , WKB_LINESTRING = 2 , WKB_POLYGON = 3 , WKB_MULTIPOLYGON = 6 } |
| enum class | TableType |
| Type of data stored in a Table. More... | |
| enum class | FileMode |
Mode keyword for one [FILES] row — SAVE or USE. More... | |
| enum class | TableType |
| Type of data stored in a Table. More... | |
| enum class | FileMode |
Mode keyword for one [FILES] row — SAVE or USE. More... | |
Functions | |
| std::string | scratchDirFor (const std::string &gpkg_path) |
Compute the canonical scratch-dir path for a given .gpkg file. | |
| void | read_external_content (sqlite3 *db, openswmm::SimulationContext &ctx, const std::string &simulation_id, const std::string &scratch_dir) |
Hydrate every external-file slot on ctx from the Part D tables and materialise scratch files in scratch_dir. | |
| void | write_external_content (sqlite3 *db, const openswmm::SimulationContext &ctx, const std::string &simulation_id) |
Populate the Part D content tables for simulation_id from the in-memory model. | |
| int | read_model (sqlite3 *db, SimulationContext &ctx, const std::string &simulation_id, const std::string &scratch_dir="") |
| Read a model definition from a GeoPackage into a SimulationContext. | |
| int | read_from_file (const std::string &path, SimulationContext &ctx, const std::string &simulation_id) |
| Convenience: open a GeoPackage file and read a model. | |
| void | create_schema (sqlite3 *db) |
| Create all GeoPackage metadata tables and OpenSWMM application tables. | |
| void | register_crs (sqlite3 *db, int srs_id, const std::string &org, int org_id, const std::string &srs_name, const std::string &wkt) |
| Register a CRS in gpkg_spatial_ref_sys (if not already present). | |
| void | register_feature_table (sqlite3 *db, const std::string &table_name, const std::string &geom_type, int srs_id, const std::string &identifier, const std::string &description, double min_x, double min_y, double max_x, double max_y) |
| Register a feature table in gpkg_contents and gpkg_geometry_columns. | |
| void | populate_default_variables (sqlite3 *db) |
| Pre-populate the variables catalog with known SWMM output variables. | |
| void | write_model (sqlite3 *db, const SimulationContext &ctx, const std::string &simulation_id, int srs_id=0) |
| Write the full model definition from a SimulationContext into a GeoPackage. | |
| int | write_to_file (const std::string &path, const SimulationContext &ctx, const std::string &simulation_id) |
| Convenience: create a new GeoPackage file, write schema + model. | |
| std::vector< uint8_t > | encode_point (double x, double y, int32_t srs_id) |
| Encode a POINT geometry in GeoPackage Binary format. | |
| std::vector< uint8_t > | encode_linestring (const std::vector< double > &xs, const std::vector< double > &ys, int32_t srs_id) |
| Encode a LINESTRING geometry in GeoPackage Binary format. | |
| std::vector< uint8_t > | encode_multipolygon (const std::vector< double > &xs, const std::vector< double > &ys, int32_t srs_id) |
| Encode a MULTIPOLYGON geometry (single polygon, single ring) in GeoPackage Binary format. | |
| std::vector< uint8_t > | encode_polygon (const std::vector< double > &xs, const std::vector< double > &ys, int32_t srs_id) |
| Encode a POLYGON geometry (single ring) in GeoPackage Binary format. | |
| DecodedPoint | decode_point (const std::vector< uint8_t > &blob) |
| DecodedLinestring | decode_linestring (const std::vector< uint8_t > &blob) |
| DecodedMultipolygon | decode_multipolygon (const std::vector< uint8_t > &blob) |
| DbPtr | open_database (const std::string &path, int flags=SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE) |
| StmtPtr | prepare (sqlite3 *db, const std::string &sql) |
| void | exec (sqlite3 *db, const std::string &sql) |
| void | bind_text (sqlite3_stmt *stmt, int col, const std::string &val) |
| void | bind_double (sqlite3_stmt *stmt, int col, double val) |
| void | bind_int (sqlite3_stmt *stmt, int col, int val) |
| void | bind_null (sqlite3_stmt *stmt, int col) |
| void | bind_blob (sqlite3_stmt *stmt, int col, const void *data, int size) |
| std::string | column_text (sqlite3_stmt *stmt, int col) |
| double | column_double (sqlite3_stmt *stmt, int col) |
| int | column_int (sqlite3_stmt *stmt, int col) |
| bool | column_is_null (sqlite3_stmt *stmt, int col) |
| std::vector< uint8_t > | column_blob (sqlite3_stmt *stmt, int col) |
Variables | |
| constexpr uint8_t | WKB_LITTLE_ENDIAN = 1 |
| constexpr uint8_t | GP_MAGIC_1 = 0x47 |
| constexpr uint8_t | GP_MAGIC_2 = 0x50 |
| using openswmm::gpkg::DbPtr = std::unique_ptr<sqlite3, DbDeleter> |
| using openswmm::gpkg::StmtPtr = std::unique_ptr<sqlite3_stmt, StmtDeleter> |
|
strong |
Mode keyword for one [FILES] row — SAVE or USE.
NONE is the in-memory default for unconfigured slots so the writer can skip them. SAVE writes data out at simulation end; USE reads data in at simulation start.
|
strong |
Mode keyword for one [FILES] row — SAVE or USE.
NONE is the in-memory default for unconfigured slots so the writer can skip them. SAVE writes data out at simulation end; USE reads data in at simulation start.
|
strong |
|
strong |
| enum openswmm::gpkg::WkbType : uint32_t |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
| void openswmm::gpkg::create_schema | ( | sqlite3 * | db | ) |
Create all GeoPackage metadata tables and OpenSWMM application tables.
Creates (idempotently):
| db | Open SQLite database handle. |
| GpkgError | on failure. |
|
inline |
|
inline |
|
inline |
|
inline |
Encode a LINESTRING geometry in GeoPackage Binary format.
| xs | X coordinates of vertices. |
| ys | Y coordinates of vertices. |
|
inline |
Encode a MULTIPOLYGON geometry (single polygon, single ring) in GeoPackage Binary format.
| xs | X coordinates of polygon ring vertices. |
| ys | Y coordinates of polygon ring vertices. |
|
inline |
Encode a POINT geometry in GeoPackage Binary format.
|
inline |
Encode a POLYGON geometry (single ring) in GeoPackage Binary format.
| xs | X coordinates of polygon ring vertices. |
| ys | Y coordinates of polygon ring vertices. |
Used for the 2D mesh triangle feature layer (one ring of 3 vertices, closed automatically). Identical to encode_multipolygon minus the outer MULTIPOLYGON wrapper.
|
inline |
|
inline |
| void openswmm::gpkg::populate_default_variables | ( | sqlite3 * | db | ) |
Pre-populate the variables catalog with known SWMM output variables.
| db | Open database handle. |
|
inline |
| void openswmm::gpkg::read_external_content | ( | sqlite3 * | db, |
| openswmm::SimulationContext & | ctx, | ||
| const std::string & | simulation_id, | ||
| const std::string & | scratch_dir ) |
Hydrate every external-file slot on ctx from the Part D tables and materialise scratch files in scratch_dir.
scratch_dir is created if missing. When scratch_dir is empty the call is a no-op — the function is then equivalent to skipping external-content hydration entirely (useful in read_model callers that don't have a .gpkg path context).
| GpkgError | on materialiser failures. |
| int openswmm::gpkg::read_from_file | ( | const std::string & | path, |
| SimulationContext & | ctx, | ||
| const std::string & | simulation_id ) |
Convenience: open a GeoPackage file and read a model.
| path | Path to the .gpkg file. |
| ctx | Simulation context to populate. |
| simulation_id | Which model instance to load. |
| int openswmm::gpkg::read_model | ( | sqlite3 * | db, |
| SimulationContext & | ctx, | ||
| const std::string & | simulation_id, | ||
| const std::string & | scratch_dir = "" ) |
Read a model definition from a GeoPackage into a SimulationContext.
When scratch_dir is non-empty (Slice IO-8), the reader also walks the Part D content tables (raingage_data, climate_data, routing_interface_*, hotstart_*) and materialises one scratch file per role under scratch_dir. Each ctx external-file slot's FilePathPair.absolute is then bound to the matching scratch path so legacy fopen sites keep working. See ExternalContentReader.hpp for details.
| db | Open SQLite database handle. |
| ctx | Simulation context to populate. |
| simulation_id | Which model instance to load. |
| scratch_dir | Directory for materialised scratch files (sibling of the source .gpkg). Pass empty to skip Part D hydration. |
| void openswmm::gpkg::register_crs | ( | sqlite3 * | db, |
| int | srs_id, | ||
| const std::string & | org, | ||
| int | org_id, | ||
| const std::string & | srs_name, | ||
| const std::string & | wkt ) |
Register a CRS in gpkg_spatial_ref_sys (if not already present).
| db | Open database handle. |
| srs_id | Numeric SRS ID (e.g., 4326). |
| org | Organization name (e.g., "EPSG"). |
| org_id | Organization CRS ID (e.g., 4326). |
| srs_name | Human-readable name (e.g., "WGS 84"). |
| wkt | WKT definition string. |
| void openswmm::gpkg::register_feature_table | ( | sqlite3 * | db, |
| const std::string & | table_name, | ||
| const std::string & | geom_type, | ||
| int | srs_id, | ||
| const std::string & | identifier, | ||
| const std::string & | description, | ||
| double | min_x, | ||
| double | min_y, | ||
| double | max_x, | ||
| double | max_y ) |
Register a feature table in gpkg_contents and gpkg_geometry_columns.
| db | Open database handle. |
| table_name | Table name (e.g., "nodes"). |
| geom_type | Geometry type name (e.g., "POINT", "LINESTRING", "MULTIPOLYGON"). |
| srs_id | SRS ID from gpkg_spatial_ref_sys. |
| identifier | Human-readable identifier. |
| description | Table description. |
| min_x,min_y,max_x,max_y | Bounding box. |
| std::string openswmm::gpkg::scratchDirFor | ( | const std::string & | gpkg_path | ) |
Compute the canonical scratch-dir path for a given .gpkg file.
Sibling directory named <basename>.scratch/. Pure string transformation — no filesystem touch.
| void openswmm::gpkg::write_external_content | ( | sqlite3 * | db, |
| const openswmm::SimulationContext & | ctx, | ||
| const std::string & | simulation_id ) |
Populate the Part D content tables for simulation_id from the in-memory model.
| GpkgError | when a USE-direction slot references a missing file or when a format parser reports a hard failure. |
| void openswmm::gpkg::write_model | ( | sqlite3 * | db, |
| const SimulationContext & | ctx, | ||
| const std::string & | simulation_id, | ||
| int | srs_id = 0 ) |
Write the full model definition from a SimulationContext into a GeoPackage.
Creates the schema if needed, registers the CRS, and writes all SWMM input sections as feature/attribute tables. The simulation_id groups all written data for this model instance.
| db | Open SQLite database handle (schema must exist or will be created). |
| ctx | Simulation context containing the parsed model. |
| simulation_id | Unique ID for this model instance. |
| srs_id | SRS ID to use for geometry encoding (default: 0 = undefined). |
| int openswmm::gpkg::write_to_file | ( | const std::string & | path, |
| const SimulationContext & | ctx, | ||
| const std::string & | simulation_id ) |
Convenience: create a new GeoPackage file, write schema + model.
| path | Output file path (created or overwritten). |
| ctx | Simulation context. |
| simulation_id | Unique ID for this model instance. |
|
constexpr |
|
constexpr |
|
constexpr |