<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Distributed Administration of Multi-Agent Model Properties</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Alena Burova</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Sergey Burov</string-name>
          <email>sergey.burovic@gmail.com</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Danila Parygin</string-name>
          <email>dparygin@gmail.com</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Alexander Gurtyakov</string-name>
          <email>agurtyakov@gmail.com</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Rashevskiy</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Nikolay</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Dynamic change of the modeling range -</institution>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Volgograd State Technical University</institution>
          ,
          <addr-line>28 Lenina Ave., Volgograd, 400005</addr-line>
          ,
          <country country="RU">Russia</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2021</year>
      </pub-date>
      <fpage>24</fpage>
      <lpage>33</lpage>
      <abstract>
        <p>Modeling long-term or large-scale processes is associated with a significant investment of researchers' time, as well as computer time. In this regard, it can be effective to make adjustments to the model directly in the process of modeling. This article discusses the design and implementation of a web client that acts as an administration system (panel) for a platform for multi-agent modeling of movements and interactions of actors within a city map area. All modeling logic in this platform is implemented directly in modules, while the modeling platform only calls it for specific, connected modules. The modeling platform is implemented on the ASP.NET Core 5.0 framework. For the implementation of the web client, the Angular 11 framework was chosen with the Ant Design UI components.</p>
      </abstract>
      <kwd-group>
        <kwd>1 Simulation</kwd>
        <kwd>city</kwd>
        <kwd>C#</kwd>
        <kwd>modularity</kwd>
        <kwd>client-server</kwd>
        <kwd>administration panel</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>+
+
+</p>
      <p>
        The target component of this work is an application that is a client-server platform for modeling
