diff --git a/docs/readthedocs/conf.py b/docs/readthedocs/conf.py index 4baa6e2ad..7e5c4d238 100644 --- a/docs/readthedocs/conf.py +++ b/docs/readthedocs/conf.py @@ -36,6 +36,7 @@ # ones. extensions = [ 'sphinx.ext.autosectionlabel', +'sphinx.ext.autodoc', 'myst_parser' ] @@ -51,7 +52,7 @@ # directories to ignore when looking for source files. # This pattern also affects html_static_path and html_extra_path. exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store', 'venv'] - +source_suffix = ['.rst', '.md'] source_encoding = 'utf-8-sig' # -- Options for HTML output ------------------------------------------------- diff --git a/docs/readthedocs/io/csvfiles.md b/docs/readthedocs/io/csvfiles.md new file mode 100644 index 000000000..4e7f38b15 --- /dev/null +++ b/docs/readthedocs/io/csvfiles.md @@ -0,0 +1,212 @@ +# csv files + +## Naming of files + +A naming strategy provides a mapping between model classes and the human readable names of those entities to be used +within e.g. the data sinks, in which the serialized representation of several objects of this class can be found. +Currently we offer two different, pre-defined naming strategies, which you might extend to fit your needs: + +1. **EntityPersistenceNamingStrategy**: + A basic naming strategy that is able to add prefix and suffix to the names of the entities. A flat folder structure + is considered. For more details see `Default naming strategy`_. +2. **HierarchicFileNamingStrategy**: + An extended version of the EntityPersistenceNamingStrategy. Additionally, the `Default directory hierarchy`_ is taken + into account. Please note, that this directory hierarchy is only meant to be used in conjunction with input models. + +However, you can control the behaviour of serialization and de-serialization of models by injecting the desired naming +strategy you like into `CsvDataSource` and `CsvFileSink`. + +## Default naming strategy + +There is a default mapping from model class to naming of entities in the case you would like to use csv files for +(de-)serialization of models. +You may extend / alter the naming with pre- or suffix by calling `new EntityPersistenceNamingStrategy("prefix","suffix")`. + +### Input + +| Model | File Name | +|:----------------------------------|:----------------------------------------------------------------------------------------------| +| operator | *prefix_*\ operator_input\ *_suffix* | +| node | *prefix_*\ node_input\ *_suffix* | +| line | *prefix_*\ line_input\ *_suffix*
*prefix_*\ line_type_input\ *_suffix* | +| switch | *prefix_*\ switch_input\ *_suffix* | +| two winding transformer | *prefix_*\ transformer2w_input\ *_suffix*
*prefix_*\ transformer2w_type_input\ *_suffix* | +| three winding transformer | *prefix_*\ transformer3w_input\ *_suffix*
*prefix_*\ transformer3w_type_input\ *_suffix* | +| measurement unit | *prefix_*\ measurement_unit_input\ *_suffix* | +| biomass plant | *prefix_*\ bm_input\ *_suffix*
*prefix_*\ bm_type_input\ *_suffix* | +| combined heat and power plant | *prefix_*\ chp_input\ *_suffix*
*prefix_*\ chp_type_input\ *_suffix* | +| electric vehicle | *prefix_*\ ev_input\ *_suffix*
*prefix_*\ ev_type_input\ *_suffix* | +| electric vehicle charging station | *prefix_*\ evcs_input\ *_suffix* | +| fixed feed in facility | *prefix_*\ fixed_feed_in_input\ *_suffix* | +| heat pump | *prefix_*\ hp_input\ *_suffix*
*prefix_*\ hp_type_input\ *_suffix* | +| load | *prefix_*\ load_input\ *_suffix* | +| photovoltaic power plant | *prefix_*\ pc_input\ *_suffix* | +| electrical energy storage | *prefix_*\ storage_input\ *_suffix*
*prefix_*\ storage_type_input\ *_suffix* | +| wind energy converter | *prefix_*\ wec_input\ *_suffix*
*prefix_*\ wec_type_input\ *_suffix* | +| schematic node graphic | *prefix_*\ node_graphic_input\ *_suffix* | +| schematic line graphic | *prefix_*\ line_graphic_input\ *_suffix* | + + +### Time Series + +| Model | File Name | +|:-----------------------|:--------------------------------------------| +| individual time series | *prefix_*\ its\ *_columnScheme_UUID_suffix* | +| load profile input | *prefix_*\ rts\ *_profileKey_UUID_suffix* | + + +Let's spend a few more words on the individual time series: +Those files are meant to carry different types of content - one might give information about wholesale market prices, +the other is a record of power values provided by a real system. +To be able to understand, what's inside of the file, the *columnScheme* part of the file name gives insight of it's +content. +The following keys are supported until now: + +| Key | Information and supported head line | +|:--------|:---------------------------------------------------------------------------------------------------------------------------------------------------------| +| c | An energy price (e.g. in €/MWh; c stands for charge).
Permissible head line: ``uuid,time,price`` | +| p | Active power
Permissible head line: ``uuid,time,p`` | +| pq | Active and reactive power
Permissible head line: ``uuid,time,p,q`` | +| h | Heat power demand
Permissible head line: ``uuid,time,h`` | +| ph | Active and heat power
Permissible head line: ``uuid,time,p,h`` | +| pqh | Active, reactive and heat power
Permissible head line: ``uuid,time,p,q,h`` | +| weather | Weather information
Permissible head line: ``uuid,time,coordinate,direct_irradiation,diffuse_irradiation,temperature,wind_velocity,wind_direction`` | + + +As the ``uuid`` and ``time`` field are mandatory, they are not mentioned explicitly, here. + +### Results + + +| Model | File Name | +|:----------------------------------|:----------------------------------------------| +| node | *prefix_*\ node_res\ *_suffix* | +| line | *prefix_*\ line_res\ *_suffix* | +| switch | *prefix_*\ switch_res\ *_suffix* | +| two winding transformer | *prefix_*\ transformer2w_res\ *_suffix* | +| three winding transformer | *prefix_*\ transformer3w_res\ *_suffix* | +| biomass plant | *prefix_*\ bm_res\ *_suffix* | +| combined heat and power plant | *prefix_*\ chp_res\ *_suffix* | +| electric vehicle | *prefix_*\ ev_res\ *_suffix* | +| electric vehicle charging station | *prefix_*\ evcs_res\ *_suffix* | +| fixed feed in | *prefix_*\ fixed_feed_in_res\ *_suffix* | +| heat pump | *prefix_*\ hp_res\ *_suffix* | +| load | *prefix_*\ load_res\ *_suffix* | +| photovoltaic power plant | *prefix_*\ pv_res\ *_suffix* | +| storage | *prefix_*\ storage_res\ *_suffix* | +| wind energy converter | *prefix_*\ wec_res\ *_suffix* | +| thermal house model | *prefix_*\ thermal_house_res\ *_suffix* | +| cylindrical thermal storage | *prefix_*\ cylindrical_storage_res\ *_suffix* | + + +## Default directory hierarchy + +Although there is no fixed structure of files mandatory, there is something, we consider to be a good idea of +structuring things. +You may either ship your csv files directly in this structure or compress everything in a .tar.gz file. +However, following this form, we are able to provide you some helpful tools in obtaining and saving your models a bit +easier. + +![Default directory hierarchy for input classes](../_static/figures/uml/DefaultInputDirectoryHierarchy.png) +Default directory hierarchy for input classes + +![Default directory hierarchy for result classes](../_static/figures/uml/DefaultResultDirectoryHierarchy.png) + +Default directory hierarchy for result classes + +The italic parts are optional and the others are mandatory. +As you see, this still is a pretty flexible approach, as you only need to provide, what you really need. +However, note that this hierarchy is only meant to be used in conjunction with input models, yet. + +The class `DefaultInputHierarchy` offers some helpful methods to validate and create a default input file +hierarchy. + +## De-serialization (loading models) +Having an instance of :ref:`Grid Container` is most of the time the target whenever you load your +grid. It consists of the three main blocks: + +1. [Raw grid elements](/models/input/grid/gridcontainer) +2. [System participants](/models/input/grid/gridcontainer) +3. [Graphics](/models/input/grid/gridcontainer) + +Those blocks are also reflected in the structure of data source interface definitions. +There is one source for each of the containers, respectively. + +![Class diagram of data sources](../_static/figures/uml/DataSourceClassDiagram.png) +Class diagram of data sources + +As a full data set has references among the models (e.g. a line model points to its' nodes it connects), there is a +hierarchical structure, in which models have to be loaded. +Therefore, the different sources have also references among themselves. +An application example to load an *exampleGrid* from csv files located in `./exampleGrid` could look like this: + + + + /* Parameterization */ + String gridName = "exampleGrid"; + String csvSep = ","; + String folderPath = "./exampleGrid"; + EntityPersistenceNamingStrategy namingStrategy = new EntityPersistenceNamingStrategy(); // Default naming strategy + + /* Instantiating sources */ + TypeSource typeSource = new CsvTypeSource(csvSep, folderPath, namingStrategy); + RawGridSource rawGridSource = new CsvRawGridSource(csvSep, folderPath, namingStrategy, typeSource); + ThermalSource thermalSource = new CsvThermalSource(csvSep, folderPath, namingStrategy, typeSource); + SystemParticipantSource systemParticipantSource = new CsvSystemParticipantSource( + csvSep, + folderPath, + namingStrategy, + typeSource, + thermalSource, + rawGridSource + ); + GraphicSource graphicsSource = new CsvGraphicSource( + csvSep, + folderPath, + namingStrategy, + typeSource, + rawGridSource + ); + + /* Loading models */ + RawGridElements rawGridElements = rawGridSource.getGridData().orElseThrow( + () -> new SourceException("Error during reading of raw grid data.")); + SystemParticipants systemParticipants = systemParticipantSource.getSystemParticipants().orElseThrow( + () -> new SourceException("Error during reading of system participant data.")); + GraphicElements graphicElements = graphicsSource.getGraphicElements().orElseThrow( + () -> new SourceException("Error during reading of graphic elements.")); + JointGridContainer fullGrid = new JointGridContainer( + gridName, + rawGridElements, + systemParticipants, + graphicElements + ); + +As observable from the code, it doesn't play a role, where the different parts come from. +It is also a valid solution, to receive types from file, but participants and raw grid elements from a data base. +Only prerequisite is an implementation of the different interfaces for the desired data source. + +## Serialization (writing models) + +Serializing models is a bit easier: + + /* Parameterization */ + String csvSep = ","; + String folderPath = "./exampleGrid"; + EntityPersistenceNamingStrategy namingStrategy = new EntityPersistenceNamingStrategy(); + boolean initEmptyFiles = false; + + /* Instantiating the sink */ + CsvFileSink sink = new CsvFileSink(folderPath, namingStrategy, initEmptyFiles, csvSep); + sink.persistJointGridContainer(grid); + +The sink takes a collection of model suitable for serialization and handles the rest (e.g. unboxing of nested models) +on its own. +But caveat: As the (csv) writers are implemented in a concurrent, non-blocking way, duplicates of nested models could +occur. + +## Compression and extraction of files + +We consider either regular directories or compressed tarball archives +(`*.tar.gz`) as source of input files. +The class `TarballUtils` offers some helpful functions to compress or extract input data files for easier shipping. \ No newline at end of file diff --git a/docs/readthedocs/io/csvfiles.rst b/docs/readthedocs/io/csvfiles.rst deleted file mode 100644 index 35ab4b8c8..000000000 --- a/docs/readthedocs/io/csvfiles.rst +++ /dev/null @@ -1,292 +0,0 @@ -********* -csv files -********* - -Naming of files -=============== -A naming strategy provides a mapping between model classes and the human readable names of those entities to be used -within e.g. the data sinks, in which the serialized representation of several objects of this class can be found. -Currently we offer two different, pre-defined naming strategies, which you might extend to fit your needs: - -1. **EntityPersistenceNamingStrategy**: - A basic naming strategy that is able to add prefix and suffix to the names of the entities. A flat folder structure - is considered. For more details see `Default naming strategy`_. -2. **HierarchicFileNamingStrategy**: - An extended version of the EntityPersistenceNamingStrategy. Additionally, the `Default directory hierarchy`_ is taken - into account. Please note, that this directory hierarchy is only meant to be used in conjunction with input models. - -However, you can control the behaviour of serialization and de-serialization of models by injecting the desired naming -strategy you like into :code:`CsvDataSource` and :code:`CsvFileSink`. - -Default naming strategy -======================= -There is a default mapping from model class to naming of entities in the case you would like to use csv files for -(de-)serialization of models. -You may extend / alter the naming with pre- or suffix by calling :code:`new EntityPersistenceNamingStrategy("prefix","suffix")`. - -Input ------ - -+--------------------------------------------------------+--------------------------------------------------+ -| Model | File Name | -+========================================================+==================================================+ -| :ref:`operator` | *prefix_*\ operator_input\ *_suffix* | -+--------------------------------------------------------+--------------------------------------------------+ -| :ref:`node` | *prefix_*\ node_input\ *_suffix* | -+--------------------------------------------------------+--------------------------------------------------+ -| :ref:`line` | | *prefix_*\ line_input\ *_suffix* | -| | | *prefix_*\ line_type_input\ *_suffix* | -+--------------------------------------------------------+--------------------------------------------------+ -| :ref:`switch` | *prefix_*\ switch_input\ *_suffix* | -+--------------------------------------------------------+--------------------------------------------------+ -| :ref:`two winding transformer` | | *prefix_*\ transformer2w_input\ *_suffix* | -| | | *prefix_*\ transformer2w_type_input\ *_suffix* | -+--------------------------------------------------------+--------------------------------------------------+ -| :ref:`three winding transformer` | | *prefix_*\ transformer3w_input\ *_suffix* | -| | | *prefix_*\ transformer3w_type_input\ *_suffix* | -+--------------------------------------------------------+--------------------------------------------------+ -| :ref:`measurement unit` | *prefix_*\ measurement_unit_input\ *_suffix* | -+--------------------------------------------------------+--------------------------------------------------+ -| :ref:`biomass plant` | | *prefix_*\ bm_input\ *_suffix* | -| | | *prefix_*\ bm_type_input\ *_suffix* | -+--------------------------------------------------------+--------------------------------------------------+ -| :ref:`combined heat and power plant` | | *prefix_*\ chp_input\ *_suffix* | -| | | *prefix_*\ chp_type_input\ *_suffix* | -+--------------------------------------------------------+--------------------------------------------------+ -| :ref:`electric vehicle` | | *prefix_*\ ev_input\ *_suffix* | -| | | *prefix_*\ ev_type_input\ *_suffix* | -+--------------------------------------------------------+--------------------------------------------------+ -| :ref:`electric vehicle charging station` | *prefix_*\ evcs_input\ *_suffix* | -+--------------------------------------------------------+--------------------------------------------------+ -| :ref:`fixed feed in facility` | *prefix_*\ fixed_feed_in_input\ *_suffix* | -+--------------------------------------------------------+--------------------------------------------------+ -| :ref:`heat pump` | | *prefix_*\ hp_input\ *_suffix* | -| | | *prefix_*\ hp_type_input\ *_suffix* | -+--------------------------------------------------------+--------------------------------------------------+ -| :ref:`load` | *prefix_*\ load_input\ *_suffix* | -+--------------------------------------------------------+--------------------------------------------------+ -| :ref:`photovoltaic power plant` | *prefix_*\ pc_input\ *_suffix* | -+--------------------------------------------------------+--------------------------------------------------+ -| :ref:`electrical energy storage` | | *prefix_*\ storage_input\ *_suffix* | -| | | *prefix_*\ storage_type_input\ *_suffix* | -+--------------------------------------------------------+--------------------------------------------------+ -| :ref:`wind energy converter` | | *prefix_*\ wec_input\ *_suffix* | -| | | *prefix_*\ wec_type_input\ *_suffix* | -+--------------------------------------------------------+--------------------------------------------------+ -| :ref:`schematic node graphic` | *prefix_*\ node_graphic_input\ *_suffix* | -+--------------------------------------------------------+--------------------------------------------------+ -| :ref:`schematic line graphic` | *prefix_*\ line_graphic_input\ *_suffix* | -+--------------------------------------------------------+--------------------------------------------------+ - -Time Series ------------ - -+-------------------------------------------------------+---------------------------------------------+ -| Model | File Name | -+=======================================================+=============================================+ -| :ref:`individual time series` | *prefix_*\ its\ *_columnScheme_UUID_suffix* | -+-------------------------------------------------------+---------------------------------------------+ -| :ref:`load profile input` | *prefix_*\ rts\ *_profileKey_UUID_suffix* | -+-------------------------------------------------------+---------------------------------------------+ - -Let's spend a few more words on the individual time series: -Those files are meant to carry different types of content - one might give information about wholesale market prices, -the other is a record of power values provided by a real system. -To be able to understand, what's inside of the file, the *columnScheme* part of the file name gives insight of it's -content. -The following keys are supported until now: - -+---------+----------------------------------------------------------------------------------------------------------------+ -| Key | Information and supported head line | -+=========+================================================================================================================+ -| c | | An energy price (e.g. in €/MWh; c stands for charge). | -| | | Permissible head line: ``uuid,time,price`` | -+---------+----------------------------------------------------------------------------------------------------------------+ -| p | | Active power | -| | | Permissible head line: ``uuid,time,p`` | -+---------+----------------------------------------------------------------------------------------------------------------+ -| pq | | Active and reactive power | -| | | Permissible head line: ``uuid,time,p,q`` | -+---------+----------------------------------------------------------------------------------------------------------------+ -| h | | Heat power demand | -| | | Permissible head line: ``uuid,time,h`` | -+---------+----------------------------------------------------------------------------------------------------------------+ -| ph | | Active and heat power | -| | | Permissible head line: ``uuid,time,p,h`` | -+---------+----------------------------------------------------------------------------------------------------------------+ -| pqh | | Active, reactive and heat power | -| | | Permissible head line: ``uuid,time,p,q,h`` | -+---------+----------------------------------------------------------------------------------------------------------------+ -| weather | | Weather information | -| | | Permissible head line: | -| | | ``uuid,time,coordinate,direct_irradiation,diffuse_irradiation,temperature,wind_velocity,wind_direction`` | -+---------+----------------------------------------------------------------------------------------------------------------+ - -As the ``uuid`` and ``time`` field are mandatory, they are not mentioned explicitly, here. - -Results -------- - -+---------------------------------------------------------------+-----------------------------------------------+ -| Model | File Name | -+===============================================================+===============================================+ -| :ref:`node` | *prefix_*\ node_res\ *_suffix* | -+---------------------------------------------------------------+-----------------------------------------------+ -| :ref:`line` | *prefix_*\ line_res\ *_suffix* | -+---------------------------------------------------------------+-----------------------------------------------+ -| :ref:`switch` | *prefix_*\ switch_res\ *_suffix* | -+---------------------------------------------------------------+-----------------------------------------------+ -| :ref:`two winding transformer` | *prefix_*\ transformer2w_res\ *_suffix* | -+---------------------------------------------------------------+-----------------------------------------------+ -| :ref:`three winding transformer` | *prefix_*\ transformer3w_res\ *_suffix* | -+---------------------------------------------------------------+-----------------------------------------------+ -| :ref:`biomass plant` | *prefix_*\ bm_res\ *_suffix* | -+---------------------------------------------------------------+-----------------------------------------------+ -| :ref:`combined heat and power plant` | *prefix_*\ chp_res\ *_suffix* | -+---------------------------------------------------------------+-----------------------------------------------+ -| :ref:`electric vehicle` | *prefix_*\ ev_res\ *_suffix* | -+---------------------------------------------------------------+-----------------------------------------------+ -| :ref:`electric vehicle charging station` | *prefix_*\ evcs_res\ *_suffix* | -+---------------------------------------------------------------+-----------------------------------------------+ -| :ref:`fixed feed in` | *prefix_*\ fixed_feed_in_res\ *_suffix* | -+---------------------------------------------------------------+-----------------------------------------------+ -| :ref:`heat pump` | *prefix_*\ hp_res\ *_suffix* | -+---------------------------------------------------------------+-----------------------------------------------+ -| :ref:`load` | *prefix_*\ load_res\ *_suffix* | -+---------------------------------------------------------------+-----------------------------------------------+ -| :ref:`photovoltaic power plant` | *prefix_*\ pv_res\ *_suffix* | -+---------------------------------------------------------------+-----------------------------------------------+ -| :ref:`storage` | *prefix_*\ storage_res\ *_suffix* | -+---------------------------------------------------------------+-----------------------------------------------+ -| :ref:`wind energy converter` | *prefix_*\ wec_res\ *_suffix* | -+---------------------------------------------------------------+-----------------------------------------------+ -| :ref:`thermal house model` | *prefix_*\ thermal_house_res\ *_suffix* | -+---------------------------------------------------------------+-----------------------------------------------+ -| :ref:`cylindrical thermal storage` | *prefix_*\ cylindrical_storage_res\ *_suffix* | -+---------------------------------------------------------------+-----------------------------------------------+ - -Default directory hierarchy -=========================== -Although there is no fixed structure of files mandatory, there is something, we consider to be a good idea of -structuring things. -You may either ship your csv files directly in this structure or compress everything in a .tar.gz file. -However, following this form, we are able to provide you some helpful tools in obtaining and saving your models a bit -easier. - -.. figure:: ../_static/figures/uml/DefaultInputDirectoryHierarchy.png - :align: center - :alt: Default directory hierarchy for input classes - :width: 650 - - Default directory hierarchy for input classes - -.. figure:: ../_static/figures/uml/DefaultResultDirectoryHierarchy.png - :align: center - :alt: Default directory hierarchy for result classes - :width: 650 - - Default directory hierarchy for result classes - -The italic parts are optional and the others are mandatory. -As you see, this still is a pretty flexible approach, as you only need to provide, what you really need. -However, note that this hierarchy is only meant to be used in conjunction with input models, yet. - -The class :code:`DefaultInputHierarchy` offers some helpful methods to validate and create a default input file -hierarchy. - -De-serialization (loading models) -================================= -Having an instance of :ref:`Grid Container` is most of the time the target whenever you load your -grid. It consists of the three main blocks: - - 1. :ref:`Raw grid elements` - 2. :ref:`System participants` - 3. :ref:`Graphics` - -Those blocks are also reflected in the structure of data source interface definitions. -There is one source for each of the containers, respectively. - -.. figure:: ../_static/figures/uml/DataSourceClassDiagram.png - :align: center - :alt: Class diagram of data sources - :width: 650 - - Class diagram of data sources - -As a full data set has references among the models (e.g. a line model points to its' nodes it connects), there is a -hierarchical structure, in which models have to be loaded. -Therefore, the different sources have also references among themselves. -An application example to load an *exampleGrid* from csv files located in :code:`./exampleGrid` could look like this: - -.. code-block:: java - - /* Parameterization */ - String gridName = "exampleGrid"; - String csvSep = ","; - String folderPath = "./exampleGrid"; - EntityPersistenceNamingStrategy namingStrategy = new EntityPersistenceNamingStrategy(); // Default naming strategy - - /* Instantiating sources */ - TypeSource typeSource = new CsvTypeSource(csvSep, folderPath, namingStrategy); - RawGridSource rawGridSource = new CsvRawGridSource(csvSep, folderPath, namingStrategy, typeSource); - ThermalSource thermalSource = new CsvThermalSource(csvSep, folderPath, namingStrategy, typeSource); - SystemParticipantSource systemParticipantSource = new CsvSystemParticipantSource( - csvSep, - folderPath, - namingStrategy, - typeSource, - thermalSource, - rawGridSource - ); - GraphicSource graphicsSource = new CsvGraphicSource( - csvSep, - folderPath, - namingStrategy, - typeSource, - rawGridSource - ); - - /* Loading models */ - RawGridElements rawGridElements = rawGridSource.getGridData().orElseThrow( - () -> new SourceException("Error during reading of raw grid data.")); - SystemParticipants systemParticipants = systemParticipantSource.getSystemParticipants().orElseThrow( - () -> new SourceException("Error during reading of system participant data.")); - GraphicElements graphicElements = graphicsSource.getGraphicElements().orElseThrow( - () -> new SourceException("Error during reading of graphic elements.")); - JointGridContainer fullGrid = new JointGridContainer( - gridName, - rawGridElements, - systemParticipants, - graphicElements - ); - -As observable from the code, it doesn't play a role, where the different parts come from. -It is also a valid solution, to receive types from file, but participants and raw grid elements from a data base. -Only prerequisite is an implementation of the different interfaces for the desired data source. - -Serialization (writing models) -============================== -Serializing models is a bit easier: - -.. code-block:: java - - /* Parameterization */ - String csvSep = ","; - String folderPath = "./exampleGrid"; - EntityPersistenceNamingStrategy namingStrategy = new EntityPersistenceNamingStrategy(); - boolean initEmptyFiles = false; - - /* Instantiating the sink */ - CsvFileSink sink = new CsvFileSink(folderPath, namingStrategy, initEmptyFiles, csvSep); - sink.persistJointGridContainer(grid); - -The sink takes a collection of model suitable for serialization and handles the rest (e.g. unboxing of nested models) -on its own. -But caveat: As the (csv) writers are implemented in a concurrent, non-blocking way, duplicates of nested models could -occur. - -Compression and extraction of files -=================================== -We consider either regular directories or compressed `tarball archives `_ -(:code:`*.tar.gz`) as source of input files. -The class :code:`TarballUtils` offers some helpful functions to compress or extract input data files for easier shipping. \ No newline at end of file diff --git a/docs/readthedocs/io/source/idcoordinatesource.md b/docs/readthedocs/io/source/idcoordinatesource.md index 10e532290..e0e52a5c1 100644 --- a/docs/readthedocs/io/source/idcoordinatesource.md +++ b/docs/readthedocs/io/source/idcoordinatesource.md @@ -5,7 +5,7 @@ methods to get coordinates, ids of coordinates or the distance between a given c coordinates. -### Information +## Information | Attribute | Remarks | |:-------------|:-------------------------------------------------------------| @@ -14,7 +14,7 @@ coordinates. -### Known implementations: +## Known implementations: The following implementations are currently known: - [Csv Id Coordinate Source](/io/csvfiles) diff --git a/docs/readthedocs/io/sql.md b/docs/readthedocs/io/sql.md index a3bb3fb32..b00cfaeee 100644 --- a/docs/readthedocs/io/sql.md +++ b/docs/readthedocs/io/sql.md @@ -1,7 +1,7 @@ # Sql -### Id Coordinate Source +## Id Coordinate Source The sql implementation of id coordinate source uses PostgreSql with the addon PostGis. `PostGis` is used to improve the querying of geographical data. The `Coordinate` attribute is stored as a geometry (point). diff --git a/docs/readthedocs/requirements.txt b/docs/readthedocs/requirements.txt index 7560bb93d..d4e323ba6 100644 --- a/docs/readthedocs/requirements.txt +++ b/docs/readthedocs/requirements.txt @@ -1,6 +1,6 @@ -commonmark==0.9.1 +commonmark==0.21.0 recommonmark==0.7.1 Sphinx==5.3.0 sphinx-rtd-theme==1.2.0 -myst-parser==0.17.2 +myst-parser==0.18.1 markdown-it-py==2.1.0 \ No newline at end of file