the movements and interactions of actors within a city map section [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. The construction of the model
is based on a multi-agent approach [
        <xref ref-type="bibr" rid="ref6 ref7">6, 7</xref>
        ]. The program expands the modeling functionality due to the
modules plugged into it: it initializes them and displays the functionality on a graphic map of the city.
The development of various modules is ongoing and the system is constantly being expanded.
      </p>
      <p>Modules contain all the logic and modeling rules. Initially, the modules are not supplied as part of
this software package, each of them is a separate class library. However, the modules are directly
involved in the operation of the software package in the case of connecting one or more of them. For
example, the module for managing data about objects on an online city map parses data from a file
with OSM XML format and converts them to the necessary structure for storing in the list of objects
of the main program and further using them by other modules.</p>
      <p>
        The developed administration system is required to execute various modeling scenarios in real
time with an extensible property list of the model itself and actors and plug-in components to answer
the multiple "what if" question [
        <xref ref-type="bibr" rid="ref8 ref9">8, 9</xref>
        ].
      </p>
      <p>In this regard, the purpose of the work is to develop a system for distributed administration of the
behavior of actors and properties of the city model in real time. At the same time, as a key component
of the concept of creating such a system, it was decided to focus on enabling the user to influence the
course of modeling by changing the properties of models and actors in real time.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Problem statement</title>
      <p>The existing application models the movement of actors on the basis of modules, however, it has a
number of drawbacks and limitations, some of which must be eliminated in the created administration
system.</p>
      <p>The object of this research is the process of administration of modeling and obtaining results.</p>
      <p>The subject of the research is the methods of distributed administration of the behavior of actors
and properties of the city model in real time.</p>
      <p>The business process diagram (“BPMN AS IS”) in the case using the application is shown in
Figure 1.</p>
      <p>One of the problems of current modeling administration systems is the lack of approaches to
processing and representing the state of actors in real time. The systems display the simulation result
without the ability to pause the simulation or restart it during the current simulation with different
modules and / or properties.</p>
      <p>In some modeling systems, such as Ant Road Planner, it is not possible to dynamically change any
properties of the model in general and actors in particular in real time after the initial setting of the
modeling properties and the launch of the modeling. The simulation can be restarted on the changed
properties only after the simulation has been worked out and the results are obtained.</p>
      <p>In this regard, the task was set to develop a system of distributed administration of the behavior of
actors and properties of the city model in real time, allowing the user to change the course of
modeling by changing the properties of models and actors.</p>
      <p>
        To implement the web client, the Angular framework [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] version 11 was chosen using the Ant
Design user interface components [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ].
      </p>
    </sec>
    <sec id="sec-3">
      <title>3. Platform architecture</title>
      <p>The platform architecture takes into account all the needs of the updated processes. The platform
architecture is shown in Figure 2.</p>
    </sec>
    <sec id="sec-4">
      <title>4. Description of the methods used in the research</title>
      <p>
        To solve the problem with the development of an approach to processing and representing the state
of actors in real time, the proto3 [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] API of the modeling platform was analyzed, a part of which is
shown in Figure 3.
      </p>
      <p>Based on the API, there are several methods that will be needed to process and represent the state
of the actors. One of these methods is to divide actors by their type (from the type_full_name field)
into groups that represent layers. Splitting into layers opens up a number of possibilities, one of which
is the ability to turn off the display of certain types of actors, if necessary.</p>
      <p>Another important feature, as well as the next used method, opened by using layers, is the ability
to apply specific styles to individual layers (from the open_layers_style field). This style is javascript
code that must be executed before an object of the Style class is obtained.</p>
      <p>
        The method for displaying actors in specific coordinates should be based on the GeoJSON format
[
        <xref ref-type="bibr" rid="ref13">13</xref>
        ], since data in this format can be obtained from the geo_json field. Because methods provided by
the OpenLayers library [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] are already used to solve most of the other subtasks; methods [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] from
this library, aimed at working with this format, can also be used to work with the GeoJSON format.
      </p>
      <p>To solve the problem with the development of an approach to representing and changing the
properties of the model in general and actors in particular in real time, a number of methods from the
REST API of the modeling platform can be used. For example, the State group of methods allows the
user to manage the life cycle of a simulation, which can be started, temporarily paused, and stopped.
The Assemblies method provides the ability to add new assemblies with modules and module
dependencies to the application, and the Modules method group allows the user to get the entire list of
modules obtained from the added assemblies, and also provides the ability to manage the list of
modules participating in the modeling process (specific modules from the general list can be activate
and deactivate for the model). In addition, there are a number of methods for working with the list of
properties of specific actors.</p>
      <p>Thus, a brief description of the methods that will be used in the research when creating a targeted
method for distributed administration of the behavior of actors and properties of the city model in real
time is given.</p>
    </sec>
    <sec id="sec-5">
      <title>5. Implementation of the basic part of the administration system</title>
    </sec>
    <sec id="sec-6">
      <title>5.1. Generation of REST API and gRPC-web infrastructure</title>
      <p>It was customary to add the entire generated infrastructure along the src/app/generated path, so this
path was added to the standard .gitignore file.</p>
      <p>The modeling platform route /swagger/v1/swagger.json is called to get the swagger.json file used
for generation. This route is created automatically using the Swashbuckle.AspNetCore library. Then
this file is added to the root of the project.</p>
      <p>The npm module ng-openapi-gen is used to generate the API infrastructure.</p>
      <p>
        To generate the javascript gRPC-web infrastructure [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ], protoc is installed with the ability to
access it by the appropriate command. After that, the npm module ts-protoc-gen was added, which
allows converting the javascript generated using protoc into typescript code. Modules have also been
added to support gRPC-web and google-protobuf.
      </p>
      <p>After that, a script is created in the package.json file to generate the infrastructure based on
map.proto;</p>
      <p>The generated client does not require DI and can be obtained directly from the grpc namespace.
5.2.</p>
    </sec>
    <sec id="sec-7">
      <title>Assembly management implementation</title>
      <p>Assemblies are managed in AssemblyCompositorComponent, a child of AssemblyComponent.
The NzUploadModule component and AssembliesService are used to upload files.</p>
      <p>The view of the final component is shown in Figure 4. When the component button is pressed, a
file system window opens with a proposal to select one or more assembly files. After selection,
assemblies are immediately uploaded to the server.</p>
    </sec>
    <sec id="sec-8">
      <title>Module management implementation</title>
      <p>Modules are managed in the ModuleManagerComponent, a child of the ModuleComponent. For
this, ModulesService is used.</p>
      <p>The view of the resulting component is shown in Figure 5. Each of the component buttons can be
active or inactive, depending on the current state of the model.</p>
    </sec>
    <sec id="sec-9">
      <title>Model state management implementation</title>
      <p>Model state is managed in ModelStateManagerComponent, a child of ModelComponent. The
StateService is used for this.</p>
      <p>The view of the resulting component is shown in Figure 6. This component supports multiple
choice of modules for the model.</p>
      <p>After selecting or deselecting one of the modules, the changes are immediately sent to the server.</p>
    </sec>
    <sec id="sec-10">
      <title>6. Receiving and processing of map data</title>
    </sec>
    <sec id="sec-11">
      <title>6.1. Metadata handling</title>
      <p>Getting the current metadata occurs when the map component is initialized. To get metadata, the
contract method GetMapFeaturesMetadata is used, which returns a stream of objects of type
MapFeaturesMetadata.</p>
      <p>
        Each of the obtained objects is transferred both to the component of the map browser (to create a
new layer [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ], on which the actors will be placed in the future), and to the component of the map
properties (to create a new table with actors of this type).
      </p>
      <p>The map browser component uses the type (type_full_name) as the name of the layer to create and
the style (open_layers_style) as the layer style. This component does not work with observable
properties.</p>
      <p>The map properties component uses the type (type_full_name) to classify actors into various
tables. The list of observable properties is used by this component to create the table infrastructure.
So, if the “editable” flag of the observed property is “true”, then the corresponding cell in the table
can be edited. The value type (value_type) is used for correct conversion from gRPC types to
javascript / typescript types and vice versa.</p>
      <p>After the method for obtaining metadata has finished its work, subscribes to the method for
updating the metadata GetMapFeaturesMetadataUpdates, which returns objects of the same type,
which are processed in the same way. This subscription exists until one of the applications (modeling
platform or administration system) stops working.
6.2.</p>
    </sec>
    <sec id="sec-12">
      <title>Actors handling</title>
      <p>Getting the current list of actors occurs after getting the list of metadata. This is necessary in order
for the resulting actors to be correctly placed on a previously created map layer. The list of actors is
obtained using the GetMapFeatures method, after which a subscription to updates is performed using
the GetMapFeaturesUpdates method (using an approach similar to working with metadata). Both
methods return an object of type MapFeature.</p>
      <p>The resulting object from any of the methods is sent to the map browser component, where it is
converted from GeoJson (geo_json) to the OpenLayers library format, from which the actor ID is
obtained. An actor obtained from the GeoJson format is placed on a layer that has the corresponding
type, the same as the type of the resulting actor (type_full_name). If an actor with such an identifier
already exists in the corresponding layer, then it is previously removed from the layer.</p>
      <p>After the initial receipt of the actors, there is also a subscription to the
GetRemoveMapFeatureEventsUpdates method, which provides a stream of events for removing
actors, objects of type RemoveMapFeatureEvent.</p>
      <p>When objects are received from this stream, objects with parameters corresponding to the type
(type_full_name) and identifier (id) of the received event are removed from both the map browser
component and the map properties component.
6.3.</p>
    </sec>
    <sec id="sec-13">
      <title>Actors observable properties handling</title>
      <p>The retrieval of the current list of the observable properties of the actors occurs after the retrieval
of the list of metadata. The retrieval of the current list of the watched properties of the actors occurs
after the retrieval of the list of metadata. The list of actor observable properties is obtained using the
GetMapFeaturesObservableProperties method, after which a subscription to updates is performed
using the GetMapFeaturesObservablePropertiesUpdates method (using an approach similar to
working with metadata and with actors). Both methods return an object of type
MapFeatureObservableProperty.</p>
      <p>After receiving this object, it is added to the map properties component, in which it is displayed in
the table, in accordance with its metadata. The type of the observable property (type_full_name)
affects the table in which the object will be placed. The identifier (id) groups several different
properties by one actor, the verbal title of the property (title) defines the column in the table, and the
value (value) defines the current value of the column.</p>
      <p>In addition to displaying the properties of actors, there is also the ability to edit them. After
finishing editing the cell that has the corresponding property, the updated value is sent to the
modeling platform, to the SetMapFeatureObservableProperty method, as a
MapFeatureObservableProperty object.</p>
    </sec>
    <sec id="sec-14">
      <title>7. Testing the administration system</title>
    </sec>
    <sec id="sec-15">
      <title>7.1. General information about testing</title>
      <p>To test the results, a modeling platform with a connected test module is used.</p>
      <p>The test module adds several actors to the map:
1. Point (PointActor)
2. Line string (LineStringActor)
3. Polygon (PolygonActor)
4. Airplane 1 with an initial speed of 1000 by "Boeing" (Airplane, actor class created in the
module)
5. Airplane 2 with an initial speed of 0 by "Airbus" (Airplane, an actor class created in the
module)</p>
      <p>The Airplane class inherits from the PointActor class and has several additional observable
properties.
7.2.</p>
    </sec>
    <sec id="sec-16">
      <title>Displaying metadata</title>
      <p>Metadata is displayed regardless of the status of the modeling process; it is always displayed in the
map properties component for all types of actors that have at least one observable property. Figure 8
shows the mapping of actor property metadata for Airplane type actors. Since the modeling process is
stopped and there are no actors at the moment, the table has only columns indicating the properties
being viewed and has no rows.</p>
      <p>The metadata responsible for displaying styles can be seen when displaying actors in the map
browser component (see Figure 9), displaying occurs only when the modeling process is running or
paused, since only at this moment there can be actors on the map.</p>
      <p>There are two Airplane type actors on the map (lower left corner), displayed as small purple dots, a
line string actor (in the center of the map), a point actor (at one of the ends of the line string actor),
and a polygon actor (upper left corner). Of all the listed objects, only Airplane objects have a changed
style.
7.3.</p>
    </sec>
    <sec id="sec-17">
      <title>Displaying actors</title>
      <p>Actors are displayed both when the administration system is connected to the modeling platform
with simulation already running, and when modeling is started from the administration system with
the same result.</p>
      <p>At the same time, updates to actors are correctly displayed by the administration system over time
(see Figure 10).</p>
      <p>When the modeling process is stopped, the Map Browser component is cleared of actors.</p>
    </sec>
    <sec id="sec-18">
      <title>Displaying observable properties</title>
      <p>When the simulation is run, the map browser component displays the browseable properties
according to the table layout and metadata (see Figure 11, a).</p>
      <p>If the observable properties on the modeling platform change (for example, the speed of one of the
Airplanes increases over time), the changes will be reflected in the administration system, without the
need to reload the page (see Figure 11, b).
7.5.</p>
    </sec>
    <sec id="sec-19">
      <title>Editing observable properties</title>
      <p>When the cursor is hovering over a row that contains editable observable properties, the editable
property cells will be highlighted (see Figure 12, a). Clicking on one of these cells will open the
editing element (see Figure 12, b)</p>
      <p>If the property value is changed and the edit dialog is closed, this property will be changed on the
modeling platform, as well as in the current and all other connected administration systems (see
Figure 12, c).</p>
    </sec>
    <sec id="sec-20">
      <title>8. Conclusion</title>
      <p>To interact with the platform for modeling the movements and interactions of actors within the city
map section, a web client was developed that plays the role of an administration system and provides:
 Custom display of real-time actors with specific styles based on actor types
 Ability for the user to manage the list of model modules
 Ability to the user to manage the life cycle of the simulation
 The ability for the user to influence the course of modeling by changing the properties of the
model and actors</p>
      <p>Compared to existing solutions, this administration system is distinguished by the ability to work
with a specific modeling platform, which in turn offers a number of advantages over other modeling
solutions, such as:
 Cross-platform
 Open source
 Extensibility of functionality using modules</p>
      <p>Thus, the developed administration system makes the modeling platform more accessible for
interaction with the end user by providing a graphical user interface instead of a software one (REST
and gRPC API).</p>
    </sec>
    <sec id="sec-21">
      <title>9. Acknowledgements</title>
      <p>This work has been supported by the Russian Science Foundation (RSF) grant (project No.
20-7110087). The authors express gratitude to colleagues from the Urban Computing Laboratory (UCLab)
and the Department of Digital Technologies for Urban Studies, Architecture and Civil Engineering,
VSTU involved in the development of Live.UrbanBasis.com project.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>A.</given-names>
            <surname>Davtian</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Shabalina</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Sadovnikova</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Parygin</surname>
          </string-name>
          ,
          <article-title>Cyber-Social System as a Model of Narrative Management</article-title>
          ,
          <source>Studies in Systems, Decision and Control 333</source>
          , Springer,
          <year>2021</year>
          , pp.
          <fpage>3</fpage>
          -
          <lpage>14</lpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>030</fpage>
          -63563-
          <issue>3</issue>
          _
          <fpage>1</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>Ant</given-names>
            <surname>Road Planner.Ru</surname>
          </string-name>
          , Pedestrian simulator,
          <year>2021</year>
          . URL: https://antroadplanner.ru/.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3] NetLogoWeb.Org,
          <article-title>NetLogo is a programming language and integrated development environment (IDE) for agent-based modeling</article-title>
          ,
          <year>2021</year>
          . URL: https://www.netlogoweb.org/.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4] AnyLogic.Ru,
          <article-title>AnyLogic is a multimethod simulation modeling tool developed by The AnyLogic Company</article-title>
          ,
          <year>2021</year>
          . URL: https://www.anylogic.ru/.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>D.</given-names>
            <surname>Parygin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Usov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Burov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Sadovnikova</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Ostroukhov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Pyannikova</surname>
          </string-name>
          <article-title>, Multi-agent Approach to Modeling the Dynamics of Urban Processes (on the Example of Urban Movements)</article-title>
          ,
          <source>Communications in Computer and Information Science 1135</source>
          , Springer,
          <year>2020</year>
          , pp.
          <fpage>243</fpage>
          -
          <lpage>257</lpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>030</fpage>
          -39296-3_
          <fpage>18</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>A.</given-names>
            <surname>Anokhin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Burov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Parygin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Rent</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Sadovnikova</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Finogeev</surname>
          </string-name>
          ,
          <article-title>Development of Scenarios for Modeling the Behavior of People in an Urban Environment</article-title>
          ,
          <source>Studies in Systems, Decision and Control 333</source>
          , Springer,
          <year>2021</year>
          , pp.
          <fpage>103</fpage>
          -
          <lpage>114</lpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>030</fpage>
          -63563-
          <issue>3</issue>
          _
          <fpage>9</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>D.</given-names>
            <surname>Parygin</surname>
          </string-name>
          ,
          <article-title>Rebalancing Cycle of Ensuring Needs for an Exoactive Management System</article-title>
          ,
          <source>in: Proceedings of the 2020 International Multi-Conference on Industrial Engineering and Modern Technologies</source>
          ,
          <source>FarEastCon</source>
          <year>2020</year>
          , Vladivostok, Russia, IEEE,
          <year>2020</year>
          , art. no.
          <issue>9271512</issue>
          . URL: https://ieeexplore.ieee.org/document/9271512. doi:
          <volume>10</volume>
          .1109/FarEastCon50210.
          <year>2020</year>
          .
          <volume>9271512</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>Yoav</given-names>
            <surname>Shoham</surname>
          </string-name>
          , Rob Powers, Trond Grenager,
          <article-title>If multi-agent learning is the answer, what is the question?</article-title>
          ,
          <source>Artificial Intelligence</source>
          <volume>171</volume>
          (
          <issue>7</issue>
          ),
          <year>2007</year>
          , pp.
          <fpage>365</fpage>
          -
          <lpage>377</lpage>
          . doi:
          <volume>10</volume>
          .1016/j.artint.
          <year>2006</year>
          .
          <volume>02</volume>
          .006.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>Saehwa</given-names>
            <surname>Kim</surname>
          </string-name>
          , Seongsoo Hong,
          <string-name>
            <given-names>Naehyuck</given-names>
            <surname>Chang</surname>
          </string-name>
          ,
          <article-title>Scenario-based implementation architecture for real-time object-oriented models</article-title>
          ,
          <source>in: Proceedings of the Seventh IEEE International Workshop on Object-Oriented Real-Time Dependable Systems, WORDS</source>
          <year>2002</year>
          ,
          <year>2002</year>
          , pp.
          <fpage>147</fpage>
          -
          <lpage>152</lpage>
          . doi:
          <volume>10</volume>
          .1109/WORDS.
          <year>2002</year>
          .
          <volume>1000047</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <surname>Angular</surname>
          </string-name>
          .Io, Introduction to the Angular Docs,
          <year>2021</year>
          . URL: https://angular.io/docs.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <article-title>Ant Design of Angular, An enterprise-class Angular UI component library based on</article-title>
          <source>Ant Design</source>
          ,
          <year>2021</year>
          . URL: https://ng.ant.design/docs/introduce/en.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <surname>Developers</surname>
          </string-name>
          .Google.Com,
          <source>Language Guide (proto3)</source>
          ,
          <year>2021</year>
          . URL: https://developers.google.com/protocol-buffers/docs/proto3.
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <surname>Datatracker</surname>
          </string-name>
          .Ietf.Org, The GeoJSON Format,
          <year>2021</year>
          . URL: https://datatracker.ietf.org/doc/html/rfc7946.
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <surname>OpenLayers</surname>
          </string-name>
          .Org,
          <article-title>OpenLayers is an open-source JavaScript library for displaying map data in web browsers as slippy maps</article-title>
          ,
          <year>2021</year>
          . URL: https://openlayers.org/.
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <surname>OpenLayers</surname>
          </string-name>
          .Org, ol/format/GeoJSON~GeoJSON,
          <year>2021</year>
          . URL: https://openlayers.org/en/latest/apidoc/module-ol_
          <article-title>format_GeoJSON-GeoJSON</article-title>
          .html.
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <surname>Anthonygiretti</surname>
          </string-name>
          .Com,
          <article-title>Create gRPC-web app with Angular 8 on Windows</article-title>
          ,
          <year>2021</year>
          . URL: https://anthonygiretti.com/
          <year>2020</year>
          /03/29/grpc-asp
          <article-title>-net-core-3-1-how-to-create-a-grpc-web-clientexamples-with-angular-8-and-httpclient/.</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <surname>OpenLayers</surname>
          </string-name>
          .Org, ol/layer/Layer~Layer,
          <year>2021</year>
          . URL: https://openlayers.org/en/latest/apidoc/module-ol_layer_Layer-Layer.html.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>