diff --git a/.gitignore b/.gitignore
index 813d45422d01f86bfce4e7d0a6ff4de48361e5d2..b09a30478eac6bfd5ff9fd31645b933a502371e8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -44,6 +44,7 @@ VadereModelCalibration/**/output
VadereModelTests/**/legacy
VadereUtils/output/**
VadereModelTests/*_private
+**/current_commit_hash.txt
# Operating system files
.DS_Store
@@ -53,3 +54,7 @@ VadereModelTests/*_private
**/output/
**/legacy/
**/*_private/
+
+# Vadere Cache
+**/__cache__
+**/vadere-server-output
\ No newline at end of file
diff --git a/VadereAnnotation/src/org/vadere/annotation/traci/client/ClientAnnotationProcessor.java b/VadereAnnotation/src/org/vadere/annotation/traci/client/ClientAnnotationProcessor.java
new file mode 100644
index 0000000000000000000000000000000000000000..8bcd36acab106c10bd8f69e6bdd72ebf58403d12
--- /dev/null
+++ b/VadereAnnotation/src/org/vadere/annotation/traci/client/ClientAnnotationProcessor.java
@@ -0,0 +1,290 @@
+package org.vadere.annotation.traci.client;
+
+import com.google.auto.service.AutoService;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import javax.annotation.processing.AbstractProcessor;
+import javax.annotation.processing.Processor;
+import javax.annotation.processing.RoundEnvironment;
+import javax.annotation.processing.SupportedAnnotationTypes;
+import javax.annotation.processing.SupportedSourceVersion;
+import javax.lang.model.SourceVersion;
+import javax.lang.model.element.AnnotationMirror;
+import javax.lang.model.element.AnnotationValue;
+import javax.lang.model.element.Element;
+import javax.lang.model.element.ElementKind;
+import javax.lang.model.element.ExecutableElement;
+import javax.lang.model.element.Modifier;
+import javax.lang.model.element.TypeElement;
+import javax.lang.model.type.MirroredTypeException;
+import javax.tools.JavaFileObject;
+
+@SupportedAnnotationTypes("org.vadere.annotation.traci.client.TraCIApi")
+@SupportedSourceVersion(SourceVersion.RELEASE_11)
+@AutoService(Processor.class)
+public class ClientAnnotationProcessor extends AbstractProcessor {
+
+
+ private StringBuilder apiMembers;
+ private StringBuilder apiInit;
+ private StringBuilder apiMapping;
+ private StringBuilder apiAbstract;
+
+ @Override
+ public boolean process(Set extends TypeElement> annotations, RoundEnvironment roundEnv) {
+
+ apiMembers = new StringBuilder();
+ apiInit = new StringBuilder();
+ apiMapping = new StringBuilder();
+ apiAbstract = new StringBuilder();
+
+ // see SupportedAnnotationTypes (here only TraCIApi)
+ for (TypeElement annotation : annotations) {
+ Set extends Element> annotatedElements =
+ roundEnv.getElementsAnnotatedWith(annotation)
+ .stream()
+ .filter(e -> e.getKind().isClass()
+ && !e.getKind().equals(ElementKind.ENUM)
+ && !e.getModifiers().contains(Modifier.ABSTRACT)
+ )
+ .collect(Collectors.toSet());
+
+ if (annotatedElements.isEmpty())
+ continue;
+
+ for (Element annotatedElement : annotatedElements) {
+ try {
+ writeApiClass(annotatedElement);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ }
+ try {
+ TypeElement element = processingEnv.getElementUtils().
+ getTypeElement("org.vadere.manager.client.AbstractTestClient");
+ if (element == null)
+ writeAbstractTestClient();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return true;
+ }
+
+ protected void writeAbstractTestClient() throws IOException {
+ JavaFileObject jFile = processingEnv.getFiler().createSourceFile("AbstractTestClient");
+ try (PrintWriter writer = new PrintWriter(jFile.openWriter())){
+ writer.append("package org.vadere.manager.client; ").println();
+ writer.println();
+ writer.append("import org.vadere.manager.TraCISocket;").println();
+ writer.append("import org.vadere.manager.client.ConsoleReader;").println();
+ writer.append("import java.io.IOException;").println();
+ writer.println();
+ writer.append("public abstract class AbstractTestClient {").println();
+ writer.append(apiMembers.toString()).println();
+ writer.append("\tpublic AbstractTestClient() { }").println();
+ writer.println();
+ writer.append("\tpublic void init(TraCISocket socket, ConsoleReader consoleReader){").println();
+ writer.append(apiInit.toString());
+ writer.println();
+ writer.append(apiMapping.toString());
+ writer.append("\t}").println();
+ writer.println();
+ writer.append(apiAbstract.toString());
+ writer.println();
+ writer.append("}").println();
+ }
+
+ }
+
+ protected void writeApiClass(Element apiClass) throws IOException {
+ TraCiApiWrapper traCIApi = new TraCiApiWrapper(apiClass);
+ JavaFileObject jFile = processingEnv.getFiler().createSourceFile(traCIApi.name);
+
+ apiMembers.append(String.format("\tprotected %s.%s %s;\n", traCIApi.packageName, traCIApi.name, traCIApi.name.toLowerCase()));
+ apiInit.append(String.format("\t\t%s = new %s.%s(socket);\n", traCIApi.name.toLowerCase(), traCIApi.packageName, traCIApi.name));
+
+ try (PrintWriter writer = new PrintWriter(jFile.openWriter())){
+ writer.append("package ").append(traCIApi.packageName).append(";").println();
+ writer.println();
+ for (String anImport : traCIApi.imports) {
+ writer.append("import ").append(anImport).append(";").println();
+ }
+ writer.append("import ").append(traCIApi.cmdEnum).append(";").println();
+ writer.append("import ").append(traCIApi.varEnum).append(";").println();
+ writer.println();
+
+ // start API class
+ writer.append("public class ").append(traCIApi.name).append(" extends ")
+ .append(traCIApi.extendedClassName).append(" {").println();
+
+ // constructor
+ writer.append("\tpublic ").append(traCIApi.name).append("(TraCISocket socket) {").println();
+ writer.append("\t\tsuper(socket, \"").append(traCIApi.name).append("\");").println();
+ writer.append("\t}").println();
+ writer.println();
+
+
+ for (Element element : apiClass.getEnclosedElements()) {
+ List extends AnnotationMirror> anMirrors = element.getAnnotationMirrors();
+ if (anMirrors != null){
+ for (AnnotationMirror anMirror : anMirrors) {
+ String anName = anMirror.getAnnotationType().asElement().getSimpleName().toString();
+ String singeAn = traCIApi.singleAnnotation
+ .substring(traCIApi.singleAnnotation.lastIndexOf(".") + 1).trim();
+ if (anName.equals(singeAn)){
+ ApiHandler apiHandler = new ApiHandler(traCIApi, element, anMirror);
+ apiMapping.append(String.format("\t\tconsoleReader.addCommand(\"%s.%s\", \"\", this::%s_%s);\n", traCIApi.name.toLowerCase(), apiHandler.name, traCIApi.name.toLowerCase(), apiHandler.name));
+ apiAbstract.append(String.format("\t\tabstract public void %s_%s (String args[]) throws IOException;\n",traCIApi.name.toLowerCase(), apiHandler.name));
+ switch (apiHandler.apiType){
+ case "GET":
+ writeGET(writer, apiHandler);
+ break;
+ case "SET":
+ writeSET(writer, apiHandler);
+ break;
+ }
+ }
+ }
+ }
+ }
+ writer.append("}").println(); // end API class
+ }
+ }
+
+ protected void writeGET(PrintWriter writer, ApiHandler apiHandler){
+ if (apiHandler.ignoreElementId){
+ writer.append("\tpublic TraCIGetResponse ").append(apiHandler.name).append("() throws IOException {").println();
+ writer.append("\t\tTraCIPacket p = TraCIGetCommand.build(").append(apiHandler.cmd).append(", ").append(apiHandler.varId).append(", \"-1\");").println();
+ }
+ else {
+ writer.append("\tpublic TraCIGetResponse ").append(apiHandler.name).append("(String elementID) throws IOException {").println();
+ writer.append("\t\tTraCIPacket p = TraCIGetCommand.build(").append(apiHandler.cmd).append(", ").append(apiHandler.varId).append(", elementID);").println();
+ }
+
+ writer.append("\n\t\tsocket.sendExact(p);\n").println();
+ writer.append("\t\treturn (TraCIGetResponse) socket.receiveResponse();").println();
+ writer.append("\t}").println();
+ writer.println();
+ }
+
+ protected void writeSET(PrintWriter writer, ApiHandler apiHandler){
+ writer.append("\tpublic TraCIResponse ").append(apiHandler.name).append("(String elementId, ").append(apiHandler.dataTypeStr).append(" data) throws IOException {").println();
+ writer.append("\t\tTraCIPacket p = TraCISetCommand.build(")
+ .append(apiHandler.cmd).append(", elementId, ").append(apiHandler.varId).append(", ").append(apiHandler.varType).append(", data);").println();
+
+ writer.append("\n\t\tsocket.sendExact(p);\n").println();
+ writer.append("\t\treturn socket.receiveResponse();").println();
+ writer.append("\t}").println();
+ writer.println();
+ }
+
+ class TraCiApiWrapper {
+ String name;
+ String singleAnnotation;
+ String multipleAnnotation;
+ String cmdEnum;
+ String varEnum;
+ String packageName;
+ String[] imports;
+ String extendedClassName;
+
+ TraCiApiWrapper(Element apiClass){
+ TraCIApi traCIApi = apiClass.getAnnotation(TraCIApi.class);
+
+
+ name = traCIApi.name();
+ packageName = traCIApi.packageName();
+ imports = traCIApi.imports();
+ extendedClassName = traCIApi.extendedClassName();
+
+ try {
+ singleAnnotation = traCIApi.singleAnnotation().getCanonicalName();
+ } catch (MirroredTypeException e){
+ singleAnnotation = e.getTypeMirror().toString();
+ }
+
+ try {
+ multipleAnnotation = traCIApi.multipleAnnotation().getCanonicalName();
+ } catch (MirroredTypeException e){
+ multipleAnnotation = e.getTypeMirror().toString();
+ }
+
+ try {
+ cmdEnum = traCIApi.cmdEnum().getCanonicalName();
+ } catch (MirroredTypeException e){
+ cmdEnum = e.getTypeMirror().toString();
+ }
+
+ try {
+ varEnum = traCIApi.varEnum().getCanonicalName();
+ } catch (MirroredTypeException e){
+ varEnum = e.getTypeMirror().toString();
+ }
+ }
+ }
+
+ class ApiHandler {
+
+ String cmd;
+ String varId;
+ String varType;
+ String name;
+ String dataTypeStr;
+ boolean ignoreElementId;
+ String apiType; //SET, GET, SUB
+
+ public ApiHandler(TraCiApiWrapper traCIApi, Element method, AnnotationMirror annotationMirror){
+
+ ignoreElementId = false; //default
+ dataTypeStr = "";
+ String cmdPrefix = traCIApi.cmdEnum;
+ cmdPrefix = cmdPrefix.substring(cmdPrefix.lastIndexOf('.') + 1).trim();
+ String varPrefix = traCIApi.varEnum;
+ varPrefix = varPrefix.substring(varPrefix.lastIndexOf('.') + 1).trim();
+
+ Map extends ExecutableElement, ? extends AnnotationValue> valueMap = annotationMirror.getElementValues();
+ for (Map.Entry extends ExecutableElement, ? extends AnnotationValue> entry : valueMap.entrySet()) {
+ String key = entry.getKey().getSimpleName().toString();
+ Object value = entry.getValue().getValue();
+ switch (key){
+ case "cmd":
+ this.cmd = cmdPrefix+ "." + value.toString();
+ this.apiType = value.toString().substring(0, 3);
+ break;
+ case "var":
+ this.varId = varPrefix + "." + value.toString() + ".id";
+ this.varType = varPrefix + "." + value.toString() + ".type";
+ break;
+ case "name":
+ this.name = (String) value;
+ break;
+ case "ignoreElementId":
+ this.ignoreElementId = (boolean) value;
+ break;
+ case "dataTypeStr":
+ this.dataTypeStr = value.toString();
+ }
+ }
+ }
+
+ @Override
+ public String toString() {
+ return "ApiHandler{" +
+ "cmd='" + cmd + '\'' +
+ ", varId='" + varId + '\'' +
+ ", varType='" + varType + '\'' +
+ ", name='" + name + '\'' +
+ ", ignoreElementId=" + ignoreElementId +
+ ", apiType='" + apiType + '\'' +
+ '}';
+ }
+ }
+}
diff --git a/VadereAnnotation/src/org/vadere/annotation/traci/client/TraCIApi.java b/VadereAnnotation/src/org/vadere/annotation/traci/client/TraCIApi.java
new file mode 100644
index 0000000000000000000000000000000000000000..355eb8f0aff1a39c141d81bf31d9997d03d9f112
--- /dev/null
+++ b/VadereAnnotation/src/org/vadere/annotation/traci/client/TraCIApi.java
@@ -0,0 +1,30 @@
+package org.vadere.annotation.traci.client;
+
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target(ElementType.TYPE)
+@Retention(RetentionPolicy.SOURCE)
+public @interface TraCIApi {
+ String packageName() default "org.vadere.manager.client.traci";
+ String[] imports() default {
+ "org.vadere.manager.client.traci.TraCIClientApi",
+ "org.vadere.manager.TraCISocket",
+ "org.vadere.manager.traci.commands.TraCIGetCommand",
+ "org.vadere.manager.traci.commands.TraCISetCommand",
+ "org.vadere.manager.traci.respons.TraCIGetResponse",
+ "org.vadere.manager.traci.writer.TraCIPacket",
+ "org.vadere.manager.traci.respons.TraCIResponse",
+ "java.io.IOException",
+ "java.util.ArrayList"
+ };
+ String extendedClassName() default "TraCIClientApi";
+ String name();
+ Class singleAnnotation();
+ Class multipleAnnotation();
+ Class cmdEnum();
+ Class varEnum();
+}
diff --git a/VadereGui/src/org/vadere/gui/components/view/ScenarioElementView.java b/VadereGui/src/org/vadere/gui/components/view/ScenarioElementView.java
index 6a30ac82405c6661f73f717af87c89757ffef0a3..687c6aa9f2b4d3603dda222beff6298db68c3c10 100644
--- a/VadereGui/src/org/vadere/gui/components/view/ScenarioElementView.java
+++ b/VadereGui/src/org/vadere/gui/components/view/ScenarioElementView.java
@@ -81,7 +81,7 @@ public class ScenarioElementView extends JPanel implements ISelectScenarioElemen
Theme syntaxTheme = Theme.load(in);
syntaxTheme.apply(textAreaLocal);
} catch (IOException e) {
- logger.error("could not load theme" + e.getMessage());
+ logger.error("could not loadFromFilesystem theme" + e.getMessage());
}
txtrTextfiletextarea = textAreaLocal;
diff --git a/VadereGui/src/org/vadere/gui/projectview/control/ActionAbstractAddScenario.java b/VadereGui/src/org/vadere/gui/projectview/control/ActionAbstractAddScenario.java
index bd3e59127948a09fd12f6277024784251eb237d4..b0d92030ebf95e3a800f16cce92a8cdf9d7e8ffa 100644
--- a/VadereGui/src/org/vadere/gui/projectview/control/ActionAbstractAddScenario.java
+++ b/VadereGui/src/org/vadere/gui/projectview/control/ActionAbstractAddScenario.java
@@ -47,7 +47,7 @@ public abstract class ActionAbstractAddScenario extends AbstractAction {
return;
addScenario(vadere);
} catch (IOException e) {
- logger.error(String.format("topographyError during output load: '%s'", e.getLocalizedMessage()));
+ logger.error(String.format("topographyError during output loadFromFilesystem: '%s'", e.getLocalizedMessage()));
}
} else {
IOUtils.errorBox(Messages.getString("renameErrorDialog.text"),
diff --git a/VadereGui/src/org/vadere/gui/projectview/control/ActionCreateProject.java b/VadereGui/src/org/vadere/gui/projectview/control/ActionCreateProject.java
index 65551fd21c26e03db8798a47045615c0330c3160..db49b8bbd1f5798e1d505cf0360eeb4f627f6757 100644
--- a/VadereGui/src/org/vadere/gui/projectview/control/ActionCreateProject.java
+++ b/VadereGui/src/org/vadere/gui/projectview/control/ActionCreateProject.java
@@ -4,15 +4,19 @@ package org.vadere.gui.projectview.control;
import org.vadere.gui.components.utils.Messages;
import org.vadere.gui.projectview.model.ProjectViewModel;
import org.vadere.gui.projectview.view.ProjectView;
+import org.vadere.gui.projectview.view.VDialogManager;
import org.vadere.simulator.projects.VadereProject;
import org.vadere.util.logging.Logger;
import java.awt.event.ActionEvent;
import java.io.IOException;
+import java.nio.file.Paths;
import java.util.ArrayList;
import javax.swing.*;
+import static org.vadere.gui.projectview.control.ActionAbstractSaveProject.saveProjectUnlessUserCancels;
+
public class ActionCreateProject extends AbstractAction {
private static final long serialVersionUID = 1L;
@@ -40,10 +44,16 @@ public class ActionCreateProject extends AbstractAction {
if (newProjectName == null || newProjectName.trim().length() == 0) {
logger.info("invalid project name");
} else {
- VadereProject project = new VadereProject(newProjectName, new ArrayList<>());
- model.setCurrentProjectPath(null);
+
+ final String projectDirectory= VDialogManager.saveProjectDialog();
+
+ if(projectDirectory == null)
+ return; // do not create project without saving it first.
+
+ VadereProject project = new VadereProject(newProjectName, new ArrayList<>(), Paths.get(projectDirectory));
model.setProject(project);
model.refreshOutputTable();
+ saveProjectUnlessUserCancels(model);
ProjectView.getMainWindow().setProjectSpecificActionsEnabled(true);
logger.info("create project: " + newProjectName);
}
diff --git a/VadereGui/src/org/vadere/gui/projectview/control/ActionLoadProject.java b/VadereGui/src/org/vadere/gui/projectview/control/ActionLoadProject.java
index 86146303a58a1469bfd4e14ae23dc4b32520f1c2..10481686d252d182e336e135348cd869d1d567f8 100644
--- a/VadereGui/src/org/vadere/gui/projectview/control/ActionLoadProject.java
+++ b/VadereGui/src/org/vadere/gui/projectview/control/ActionLoadProject.java
@@ -70,17 +70,17 @@ public class ActionLoadProject extends AbstractAction {
else {
migrationOptions = MigrationOptions.reapplyFromVersion((Version)option);
}
- // 3. load project
+ // 3. loadFromFilesystem project
loadProjectByPath(model, projectFilePath, migrationOptions);
} else {
- // 3. load project
+ // 3. loadFromFilesystem project
loadProjectByPath(model, projectFilePath);
}
} else {
- logger.info(String.format("user canceled load project."));
+ logger.info(String.format("user canceled loadFromFilesystem project."));
}
} catch (IOException e1) {
e1.printStackTrace();
@@ -109,13 +109,12 @@ public class ActionLoadProject extends AbstractAction {
public static void loadProjectByPath(ProjectViewModel projectViewModel, String projectFilePath, MigrationOptions options) {
try {
VadereProject project = IOVadere.readProjectJson(projectFilePath, options);
- projectViewModel.setCurrentProjectPath(projectFilePath);
projectViewModel.setProject(project);
projectViewModel.refreshOutputTable();
logger.info("refreshed output table - 2");
- // select and load first scenario from list
+ // select and loadFromFilesystem first scenario from list
projectViewModel.setSelectedRowIndexInScenarioTable(0);
logger.info("selected the first scenario");
@@ -170,7 +169,7 @@ public class ActionLoadProject extends AbstractAction {
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e.getMessage(), "JoltMigrationAssistant assistant",
JOptionPane.ERROR_MESSAGE);
- logger.error("could not load project: " + e.getMessage());
+ logger.error("could not loadFromFilesystem project: " + e.getMessage());
e.printStackTrace();
}
}
diff --git a/VadereGui/src/org/vadere/gui/projectview/control/ActionRunSelectedScenarios.java b/VadereGui/src/org/vadere/gui/projectview/control/ActionRunSelectedScenarios.java
index 9a7044ba2deae774f5c359a0e1c2985cb54a912f..f6a1738f42ec5442dcc637e2afc64b6f48462e90 100644
--- a/VadereGui/src/org/vadere/gui/projectview/control/ActionRunSelectedScenarios.java
+++ b/VadereGui/src/org/vadere/gui/projectview/control/ActionRunSelectedScenarios.java
@@ -1,12 +1,12 @@
package org.vadere.gui.projectview.control;
-import javax.swing.*;
-
import org.vadere.gui.projectview.model.ProjectViewModel;
import org.vadere.gui.projectview.view.VTable;
import java.awt.event.ActionEvent;
+import javax.swing.*;
+
public class ActionRunSelectedScenarios extends AbstractAction {
private final ProjectViewModel model;
diff --git a/VadereGui/src/org/vadere/gui/projectview/model/ProjectViewModel.java b/VadereGui/src/org/vadere/gui/projectview/model/ProjectViewModel.java
index 8f0c7db3b7ce94fef0512b8782d216cf8428501c..467e1aa9cfa07726d72a6d064a54dd809d4112aa 100644
--- a/VadereGui/src/org/vadere/gui/projectview/model/ProjectViewModel.java
+++ b/VadereGui/src/org/vadere/gui/projectview/model/ProjectViewModel.java
@@ -1,6 +1,7 @@
package org.vadere.gui.projectview.model;
+import org.jetbrains.annotations.NotNull;
import org.vadere.gui.components.utils.Messages;
import org.vadere.gui.projectview.control.IOutputFileRefreshListener;
import org.vadere.gui.projectview.control.IProjectChangeListener;
@@ -16,6 +17,12 @@ import org.vadere.util.logging.Logger;
import javax.swing.*;
import java.io.File;
import java.io.IOException;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@@ -29,7 +36,7 @@ public class ProjectViewModel implements IScenarioChecker {
private final OutputFileTableModel outputTableModel;
private final VadereScenarioTableModel scenarioTableModel;
- private String currentProjectPath;
+// private String currentProjectPath;
private ExecutorService refreshOutputExecutor;
@@ -190,19 +197,19 @@ public class ProjectViewModel implements IScenarioChecker {
* been saved to disk yet.
*/
public String getCurrentProjectPath() {
- return currentProjectPath;
+
+ return isProjectAvailable() ? project.getProjectDirectory().toAbsolutePath().toString() : null;
}
/**
* Set path of the directory where the project is saved. It may be null if the model have not
* been saved to disk yet.
*/
- public void setCurrentProjectPath(final String currentProjectPath) {
- if (currentProjectPath == null) {
- this.currentProjectPath = null;
- } else {
- this.currentProjectPath = ProjectWriter.getProjectDir(currentProjectPath);
- }
+ public void setCurrentProjectPath(@NotNull final String currentProjectPath) {
+ if (isProjectAvailable())
+ project.setProjectDirectory(Paths.get(currentProjectPath));
+ else
+ throw new IllegalStateException();
}
public OutputBundle getSelectedOutputBundle() throws IOException {
diff --git a/VadereGui/testResources/test-scenario.scenario b/VadereGui/testResources/test-scenario.scenario
index db9964d5e32d8aa8f453654157726fbb26190849..5d05d1b857c393ea125e6e2f89aa16e74aa6fdb8 100644
--- a/VadereGui/testResources/test-scenario.scenario
+++ b/VadereGui/testResources/test-scenario.scenario
@@ -1,7 +1,7 @@
{
"name" : "Neues_Szenario",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -169,6 +169,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereGui/tests/org/vadere/gui/vadere/TestProjectWriterAndReader.java b/VadereGui/tests/org/vadere/gui/vadere/TestProjectWriterAndReader.java
index 2e254ca91fbad253b517d3c822ee7466b140a0f1..eb5a0083120fcbce4f542b81741264ccf515fd4a 100644
--- a/VadereGui/tests/org/vadere/gui/vadere/TestProjectWriterAndReader.java
+++ b/VadereGui/tests/org/vadere/gui/vadere/TestProjectWriterAndReader.java
@@ -1,16 +1,5 @@
package org.vadere.gui.vadere;
-import static org.junit.Assert.assertEquals;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URISyntaxException;
-import java.util.LinkedList;
-import java.util.stream.Collectors;
-
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.TransformerException;
-
import org.junit.BeforeClass;
import org.junit.Test;
import org.vadere.simulator.models.osm.OptimalStepsModel;
@@ -29,6 +18,18 @@ import org.vadere.state.attributes.models.AttributesPotentialOSM;
import org.vadere.state.scenario.Topography;
import org.xml.sax.SAXException;
+import java.io.File;
+import java.io.IOException;
+import java.net.URISyntaxException;
+import java.nio.file.Paths;
+import java.util.LinkedList;
+import java.util.stream.Collectors;
+
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.TransformerException;
+
+import static org.junit.Assert.assertEquals;
+
public class TestProjectWriterAndReader {
private static VadereProject testProject;
@@ -49,7 +50,7 @@ public class TestProjectWriterAndReader {
tests.add(new Scenario(new ScenarioStore(testName + "1", "", OptimalStepsModel.class.getName(), attributes, new AttributesSimulation(), new Topography())));
tests.add(new Scenario(new ScenarioStore(testName + "2", "", OptimalStepsModel.class.getName(), attributes, new AttributesSimulation(), new Topography())));
tests.add(new Scenario(new ScenarioStore(testName + "3", "", OptimalStepsModel.class.getName(), attributes, new AttributesSimulation(), new Topography())));
- testProject = new VadereProject(testProjectName, tests);
+ testProject = new VadereProject(testProjectName, tests, Paths.get("."));
}
/**
diff --git a/VadereManager/pom.xml b/VadereManager/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..85e1eed563d56d27bcc3d57d17d9f8c1bb4890d1
--- /dev/null
+++ b/VadereManager/pom.xml
@@ -0,0 +1,185 @@
+
+
+
+ vadere
+ org.vadere
+ 0.1-SNAPSHOT
+ ../pom.xml
+
+ 4.0.0
+
+ manager
+ Vadere Manager
+
+
+ src
+ tests
+
+
+ src
+
+ **/*.java
+
+
+
+ resources
+
+
+
+
+ testResources
+
+
+ tests
+
+ **/*.java
+
+
+
+
+
+ com.nativelibs4java
+ maven-javacl-plugin
+ 1.0.0-RC4
+
+
+ generate-sources
+
+ compile
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.6.0
+
+
+ write-version-control-info-to-file
+ generate-resources
+
+ exec
+
+
+
+
+
+ git
+
+ rev-parse
+ HEAD
+
+ resources/current_commit_hash.txt
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ ${maven-compiler.version}
+
+ ${maven-compiler.source.version}
+ ${maven-compiler.target.version}
+
+
+ org.vadere
+ annotation
+ 0.1-SNAPSHOT
+
+
+
+
+
+
+ maven-assembly-plugin
+ 2.4
+
+
+ build-vadere-console
+ package
+
+ single
+
+
+
+
+ org.vadere.simulator.entrypoints.cmd.VadereConsole
+
+
+
+ jar-with-dependencies
+
+ vadere-console
+ false
+ false
+
+
+
+
+
+
+ maven-assembly-plugin
+ 2.4
+
+
+ build-vadere-server
+ package
+
+ single
+
+
+
+
+ org.vadere.manager.Manager
+
+
+
+ jar-with-dependencies
+
+ vadere-server
+ false
+ false
+
+
+
+
+
+
+
+
+
+
+ ${project.groupId}
+ state
+ ${project.version}
+
+
+ ${project.groupId}
+ utils
+ ${project.version}
+
+
+ ${project.groupId}
+ annotation
+ ${project.version}
+
+
+
+ org.vadere
+ simulator
+ 0.1-SNAPSHOT
+ compile
+
+
+ org.vadere
+ gui
+ 0.1-SNAPSHOT
+ compile
+
+
+
+
+
+
\ No newline at end of file
diff --git a/VadereManager/resources/log4j2.properties b/VadereManager/resources/log4j2.properties
new file mode 100644
index 0000000000000000000000000000000000000000..8b731b846083497580d4d6126006d20ac4cd168f
--- /dev/null
+++ b/VadereManager/resources/log4j2.properties
@@ -0,0 +1,32 @@
+name=PropertiesConfig
+property.logname = log.out
+property.loglevel = DEBUG
+
+appenders = console, file
+
+appender.console.type = Console
+appender.console.name = CONSOLE
+appender.console.layout.type = PatternLayout
+appender.console.layout.pattern = %d{ABSOLUTE} %6p %c{1}:%L - %m%n
+
+appender.file.type = RollingFile
+appender.file.name = FILE
+appender.file.fileName = ${main:logname}
+appender.file.filePattern = ${main:logname}-%d{MM-dd-yy-HH-mm-ss}-%i.log.gz
+appender.file.layout.type = PatternLayout
+appender.file.layout.pattern = %d{ABSOLUTE} %6p %c{1}:%L - %m%n
+appender.file.policies.type = Policies
+appender.file.policies.size.type = SizeBasedTriggeringPolicy
+appender.file.policies.size.size = 10000KB
+
+loggers = stdOutErr
+logger.stdOutErr.name = STDOUTERR
+logger.stdOutErr.level = ${main:loglevel}
+logger.stdOutErr.appenderRefs = file
+logger.stdOutErr.appenderRef.file.ref = FILE
+logger.stdOutErr.additivity = false
+
+rootLogger.level = ${main:loglevel}
+rootLogger.appenderRefs = console, file
+rootLogger.appenderRef.console.ref = CONSOLE
+rootLogger.appenderRef.file.ref = FILE
\ No newline at end of file
diff --git a/VadereManager/src/org/vadere/manager/ClientHandler.java b/VadereManager/src/org/vadere/manager/ClientHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..b178d9f39d3b5504abebc51e55ed1b65bb5694c2
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/ClientHandler.java
@@ -0,0 +1,79 @@
+package org.vadere.manager;
+
+import org.vadere.manager.traci.commandHandler.CommandExecutor;
+import org.vadere.manager.traci.commands.TraCICommand;
+import org.vadere.manager.traci.reader.TraCIPacketBuffer;
+import org.vadere.manager.traci.writer.TraCIPacket;
+import org.vadere.util.logging.Logger;
+
+import java.io.EOFException;
+import java.io.IOException;
+import java.net.ServerSocket;
+import java.nio.file.Path;
+
+/**
+ * //todo comment
+ */
+public class ClientHandler implements Runnable{
+
+ private static Logger logger = Logger.getLogger(ClientHandler.class);
+
+ private final ServerSocket serverSocket;
+ private final TraCISocket traCISocket;
+ private final CommandExecutor cmdExecutor;
+ private RemoteManager remoteManager;
+
+
+ public ClientHandler(ServerSocket serverSocket, TraCISocket traCISocket, Path basedir, boolean guiSupport) {
+ this.serverSocket = serverSocket;
+ this.traCISocket = traCISocket;
+ this.remoteManager = new RemoteManager(basedir, guiSupport);
+ this.cmdExecutor = new CommandExecutor(remoteManager);
+ }
+
+
+ @Override
+ public void run() {
+ try {
+ handleClient();
+ } catch (EOFException eof){
+ logger.infof("EOF. Client closed socket");
+ } catch (IOException io) {
+ logger.error("Exception caught when trying to listen on port "
+ + 9999 + " or listening for a connection", io);
+ } catch (Exception e){
+ logger.error("Error while handling TraCI Message", e);
+ }
+
+ }
+
+ private void handleClient() throws IOException{
+ try{
+ logger.info("client connected...");
+
+ while (true){
+
+ TraCIPacketBuffer traCIPacketBuffer = traCISocket.receiveExact();
+
+ if (traCIPacketBuffer.hasRemaining()){
+ TraCICommand cmd = traCIPacketBuffer.nextCommand();
+ while (cmd != null ){
+
+
+ TraCIPacket response = cmdExecutor.execute(cmd);
+ logger.debugf("send packet with %d byte", response.size());
+ traCISocket.sendExact(response);
+
+ cmd = traCIPacketBuffer.nextCommand();
+ }
+ }
+
+ }
+ } finally {
+ traCISocket.close();
+ remoteManager.stopSimulationIfRunning();
+ }
+
+ }
+
+}
diff --git a/VadereManager/src/org/vadere/manager/Manager.java b/VadereManager/src/org/vadere/manager/Manager.java
new file mode 100644
index 0000000000000000000000000000000000000000..6d96bfb07480a5edeb9b4d0be82f19c455d91b83
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/Manager.java
@@ -0,0 +1,100 @@
+package org.vadere.manager;
+
+import net.sourceforge.argparse4j.ArgumentParsers;
+import net.sourceforge.argparse4j.impl.Arguments;
+import net.sourceforge.argparse4j.inf.ArgumentParser;
+import net.sourceforge.argparse4j.inf.Namespace;
+import net.sourceforge.argparse4j.internal.HelpScreenException;
+
+import org.vadere.util.logging.Logger;
+
+import java.net.ServerSocket;
+import java.nio.file.Paths;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+public class Manager {
+
+ static Logger logger;
+
+ public static void main(String[] args) {
+ Logger.setMainArguments(args);
+ logger = Logger.getLogger(Manager.class);
+ ArgumentParser p = createArgumentParser();
+ Namespace ns;
+
+ try {
+ ns = p.parseArgs(args);
+ ExecutorService pool = Executors.newFixedThreadPool(ns.getInt("clientNum"));
+ ServerSocket serverSocket = new ServerSocket(ns.getInt("port"));
+ logger.infof("Start Server(%s) with Loglevel: %s", VadereServer.currentVersion.getVersionString(), logger.getLevel().toString());
+ VadereServer server = new VadereServer(serverSocket, pool, Paths.get(ns.getString("output-dir")), ns.getBoolean("guiMode"));
+ server.run();
+
+ } catch (HelpScreenException ignored) {
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ private static ArgumentParser createArgumentParser() {
+ ArgumentParser parser = ArgumentParsers.newArgumentParser("Vadere Server")
+ .defaultHelp(true)
+ .description("Runs the VADERE pedestrian simulator as a server.");
+
+ addOptionsToParser(parser);
+
+ return parser;
+ }
+
+ private static void addOptionsToParser(ArgumentParser parser) {
+ // no action required call to Logger.setMainArguments(args) already configured Logger.
+ parser.addArgument("--loglevel")
+ .required(false)
+ .type(String.class)
+ .dest("loglevel")
+ .choices("OFF", "FATAL", "ERROR", "WARN", "INFO", "DEBUG", "TRACE", "ALL")
+ .setDefault("INFO")
+ .help("Set Log Level.");
+
+ // no action required call to Logger.setMainArguments(args) already configured Logger.
+ parser.addArgument("--logname")
+ .required(false)
+ .type(String.class)
+ .dest("logname")
+ .help("Write log to given file.");
+
+
+ // no action required call to Logger.setMainArguments(args) already configured Logger.
+ parser.addArgument("--port")
+ .required(false)
+ .type(Integer.class)
+ .setDefault(9999)
+ .dest("port")
+ .help("Set port number.");
+
+ // no action required call to Logger.setMainArguments(args) already configured Logger.
+ parser.addArgument("--clientNum")
+ .required(false)
+ .type(Integer.class)
+ .setDefault(4)
+ .dest("clientNum")
+ .help("Set number of clients to manager. Important: Each client has a separate simulation. No communication between clients");
+
+ // boolean switch to tell server to start in gui mode.
+ parser.addArgument("--gui-mode")
+ .required(false)
+ .action(Arguments.storeTrue())
+ .type(Boolean.class)
+ .dest("guiMode")
+ .help("Start server with GUI support. If a scenario is received show the current state of the scenario");
+
+ parser.addArgument("--output-dir", "-o")
+ .required(false)
+ .setDefault("./vadere-server-output")
+ .dest("output-dir") // set name in namespace
+ .type(String.class)
+ .help("Supply output directory as base directory for received scenarios.");
+ }
+}
diff --git a/VadereManager/src/org/vadere/manager/RemoteManager.java b/VadereManager/src/org/vadere/manager/RemoteManager.java
new file mode 100644
index 0000000000000000000000000000000000000000..dc2696217c5107a5d84a7bcccaab8935f1cab41b
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/RemoteManager.java
@@ -0,0 +1,165 @@
+package org.vadere.manager;
+
+import org.vadere.gui.onlinevisualization.OnlineVisualization;
+import org.vadere.manager.traci.commandHandler.StateAccessHandler;
+import org.vadere.simulator.control.SimulationState;
+import org.vadere.simulator.entrypoints.ScenarioFactory;
+import org.vadere.simulator.projects.RunnableFinishedListener;
+import org.vadere.simulator.projects.Scenario;
+import org.vadere.simulator.utils.cache.ScenarioCache;
+import org.vadere.util.io.IOUtils;
+import org.vadere.util.logging.Logger;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * This class acts as interface between the TraCI handling and the actual simulation.
+ * All synchronization is handled by the {@link RemoteScenarioRun} class. All access to
+ * the simulation state must be wrapped within a {@link StateAccessHandler} to decouple
+ * the {@link org.vadere.simulator.control.SimulationState} from the command handing.
+ *
+ * Within the {@link StateAccessHandler#execute(RemoteManager, SimulationState)} method
+ * the {@link SimulationState} is save to access and change. Be really careful what you
+ * change!
+ *
+ */
+public class RemoteManager implements RunnableFinishedListener {
+
+
+ private static Logger logger = Logger.getLogger(RemoteManager.class);
+
+ private RemoteScenarioRun currentSimulationRun;
+ private Thread currentSimulationThread;
+ private boolean simulationFinished;
+ private boolean clientCloseCommandReceived;
+ private Path baseDir;
+ private boolean guiSupport;
+
+ private List subscriptions;
+
+
+ public RemoteManager(Path baseDir, boolean guiSupport) {
+ this.baseDir = baseDir;
+ this.guiSupport = guiSupport;
+ this.subscriptions = new ArrayList<>();
+ this.clientCloseCommandReceived = false;
+ }
+
+ public void loadScenario(String scenarioString, Map cacheData){
+
+ Scenario scenario;
+ ScenarioCache scenarioCache;
+ Path scenarioPath;
+ Path outputDir;
+ try {
+ scenario = ScenarioFactory.createScenarioWithScenarioJson(scenarioString);
+ scenarioPath = baseDir.resolve(IOUtils.SCENARIO_DIR).resolve(scenario.getName() + IOUtils.SCENARIO_FILE_EXTENSION);
+ scenarioCache = buildScenarioCache(scenario, cacheData);
+ } catch (IOException e) {
+ throw new TraCIException("Cannot create Scenario from given file.");
+ }
+ currentSimulationRun = new RemoteScenarioRun(scenario, baseDir,this, scenarioPath, scenarioCache);
+ }
+
+ public void loadScenario(String scenarioString) {
+
+ loadScenario(scenarioString, null);
+ }
+
+ private ScenarioCache buildScenarioCache(final Scenario scenario, Map cacheData){
+ ScenarioCache scenarioCache = ScenarioCache.load(scenario, baseDir);
+ if (scenarioCache.isEmpty()){
+ if (cacheData != null){
+ logger.warnf("received cache data but given Scenario has cache deactivated. Received cache will be ignored");
+ cacheData.clear();
+ }
+ return scenarioCache;
+ }
+
+
+ if (cacheData != null){
+ logger.info("received cache data");
+ cacheData.forEach(scenarioCache::addReadOnlyCache);
+ }
+
+ return scenarioCache;
+ }
+
+ public boolean stopSimulationIfRunning(){
+ if (currentSimulationThread != null && currentSimulationThread.isAlive()){
+ currentSimulationThread.interrupt();
+ return true;
+ }
+
+ return false;
+ }
+
+ public void addValueSubscription(Subscription sub){
+ subscriptions.add(sub);
+ }
+
+ public List getSubscriptions(){
+ return subscriptions;
+ }
+
+ public boolean accessState(StateAccessHandler stateAccessHandler){
+ if (currentSimulationRun == null)
+ return false;
+
+ currentSimulationRun.accessState(this, stateAccessHandler);
+
+ return true;
+ }
+
+ public boolean nextStep(double simTime){
+ if (simulationFinished)
+ return false;
+
+ currentSimulationRun.nextStep(simTime);
+ return true;
+ }
+
+ public boolean isClientCloseCommandReceived() {
+ return clientCloseCommandReceived;
+ }
+
+ public void setClientCloseCommandReceived(boolean clientCloseCommandReceived) {
+ this.clientCloseCommandReceived = clientCloseCommandReceived;
+ }
+
+ @Override
+ public void finished(Runnable runnable) {
+ simulationFinished = true;
+ logger.infof("Simulation finished.");
+ if (guiSupport)
+ ServerView.close();
+ }
+
+ public void startSimulation(){
+ if (currentSimulationRun == null)
+ throw new IllegalStateException("RemoteScenarioRun object must not be null");
+
+ if (currentSimulationThread != null && currentSimulationThread.isAlive())
+ throw new IllegalStateException("A simulation is already running. Stop current simulation before starting new one.");
+
+ simulationFinished = false;
+ currentSimulationThread = new Thread(currentSimulationRun);
+ currentSimulationThread.setUncaughtExceptionHandler((t, ex) -> {
+ currentSimulationRun.simulationFailed(ex);
+ });
+
+ if (guiSupport){
+ OnlineVisualization onlineVisualization = new OnlineVisualization(true);
+ currentSimulationRun.addPassiveCallback(onlineVisualization);
+ ServerView.startServerGui(onlineVisualization);
+ }
+
+ logger.infof("Start Scenario %s with remote control...", currentSimulationRun.getScenario().getName());
+ currentSimulationThread.start();
+ }
+}
diff --git a/VadereManager/src/org/vadere/manager/RemoteScenarioRun.java b/VadereManager/src/org/vadere/manager/RemoteScenarioRun.java
new file mode 100644
index 0000000000000000000000000000000000000000..aa7702566ec5a95aafe18dc84d34da5fa2d3a053
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/RemoteScenarioRun.java
@@ -0,0 +1,79 @@
+package org.vadere.manager;
+
+import org.vadere.manager.traci.commandHandler.StateAccessHandler;
+import org.vadere.simulator.control.RemoteRunListener;
+import org.vadere.simulator.control.ScenarioRun;
+import org.vadere.simulator.projects.RunnableFinishedListener;
+import org.vadere.simulator.projects.Scenario;
+import org.vadere.simulator.utils.cache.ScenarioCache;
+
+import java.nio.file.Path;
+import java.util.List;
+import java.util.concurrent.locks.ReentrantLock;
+
+public class RemoteScenarioRun extends ScenarioRun implements RemoteRunListener {
+
+ private List subscriptions;
+ private final Object waitForLoopEnd;
+ private final ReentrantLock lock;
+ private boolean lastSimulationStep;
+
+
+ public RemoteScenarioRun(Scenario scenario, Path outputDir, RunnableFinishedListener scenarioFinishedListener, Path scenarioPath, ScenarioCache scenarioCache) {
+ super(scenario, outputDir.toString(), scenarioFinishedListener, scenarioPath, scenarioCache);
+ this.singleStepMode = true;
+ this.waitForLoopEnd = new Object();
+ this.lock = new ReentrantLock();
+ this.lastSimulationStep = false;
+ addRemoteManagerListener(this);
+ }
+
+ synchronized public boolean accessState(RemoteManager remoteManager, StateAccessHandler stateAccessHandler){
+ try {
+ if (!isWaitForSimCommand()) {
+ synchronized (waitForLoopEnd){
+ waitForLoopEnd.wait();
+ }
+ }
+ lock.lock();
+ stateAccessHandler.execute(remoteManager, getSimulationState());
+
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ throw new TraCIException("Interrupted while accessing simulation state");
+ } finally {
+ lock.unlock();
+ }
+ return true;
+ }
+
+ synchronized public void nextStep(double simTime){
+ try {
+ lock.lock();
+ nextSimCommand(simTime);
+
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ @Override
+ public void simulationStepFinishedListener() {
+ synchronized (waitForLoopEnd){
+ waitForLoopEnd.notify();
+ }
+ }
+
+ @Override
+ public void lastSimulationStepFinishedListener() {
+ synchronized (waitForLoopEnd){
+ lastSimulationStep = true;
+ waitForLoopEnd.notify();
+ }
+ }
+
+ public boolean isLastSimulationStep() {
+ return lastSimulationStep;
+ }
+
+}
diff --git a/VadereManager/src/org/vadere/manager/ServerView.java b/VadereManager/src/org/vadere/manager/ServerView.java
new file mode 100644
index 0000000000000000000000000000000000000000..2d68dc1e4103f0f2d3a8abe6f2ccb0f7b56be2a6
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/ServerView.java
@@ -0,0 +1,76 @@
+package org.vadere.manager;
+
+import org.vadere.gui.onlinevisualization.OnlineVisualization;
+import org.vadere.simulator.projects.Scenario;
+import org.vadere.simulator.projects.SingleScenarioFinishedListener;
+
+import java.awt.*;
+
+import javax.swing.*;
+
+/**
+ * Simple JFrame to wrap the OnlineVisualization for the server execution.
+ */
+public class ServerView extends JFrame implements SingleScenarioFinishedListener {
+
+ private static ServerView mainWindow;
+
+ @Override
+ public void preScenarioRun(Scenario scenario, int scenariosLeft) {
+
+ }
+
+ @Override
+ public void postScenarioRun(Scenario scenario, int scenariosLeft) {
+
+ }
+
+ @Override
+ public void scenarioStarted(Scenario scenario, int scenariosLeft) {
+
+ }
+
+ @Override
+ public void error(Scenario scenario, int scenariosLeft, Throwable throwable) {
+
+ }
+
+ @Override
+ public void scenarioPaused(Scenario scenario, int scenariosLeft) {
+
+ }
+
+ @Override
+ public void scenarioInterrupted(Scenario scenario, int scenariosLeft) {
+
+ }
+
+ private ServerView() throws HeadlessException {
+ ServerView.mainWindow = this;
+
+ setTitle("Vadere GUI - Server");
+ setBounds(100, 100, 1000, 600);
+ setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
+
+ }
+
+
+ public static void close(){
+ EventQueue.invokeLater(() -> {
+ mainWindow.setVisible(false);
+ mainWindow.dispose();
+ });
+ }
+
+ public static void startServerGui(OnlineVisualization onlineVisualization){
+ EventQueue.invokeLater(() -> {
+
+ ServerView frame = new ServerView();
+ frame.setVisible(true);
+ frame.setSize(1200, 800);
+ frame.add(onlineVisualization.getVisualizationPanel());
+ onlineVisualization.getMainPanel().setVisible(true);
+ });
+ }
+
+}
diff --git a/VadereManager/src/org/vadere/manager/Subscription.java b/VadereManager/src/org/vadere/manager/Subscription.java
new file mode 100644
index 0000000000000000000000000000000000000000..acd7efa78e2bd945feefecdc9de710d341995ed1
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/Subscription.java
@@ -0,0 +1,96 @@
+package org.vadere.manager;
+
+import org.vadere.manager.traci.commandHandler.CommandHandler;
+import org.vadere.manager.traci.commandHandler.TraCICmdHandler;
+import org.vadere.manager.traci.TraCICmd;
+import org.vadere.manager.traci.commands.TraCIGetCommand;
+import org.vadere.manager.traci.commands.TraCIValueSubscriptionCommand;
+import org.vadere.manager.traci.respons.StatusResponse;
+import org.vadere.manager.traci.respons.TraCIGetResponse;
+import org.vadere.manager.traci.respons.TraCIStatusResponse;
+import org.vadere.manager.traci.respons.TraCISubscriptionResponse;
+import org.vadere.util.logging.Logger;
+
+import java.util.Arrays;
+
+public class Subscription {
+
+ private static Logger logger = Logger.getLogger(Subscription.class);
+
+ private final TraCICmdHandler traCICmdHandler;
+ private final TraCICmd responseIdentifier;
+ private final TraCIValueSubscriptionCommand valueSubscriptionCommand;
+ private boolean markedForRemoval;
+
+ public Subscription(TraCICmdHandler traCICmdHandler, TraCICmd responseIdentifier, TraCIValueSubscriptionCommand valueSubscriptionCommand) {
+ this.traCICmdHandler = traCICmdHandler;
+ this.responseIdentifier = responseIdentifier;
+ this.valueSubscriptionCommand = valueSubscriptionCommand;
+ this.markedForRemoval = false;
+ }
+
+ public void executeSubscription(RemoteManager remoteManager){
+ TraCISubscriptionResponse subResponse = new TraCISubscriptionResponse(
+ new StatusResponse(valueSubscriptionCommand.getTraCICmd(), TraCIStatusResponse.OK, ""),
+ responseIdentifier, valueSubscriptionCommand.getElementIdentifier(), valueSubscriptionCommand.getNumberOfVariables());
+
+ for (TraCIGetCommand getCmd : valueSubscriptionCommand.getGetCommands()) {
+ traCICmdHandler.handel(getCmd, remoteManager);
+ TraCIGetResponse getResponse = getCmd.getResponse();
+
+ if (getResponse.getStatusResponse().getResponse().equals(TraCIStatusResponse.ERR)){
+ logger.warn("Get command returned error: " + getResponse.getStatusResponse().getDescription());
+ if (getResponse.getStatusResponse().getDescription().equals(CommandHandler.ELEMENT_ID_NOT_FOUND)){
+ logger.warn("Mark Subscription for removal. Subscribed element no longer exists");
+ markForRemoval();
+ logger.warnf(toString());
+ break;
+ }
+ }
+
+ subResponse.addVariableResponse(getResponse.getVariableIdentifier(),
+ getResponse.getStatusResponse().getResponse(),
+ getResponse.getResponseDataType(),
+ getResponse.getResponseData());
+ }
+
+ if (markedForRemoval){
+ valueSubscriptionCommand.setResponse(
+ TraCISubscriptionResponse.removeResponse(valueSubscriptionCommand, responseIdentifier));
+ } else {
+ valueSubscriptionCommand.setResponse(subResponse);
+ }
+ }
+
+ public void markForRemoval(){
+ this.markedForRemoval = true;
+ }
+
+ public boolean isMarkedForRemoval() {
+ return markedForRemoval;
+ }
+
+ public TraCICmdHandler getTraCICmdHandler() {
+ return traCICmdHandler;
+ }
+
+ public TraCICmd getResponseIdentifier() {
+ return responseIdentifier;
+ }
+
+ public TraCIValueSubscriptionCommand getValueSubscriptionCommand() {
+ return valueSubscriptionCommand;
+ }
+
+ public String getSubscriptionId(){
+ return "SubID_" + valueSubscriptionCommand.getTraCICmd().name() + "-" + valueSubscriptionCommand.getElementIdentifier();
+ }
+
+ @Override
+ public String toString() {
+ String varList = Arrays.toString(valueSubscriptionCommand.getVariables().toArray());
+ return "Subscription{ API="+valueSubscriptionCommand.getTraCICmd().name()+
+ " objectId='" + valueSubscriptionCommand.getElementIdentifier() + "' " +
+ "subscribedVariables=" + varList + "}";
+ }
+}
diff --git a/VadereManager/src/org/vadere/manager/TraCIException.java b/VadereManager/src/org/vadere/manager/TraCIException.java
new file mode 100644
index 0000000000000000000000000000000000000000..ffbb568ff04ee533193cc3e5fd86c8b3021a9f2c
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/TraCIException.java
@@ -0,0 +1,41 @@
+package org.vadere.manager;
+
+import org.vadere.manager.traci.TraCICmd;
+import org.vadere.manager.traci.commands.TraCIGetCommand;
+
+public class TraCIException extends RuntimeException {
+
+ public TraCIException(String message) {
+ super(message);
+ }
+
+ public TraCIException(String message, Object... arg) {
+ super(String.format(message, arg));
+ }
+
+ public TraCIException(String message, Throwable cause, Object... arg) {
+ super(String.format(message, arg), cause);
+ }
+
+ public TraCIException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public static TraCIException cmdErr(TraCICmd cmd, Throwable cause){
+ return new TraCIException("Error creating command: " + cmd.toString(), cause);
+ }
+
+ public static TraCIException cmdErrDatatype(TraCICmd cmd, Throwable cause){
+ return new TraCIException("Error creating Datatype: " + cmd.toString(), cause);
+ }
+
+ public static TraCIException cmdErrVariableType(TraCICmd cmd, Throwable cause){
+ return new TraCIException("Error creating PersonVar: " + cmd.toString(), cause);
+ }
+
+ public static TraCIException getNotImplemented(TraCIGetCommand cmd){
+ return new TraCIException("GetCommand for variableIdentifier " + cmd.getVariableIdentifier()
+ + "not supported in API: " + cmd.getTraCICmd().toString());
+ }
+
+}
diff --git a/VadereManager/src/org/vadere/manager/TraCISocket.java b/VadereManager/src/org/vadere/manager/TraCISocket.java
new file mode 100644
index 0000000000000000000000000000000000000000..c3d3ab9b1af9a4ea3b7879463bc7f3cdad0ab4bb
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/TraCISocket.java
@@ -0,0 +1,97 @@
+package org.vadere.manager;
+
+import org.vadere.manager.traci.writer.TraCIPacket;
+import org.vadere.manager.traci.reader.TraCIPacketBuffer;
+import org.vadere.manager.traci.respons.TraCIResponse;
+
+import java.io.Closeable;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.net.Socket;
+import java.nio.ByteBuffer;
+
+/**
+ * //todo comment
+ */
+public class TraCISocket implements Closeable {
+
+ private final static int TRACI_LEN_LENGTH = 4;
+
+ private final Socket socket;
+ private final DataOutputStream outStream;
+ private final DataInputStream inStream;
+ private String host;
+ private int port;
+
+ public TraCISocket(Socket socket) throws IOException {
+ this.socket = socket;
+ this.host = this.socket.getInetAddress().toString();
+ this.port = this.socket.getPort();
+ this.outStream = new DataOutputStream(socket.getOutputStream());
+ this.inStream = new DataInputStream(socket.getInputStream());
+ }
+
+ public int getPort(){
+ return port;
+ }
+
+ public String getHost(){
+ return host;
+ }
+
+ public boolean hasClientConnection(){
+ return socket.isConnected();
+ }
+
+ // send //
+
+ private void send(final byte[] buf) throws IOException {
+ outStream.write(buf);
+ }
+
+ private void send(ByteBuffer buf) throws IOException {
+ outStream.write(buf.array(), buf.arrayOffset(), buf.array().length);
+ }
+
+ public void sendExact(final TraCIPacket packet) throws IOException{
+ send(packet.send());
+ }
+
+
+ // receive //
+
+ public void receiveComplete(byte[] buf, int len) throws IOException {
+ inStream.readFully(buf, 0, len);
+ }
+
+ public byte[] receive (int bufSize) throws IOException{
+ byte[] buf = new byte[bufSize];
+ receiveComplete(buf, bufSize);
+ return buf;
+ }
+
+ public TraCIPacketBuffer receiveExact() throws IOException{
+
+ // read first 4 bytes (containing TracCI packet length)
+ ByteBuffer msgLength = ByteBuffer.wrap(receive(TRACI_LEN_LENGTH));
+ int data_length = msgLength.getInt() - TRACI_LEN_LENGTH;
+
+ if (data_length <=0){
+ return TraCIPacketBuffer.empty();
+ } else {
+ byte[] data = receive(data_length);
+ return TraCIPacketBuffer.wrap(data);
+ }
+ }
+
+ public TraCIResponse receiveResponse() throws IOException {
+ TraCIPacketBuffer buf = receiveExact();
+ return buf.nextResponse();
+ }
+
+ @Override
+ public void close() throws IOException {
+ socket.close();
+ }
+}
diff --git a/VadereManager/src/org/vadere/manager/VadereServer.java b/VadereManager/src/org/vadere/manager/VadereServer.java
new file mode 100644
index 0000000000000000000000000000000000000000..3eebb4df93f3f49e95dca6a23aa8e987e5c6a070
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/VadereServer.java
@@ -0,0 +1,63 @@
+package org.vadere.manager;
+
+import org.vadere.manager.traci.TraCIVersion;
+import org.vadere.util.logging.Logger;
+
+import java.io.IOException;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.nio.file.Path;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * //todo comment
+ */
+public class VadereServer implements Runnable{
+
+ private static Logger logger = Logger.getLogger(VadereServer.class);
+
+ public static int SUPPORTED_TRACI_VERSION = 20;
+// public static int SUPPORTED_TRACI_VERSION = 1;
+ public static String SUPPORTED_TRACI_VERSION_STRING = "Vadere Simulator. Supports subset of commands based von TraCI Version " + SUPPORTED_TRACI_VERSION;
+ public static TraCIVersion currentVersion = TraCIVersion.V20_0_2;
+
+ private final ServerSocket serverSocket;
+ private final ExecutorService handlerPool;
+ private final Path baseDir;
+ private final boolean guiSupport;
+
+ public VadereServer(ServerSocket serverSocket, ExecutorService handlerPool, Path baseDir, boolean guiSupport) {
+ this.serverSocket = serverSocket;
+ this.handlerPool = handlerPool;
+ this.baseDir = baseDir;
+ this.guiSupport = guiSupport;
+ }
+
+ @Override
+ public void run() {
+ try {
+ logger.infof("listening on port %d... (gui-mode: %s)", serverSocket.getLocalPort(), Boolean.toString(guiSupport));
+ while (true) {
+ Socket clientSocket = serverSocket.accept();
+
+ handlerPool.execute(new ClientHandler(serverSocket, new TraCISocket(clientSocket), baseDir, guiSupport));
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ logger.warn("Interrupt Vadere Server");
+ } finally {
+ logger.info("Shutdown Vadere Server ...");
+ handlerPool.shutdown();
+ try {
+ handlerPool.awaitTermination(4L, TimeUnit.SECONDS);
+ if (!serverSocket.isClosed()){
+ serverSocket.close();
+ }
+ } catch (InterruptedException | IOException e) {
+ logger.error(e);
+ }
+ }
+
+ }
+}
diff --git a/VadereManager/src/org/vadere/manager/client/ConsoleCommand.java b/VadereManager/src/org/vadere/manager/client/ConsoleCommand.java
new file mode 100644
index 0000000000000000000000000000000000000000..f36b19e6a06479518ccc1427a06ab33cb93267d8
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/client/ConsoleCommand.java
@@ -0,0 +1,9 @@
+package org.vadere.manager.client;
+
+import java.io.IOException;
+
+public interface ConsoleCommand {
+
+ void execute(String[] args) throws IOException;
+
+}
diff --git a/VadereManager/src/org/vadere/manager/client/ConsoleReader.java b/VadereManager/src/org/vadere/manager/client/ConsoleReader.java
new file mode 100644
index 0000000000000000000000000000000000000000..63179a546355db5c6239c79ee8b5571907c106aa
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/client/ConsoleReader.java
@@ -0,0 +1,107 @@
+package org.vadere.manager.client;
+
+import java.io.BufferedReader;
+import java.io.EOFException;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Scanner;
+
+public class ConsoleReader implements Runnable{
+
+ private HashMap cmdMap;
+ private HashMap helpMap;
+ private BufferedReader reader;
+ private Scanner scanner;
+ private boolean running;
+
+ public ConsoleReader() {
+ cmdMap = new HashMap<>();
+ helpMap = new HashMap<>();
+ reader = new BufferedReader(new InputStreamReader(System.in));
+ running = true;
+
+ addCommand("help", "Print this Help", this::cmd_help);
+ }
+
+ private void cmd_help(String[] args){
+ if (! args[0].equals("help"))
+ System.out.println("Unknown command: " + args[0]);
+
+ System.out.println("Help: ");
+ int cmdLen = helpMap.entrySet().stream().map(o->o.getKey().length()).max(Integer::compareTo).orElse(20);
+ helpMap.entrySet()
+ .stream()
+ .sorted(Comparator.comparing(Map.Entry::getKey))
+ .forEach(e -> {
+ System.out.printf("%-" + cmdLen + "s %s\n", e.getKey(), e.getValue());
+ });
+ System.out.println("");
+ }
+
+ private void executeCmd(String cmdStr){
+ if(cmdStr.equals(""))
+ return;
+ String[] cmdArgs = cmdStr.split(" ");
+ ConsoleCommand cmd = cmdMap.getOrDefault(cmdArgs[0], this::cmd_help);
+ try {
+ cmd.execute(cmdArgs);
+ } catch (EOFException eof){
+ System.out.println("Server closed connection");
+ stop();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public void addCommand(String cmdStr, String cmdHelp, ConsoleCommand cmd){
+ cmdMap.put(cmdStr, cmd);
+ helpMap.put(cmdStr, cmdHelp);
+ }
+
+ private void commandLoop(){
+ while (running){
+
+ try {
+ System.out.print("> ");
+ String cmd = reader.readLine();
+ executeCmd(cmd.trim());
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ System.out.println("ending....");
+ }
+
+ synchronized public void stop(){
+ running = false;
+ }
+
+ public static void main(String[] args){
+ ConsoleReader r = new ConsoleReader();
+ r.addCommand("do-shit", "guess..",
+ args1 -> System.out.println("do-shit with "+ Arrays.toString(args1)));
+
+ Thread thread = new Thread(r);
+
+ System.out.println("start..");
+
+ thread.start();
+
+ try {
+ thread.join();
+ System.out.println("joined");
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void run() {
+ commandLoop();
+ }
+}
diff --git a/VadereManager/src/org/vadere/manager/client/TestClient.java b/VadereManager/src/org/vadere/manager/client/TestClient.java
new file mode 100644
index 0000000000000000000000000000000000000000..1b40cb2e485fa84f8321001c99302b3d13fd291e
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/client/TestClient.java
@@ -0,0 +1,268 @@
+package org.vadere.manager.client;
+
+import org.vadere.manager.TraCISocket;
+import org.vadere.manager.traci.commands.control.TraCICloseCommand;
+import org.vadere.manager.traci.commands.control.TraCIGetVersionCommand;
+import org.vadere.manager.traci.commands.control.TraCISendFileCommand;
+import org.vadere.manager.traci.commands.control.TraCISimStepCommand;
+import org.vadere.manager.traci.reader.TraCIPacketBuffer;
+import org.vadere.manager.traci.respons.TraCIGetResponse;
+import org.vadere.manager.traci.respons.TraCIResponse;
+import org.vadere.manager.traci.respons.TraCISimTimeResponse;
+import org.vadere.manager.traci.writer.TraCIPacket;
+import org.vadere.util.geometry.shapes.VPoint;
+import org.vadere.util.io.IOUtils;
+
+import java.io.IOException;
+import java.net.ConnectException;
+import java.net.InetSocketAddress;
+import java.net.Socket;
+import java.util.ArrayList;
+import java.util.Arrays;
+
+public class TestClient extends org.vadere.manager.client.AbstractTestClient implements Runnable{
+
+ private int port;
+ private TraCISocket traCISocket;
+ private ConsoleReader consoleReader;
+ private Thread consoleThread;
+ private boolean running;
+
+ public static void main(String[] args) throws IOException, InterruptedException {
+ TestClient testClient = new TestClient(9999);
+ testClient.run();
+ }
+
+
+ public TestClient(int port) {
+ this.port = port;
+ this.running = false;
+ }
+
+
+ private void addCommands(ConsoleReader consoleReader){
+ consoleReader.addCommand("ctr.getVersion", "", this::getVersion);
+ consoleReader.addCommand("ctr.sendFile", "send file. default: scenario001", this::sendFile);
+ consoleReader.addCommand("ctr.nextStep", "default(-1) one loop.", this::nextSimTimeStep);
+ consoleReader.addCommand("ctr.close", "Close application and stop running simulations", this::close);
+ }
+
+ private void establishConnection() throws IOException, InterruptedException {
+ Socket socket = new Socket();
+ socket.setTcpNoDelay(true);
+ int waitTime = 500; //ms
+ System.out.println("Connect to 127.0.0.1:" + this.port);
+ for (int i = 0; i < 14; i++) {
+ try {
+ socket.connect(new InetSocketAddress("127.0.0.1", this.port));
+ break;
+ } catch (ConnectException ex) {
+ Thread.sleep(waitTime);
+ waitTime *= 2;
+ }
+ }
+
+ if (!socket.isConnected()) {
+ System.out.println("can't connect to Server!");
+ return;
+ }
+
+ System.out.println("connected...");
+ traCISocket = new TraCISocket(socket);
+
+ running = true;
+ }
+
+ private void handleConnection() throws IOException {
+ try{
+
+ consoleReader = new ConsoleReader();
+ addCommands(consoleReader);
+ init(traCISocket, consoleReader);
+ consoleThread = new Thread(consoleReader);
+ consoleThread.start();
+
+ consoleThread.join();
+
+
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ } finally {
+ if (traCISocket != null)
+ traCISocket.close();
+ if (consoleReader != null)
+ consoleReader.stop();
+ }
+ }
+
+
+ @Override
+ public void run() {
+
+ try {
+ establishConnection();
+ handleConnection();
+ } catch (IOException e) {
+ e.printStackTrace();
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+
+ }
+
+ // Commands
+
+ void getVersion(String[] args) throws IOException {
+ TraCIPacket p = TraCIGetVersionCommand.build();
+ traCISocket.sendExact(p);
+
+ TraCIPacketBuffer buf = traCISocket.receiveExact();
+ TraCIResponse cmd = buf.nextResponse();
+
+ System.out.println(cmd.toString());
+
+ }
+
+ void close(String[] args) throws IOException {
+
+ traCISocket.sendExact(TraCICloseCommand.build());
+
+ TraCIResponse cmd = traCISocket.receiveResponse();
+ System.out.println(cmd);
+
+ System.out.println("Bye");
+ consoleReader.stop();
+ }
+
+
+ void nextSimTimeStep(String[] args) throws IOException{
+ double nextSimTime = -1.0;
+
+ if (args.length > 1)
+ nextSimTime = Double.parseDouble(args[1]);
+
+ TraCIPacket packet = TraCISimStepCommand.build(nextSimTime);
+ traCISocket.sendExact(packet);
+
+ TraCISimTimeResponse cmd = (TraCISimTimeResponse) traCISocket.receiveResponse();
+ System.out.println(cmd.toString());
+ }
+
+
+ void sendFile(String[] args) throws IOException {
+
+ String filePath = "/home/stsc/repos/vadere/VadereManager/testResources/testProject001/scenarios/";
+
+ if (args.length > 1) {
+ filePath = filePath + args[1] + ".scenario";
+ } else {
+ System.out.println("use default scenario001.scenario");
+ filePath = filePath + "scenario001.scenario";
+ }
+
+ String data;
+ try{
+ data = IOUtils.readTextFile(filePath);
+ } catch (IOException e){
+ System.out.println("File not found: " + filePath);
+ return;
+ }
+
+ TraCIPacket packet = TraCISendFileCommand.TraCISendFileCommand("Test", data);
+
+ traCISocket.sendExact(packet);
+
+ TraCIPacketBuffer buf = traCISocket.receiveExact();
+ TraCIResponse cmd = buf.nextResponse();
+
+ System.out.println(cmd.toString());
+ }
+
+ @Override
+ public void personapi_getIDList(String[] args) throws IOException {
+ TraCIGetResponse res = personapi.getIDList();
+ System.out.println(res.getResponseData());
+ }
+
+ @Override
+ public void personapi_getIDCount(String[] args) throws IOException {
+
+ }
+
+ @Override
+ public void personapi_getSpeed(String[] args) throws IOException {
+
+ }
+
+ @Override
+ public void personapi_getPosition2D(String[] args) throws IOException {
+ if(args.length < 2){
+ System.out.println("command needs argument (id)");
+ return;
+ }
+ String elementIdentifier = args[1];
+ TraCIGetResponse res = personapi.getPosition2D(elementIdentifier);
+ VPoint p = (VPoint) res.getResponseData();
+ System.out.println(p.toString());
+ }
+
+ @Override
+ public void personapi_getPosition3D(String[] args) throws IOException {
+
+ }
+
+ @Override
+ public void personapi_getLength(String[] args) throws IOException {
+
+ }
+
+ @Override
+ public void personapi_getWidth(String[] args) throws IOException {
+
+ }
+
+ @Override
+ public void personapi_getRoadId(String[] args) throws IOException {
+
+ }
+
+ @Override
+ public void personapi_getAngle(String[] args) throws IOException {
+
+ }
+
+ @Override
+ public void personapi_getType(String[] args) throws IOException {
+
+ }
+
+ @Override
+ public void personapi_getTargetList(String[] args) throws IOException {
+ if(args.length < 2){
+ System.out.println("command needs argument (id)");
+ return;
+ }
+
+ String elementIdentifier = args[1];
+ TraCIGetResponse res = personapi.getTargetList(elementIdentifier);
+ ArrayList targets = (ArrayList) res.getResponseData();
+ System.out.println(elementIdentifier + ": " + Arrays.toString(targets.toArray()));
+ }
+
+ @Override
+ public void personapi_setTargetList(String[] args) throws IOException {
+ if(args.length < 3){
+ System.out.println("command needs argument element id and at least one target id");
+ return;
+ }
+
+ String elementIdentifier = args[1];
+ ArrayList targets = new ArrayList<>();
+ for (int i = 2; i < args.length; i++){
+ targets.add(args[i]);
+ }
+
+ TraCIResponse res = personapi.setTargetList(elementIdentifier, targets);
+ System.out.println(res.toString());
+ }
+}
diff --git a/VadereManager/src/org/vadere/manager/client/traci/TraCIClientApi.java b/VadereManager/src/org/vadere/manager/client/traci/TraCIClientApi.java
new file mode 100644
index 0000000000000000000000000000000000000000..22c5706c00c91a7d2effbda1a164f77e0ee0ccb7
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/client/traci/TraCIClientApi.java
@@ -0,0 +1,14 @@
+package org.vadere.manager.client.traci;
+
+import org.vadere.manager.TraCISocket;
+
+public abstract class TraCIClientApi {
+
+ protected TraCISocket socket;
+ protected String apiName;
+
+ public TraCIClientApi(TraCISocket socket, String apiName) {
+ this.socket = socket;
+ this.apiName = apiName;
+ }
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/CmdType.java b/VadereManager/src/org/vadere/manager/traci/CmdType.java
new file mode 100644
index 0000000000000000000000000000000000000000..4b33dbd3f51e79cf4c32a43c60cc48fabb842dde
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/CmdType.java
@@ -0,0 +1,13 @@
+package org.vadere.manager.traci;
+
+/**
+ * Command Types of TraCI. Used to cluster commands.
+ */
+public enum CmdType {
+ CTRL,
+ VALUE_GET,
+ VALUE_SET,
+ VALUE_SUB,
+ CONTEXT_SUB,
+ RESPONSE
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/TraCICmd.java b/VadereManager/src/org/vadere/manager/traci/TraCICmd.java
new file mode 100644
index 0000000000000000000000000000000000000000..6d79a61838e18376d2e1cc8ec8d5b5c776675d84
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/TraCICmd.java
@@ -0,0 +1,111 @@
+package org.vadere.manager.traci;
+
+import org.vadere.manager.TraCIException;
+
+/**
+ * List of all TraCI Commands and there Types.
+ */
+public enum TraCICmd {
+ // TraCI/Control-related commands
+ GET_VERSION(0x00, CmdType.CTRL),
+ SIM_STEP(0x02,CmdType.CTRL),
+ CLOSE(0x7F, CmdType.CTRL),
+ LOAD(0x01,CmdType.CTRL),
+ SET_ORDER(0x03, CmdType.CTRL),
+ SEND_FILE(0x75, CmdType.CTRL),
+ // Value Retrieval
+ GET_INDUCTION_LOOP(0xa0, CmdType.VALUE_GET),
+ RESPONSE_GET_INDUCTION_LOOP(0xb0, CmdType.RESPONSE),
+ GET_MULTI_ENTRY_EXIT_DETECTOR(0xa1, CmdType.VALUE_GET),
+ RESPONSE_GET_MULTI_ENTRY_EXIT_DETECTOR(0xb1, CmdType.RESPONSE),
+ GET_TRAFFIC_LIGHT_VALUE(0xa2, CmdType.VALUE_GET),
+ RESPONSE_GET_TRAFFIC_LIGHT_VALUE(0xb2, CmdType.RESPONSE),
+ GET_LANE_VALUE(0xa3, CmdType.VALUE_GET),
+ RESPONSE_GET_LANE_VALUE(0xb3,CmdType.RESPONSE),
+ GET_VEHICLE_VALUE(0xa4, CmdType.VALUE_GET),
+ RESPONSE_GET_VEHICLE_VALUE(0xb4, CmdType.RESPONSE),
+ GET_VEHICLE_TYPE_VALUE(0xa5, CmdType.VALUE_GET),
+ RESPONSE_GET_VEHICLE_TYPE_VALUE(0xb5, CmdType.RESPONSE),
+ GET_ROUTE_VALUE(0xa6, CmdType.VALUE_GET),
+ RESPONSE_GET_ROUTE_VALUE(0xb6, CmdType.RESPONSE),
+ GET_POI_VALUE(0xa7, CmdType.VALUE_GET),
+ RESPONSE_GET_POI_VALUE(0xb7, CmdType.RESPONSE),
+ GET_POLYGON(0xa8, CmdType.VALUE_GET),
+ RESPONSE_GET_POLYGON(0xb8, CmdType.RESPONSE),
+ GET_JUNCTION_VALUE(0xa9, CmdType.VALUE_GET),
+ RESPONSE_GET_JUNCTION_VALUE(0xb9, CmdType.RESPONSE),
+ GET_EDGE_VALUE(0xaa, CmdType.VALUE_GET),
+ RESPONSE_GET_EDGE_VALUE(0xba, CmdType.RESPONSE),
+ GET_SIMULATION_VALUE(0xab, CmdType.VALUE_GET),
+ RESPONSE_GET_SIMULATION_VALUE(0xbb, CmdType.RESPONSE),
+ GET_GUI_VALUE(0xac, CmdType.VALUE_GET),
+ RESPONSE_GET_GUI_VALUE(0xbc, CmdType.RESPONSE),
+ GET_LANEAREA_DETECTOR(0xad, CmdType.VALUE_GET),
+ RESPONSE_GET_LANEAREA_DETECTOR(0xbd, CmdType.RESPONSE),
+ GET_PERSON_VALUE(0xae, CmdType.VALUE_GET),
+ RESPONSE_GET_PERSON_VALUE(0xbe, CmdType.RESPONSE),
+ // State Changing
+ SET_TRAFFIC_LIGHT_STATE(0xc2, CmdType.VALUE_SET),
+ SET_LANE_STATE(0xc3,CmdType.VALUE_SET),
+ SET_VEHICLE_STATE(0xc4, CmdType.VALUE_SET),
+ SET_PERSON_STATE(0xce, CmdType.VALUE_SET),
+ SET_VEHICLE_TYPE_STATE(0xc5, CmdType.VALUE_SET),
+ SET_ROUTE_STATE(0xc6, CmdType.VALUE_SET),
+ SET_POT_STATE(0xc7, CmdType.VALUE_SET),
+ SET_POLYGON_STATE(0xc8, CmdType.VALUE_SET),
+ SET_EDGE_STATE(0xca, CmdType.VALUE_SET),
+ SET_SIMULATION_STATE(0xcc, CmdType.VALUE_SET),
+ SET_GUI_STATE(0xcc, CmdType.VALUE_SET),
+ // TraCI/Object Variable Subscription
+ SUB_INDUCTION_LOOP_VALUE(0xd0, CmdType.VALUE_SUB),
+ RESPONSE_SUB_INDUCTION_LOOP_VALUE(0xe0, CmdType.RESPONSE),
+ SUB_MULTI_ENTRY_EXIT_DETECTOR_VALUE(0xd1, CmdType.VALUE_SUB),
+ RESPONSE_SUB_MULTI_ENTRY_EXIT_DETECTOR_VALUE(0xe1, CmdType.RESPONSE),
+ SUB_TRAFFIC_LIGHT_VALUE(0xd2, CmdType.VALUE_SUB),
+ RESPONSE_SUB_TRAFFIC_LIGHT_VALUE(0xe2, CmdType.RESPONSE),
+ SUB_LANE_VALUE(0xd3, CmdType.VALUE_SUB),
+ RESPONSE_SUB_LANE_VALUE(0xe3, CmdType.RESPONSE),
+ SUB_VEHICLE_VALUE(0xd4, CmdType.VALUE_SUB),
+ RESPONSE_SUB_VEHICLE_VALUE(0xe4, CmdType.RESPONSE),
+ SUB_VEHICLE_TYPE_VALUE(0xd5, CmdType.VALUE_SUB),
+ RESPONSE_SUB_VEHICLE_TYPE_VALUE(0xe5, CmdType.RESPONSE),
+ SUB_ROUTE_VALUE(0xd6, CmdType.VALUE_SUB),
+ RESPONSE_SUB_ROUTE_VALUE(0xe6, CmdType.RESPONSE),
+ SUB_POI_VALUE(0xd7, CmdType.VALUE_SUB),
+ RESPONSE_SUB_POI_VALUE(0xe7, CmdType.RESPONSE),
+ SUB_POLYGON_VALUE(0xd8, CmdType.VALUE_SUB),
+ RESPONSE_SUB_POLYGON_VALUE(0xe8, CmdType.RESPONSE),
+ SUB_JUNCTION_VALUE(0xd9, CmdType.VALUE_SUB),
+ RESPONSE_SUB_JUNCTION_VALUE(0xe9, CmdType.RESPONSE),
+ SUB_EDGE_VALUE(0xda, CmdType.VALUE_SUB),
+ RESPONSE_SUB_EDGE_VALUE(0xea, CmdType.RESPONSE),
+ SUB_SIMULATION_VALUE(0xdb, CmdType.VALUE_SUB),
+ RESPONSE_SUB_SIMULATION_VALUE(0xeb, CmdType.RESPONSE),
+ SUB_PERSON_VARIABLE(0xde, CmdType.VALUE_SUB),
+ RESPONSE_SUB_PERSON_VARIABLE(0xee, CmdType.RESPONSE),
+ // TraCI/Object Context Subscription
+ ;
+
+ public int id;
+ public CmdType type;
+
+ TraCICmd(int id, CmdType type) {
+ this.id = id;
+ this.type = type;
+
+ }
+
+ public static TraCICmd fromId(int id){
+ for(TraCICmd traCICmd : values()){
+ if (traCICmd.id == id)
+ return traCICmd;
+ }
+ throw new TraCIException(String.format("No TraCI command found with id: %02X", id));
+ }
+
+ @Override
+ public String toString() {
+
+ return String.format("TraCICmd{%s: id=0x%02X, type=%s}", name(), id, type );
+ }
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/TraCIDataType.java b/VadereManager/src/org/vadere/manager/traci/TraCIDataType.java
new file mode 100644
index 0000000000000000000000000000000000000000..f44ebb81facbd7845922b3f1e3aeac1de32c9f24
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/TraCIDataType.java
@@ -0,0 +1,54 @@
+package org.vadere.manager.traci;
+
+import org.vadere.manager.TraCIException;
+
+/**
+ * Possible data types used in TraCI
+ */
+public enum TraCIDataType {
+ U_BYTE(0x07, 1, true),
+ BYTE(0x08, 1, true),
+ INTEGER(0x09,4,true),
+ DOUBLE(0x0B,8,true),
+ STRING(0x0C,-1,true),
+ STRING_LIST(0x0E,-1,true),
+ COMPOUND_OBJECT(0x0F,-1,true),
+ POS_2D(0x01,17,false),
+ POS_3D(0x03,25,false),
+ POS_ROAD_MAP(0x04, -1,false),
+ POS_LON_LAT(0x00,17,false),
+ POS_LON_LAT_ALT(0x02, 25,false),
+ POLYGON(0x06,-1,false),
+ TRAFFIC_LIGHT_PHASE_LIST(0x0D,-1,false),
+ COLOR(0x11,5,false),
+ ;
+
+
+
+ public int id;
+ public int size_in_byte;
+ public boolean isAtomar;
+
+
+ TraCIDataType(int identifier, int size_in_byte, boolean isAtomar){
+ this.id = identifier;
+ this.size_in_byte = size_in_byte;
+ this.isAtomar = isAtomar;
+ }
+
+ public static TraCIDataType fromId(int id){
+ for(TraCIDataType dataType : values()){
+ if (dataType.id == id)
+ return dataType;
+ }
+ throw new TraCIException(String.format("No TraCI data type found for given id: %02X", id));
+ }
+
+ @Override
+ public String toString() {
+ return "TraCIDataType{" +
+ name() +
+ ": id=" + id +
+ '}';
+ }
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/TraCIVersion.java b/VadereManager/src/org/vadere/manager/traci/TraCIVersion.java
new file mode 100644
index 0000000000000000000000000000000000000000..79681c3c8c3b9572ef6e617d19caa6af4b43db67
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/TraCIVersion.java
@@ -0,0 +1,32 @@
+package org.vadere.manager.traci;
+
+public enum TraCIVersion {
+ V20_0_1(20, 0,1),
+ V20_0_2(20, 0,2); // allow cache transfer
+
+ private static final String versionStringTemplate = "VadereTraCI-%d.%d.%d This is a TraCI Server implementing only a small subset of TraCI Version %d";
+
+ public int traciBaseVersion;
+ public int vadereApiMajor;
+ public int vadereApiMinor;
+
+ TraCIVersion(int traciBaseVersion, int vadereApiMajor, int vadereApiMinor) {
+ this.traciBaseVersion = traciBaseVersion;
+ this.vadereApiMajor = vadereApiMajor;
+ this.vadereApiMinor = vadereApiMinor;
+ }
+
+ public static TraCIVersion valueOf(int ordinalId){
+ if (ordinalId < 0 || ordinalId >= values().length)
+ throw new IllegalArgumentException("given ordinalId is outside of this Enum.");
+ return values()[ordinalId];
+ }
+
+ public boolean greaterOrEqual(TraCIVersion v){
+ return ordinal() >= v.ordinal();
+ }
+
+ public String getVersionString(){
+ return String.format(versionStringTemplate, traciBaseVersion, vadereApiMajor, vadereApiMinor, traciBaseVersion);
+ }
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/commandHandler/CommandExecutor.java b/VadereManager/src/org/vadere/manager/traci/commandHandler/CommandExecutor.java
new file mode 100644
index 0000000000000000000000000000000000000000..002b0623f2b99459c8526e01c5eed9ac9c85de2a
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/commandHandler/CommandExecutor.java
@@ -0,0 +1,53 @@
+package org.vadere.manager.traci.commandHandler;
+
+import org.vadere.manager.RemoteManager;
+import org.vadere.manager.traci.TraCICmd;
+import org.vadere.manager.traci.commands.TraCICommand;
+import org.vadere.manager.traci.commands.TraCISetCommand;
+import org.vadere.manager.traci.writer.TraCIPacket;
+import org.vadere.util.logging.Logger;
+
+import java.util.HashMap;
+
+/**
+ * Dispatcher for {@link TraCICommand}s.
+ */
+public class CommandExecutor {
+
+ private static Logger logger = Logger.getLogger(CommandExecutor.class);
+
+ private HashMap cmdMap;
+ private RemoteManager remoteManager;
+
+ public CommandExecutor(RemoteManager remoteManager) {
+ this.remoteManager = remoteManager;
+ cmdMap = new HashMap<>();
+ cmdMap.put(TraCICmd.GET_VERSION.id, ControlCommandHandler.instance::process_getVersion );
+ cmdMap.put(TraCICmd.LOAD.id, ControlCommandHandler.instance::process_load);
+ cmdMap.put(TraCICmd.SIM_STEP.id, ControlCommandHandler.instance::process_simStep);
+ cmdMap.put(TraCICmd.CLOSE.id, ControlCommandHandler.instance::process_close);
+ cmdMap.put(TraCICmd.SEND_FILE.id, ControlCommandHandler.instance::process_load_file);
+ cmdMap.put(TraCICmd.GET_PERSON_VALUE.id, PersonCommandHandler.instance::processGet);
+ cmdMap.put(TraCICmd.SET_PERSON_STATE.id, PersonCommandHandler.instance::processSet);
+ cmdMap.put(TraCICmd.SUB_PERSON_VARIABLE.id, PersonCommandHandler.instance::processValueSub);
+ cmdMap.put(TraCICmd.GET_SIMULATION_VALUE.id, SimulationCommandHandler.instance::processGet);
+ cmdMap.put(TraCICmd.SET_SIMULATION_STATE.id, SimulationCommandHandler.instance::processSet);
+ cmdMap.put(TraCICmd.SUB_SIMULATION_VALUE.id, SimulationCommandHandler.instance::processValueSub);
+ cmdMap.put(TraCICmd.GET_VEHICLE_VALUE.id, VehicleCommandHandler.instance::processGet);
+ cmdMap.put(TraCICmd.SUB_VEHICLE_VALUE.id, VehicleCommandHandler.instance::processValueSub);
+ cmdMap.put(TraCICmd.GET_POLYGON.id, PolygonCommandHandler.instance::processGet);
+ cmdMap.put(TraCICmd.SET_POLYGON_STATE.id, PolygonCommandHandler.instance::processSet);
+ cmdMap.put(TraCICmd.SUB_POLYGON_VALUE.id, PolygonCommandHandler.instance::processValueSub);
+ cmdMap.put(TraCICmd.SET_VEHICLE_STATE.id, (cmd, manager) -> ((TraCISetCommand)cmd).setOK() ); //todo just say ok but do nothing
+ }
+
+ public TraCIPacket execute(TraCICommand cmd){
+ TraCICmdHandler handler = cmdMap.get(cmd.getTraCICmd().id);
+ if (handler == null){
+ logger.errorf("No CommandHandler found for command: %02X", cmd.getTraCICmd().id);
+ return TraCIPacket.create().add_Err_StatusResponse(cmd.getTraCICmd().id, "ID not found.");
+ }
+
+ return handler.handel(cmd, remoteManager).buildResponsePacket();
+ }
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/commandHandler/CommandHandler.java b/VadereManager/src/org/vadere/manager/traci/commandHandler/CommandHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..be4b98194d5c342961473371bee5fc4f68b8d53c
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/commandHandler/CommandHandler.java
@@ -0,0 +1,143 @@
+package org.vadere.manager.traci.commandHandler;
+
+import org.apache.commons.lang3.tuple.Pair;
+import org.vadere.manager.RemoteManager;
+import org.vadere.manager.Subscription;
+import org.vadere.manager.traci.TraCICmd;
+import org.vadere.manager.traci.TraCIDataType;
+import org.vadere.manager.traci.commands.TraCICommand;
+import org.vadere.manager.traci.commands.TraCIGetCommand;
+import org.vadere.manager.traci.commands.TraCIValueSubscriptionCommand;
+import org.vadere.manager.traci.respons.StatusResponse;
+import org.vadere.manager.traci.respons.TraCIGetResponse;
+import org.vadere.manager.traci.respons.TraCIStatusResponse;
+import org.vadere.manager.traci.writer.TraCIPacket;
+import org.vadere.util.logging.Logger;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+
+/**
+ * {@link CommandHandler} classes perform the actual request within the command.
+ *
+ * See {@link CommandExecutor} on how commands are dispatched to the correct {@link CommandHandler}
+ * subclass. These classes implement methods which adhere to the TraCICmdHandler Interface. These
+ * methods are used by the {@link CommandExecutor} for dispatching.
+ *
+ */
+public abstract class CommandHandler {
+
+ private static Logger logger = Logger.getLogger(CommandHandler.class);
+
+ public static final String ELEMENT_ID_NOT_FOUND = "No element found with given object id ";
+ protected HashMap, Method> handler;
+ private final Method processNotImplemented;
+
+ public CommandHandler() {
+ handler = new HashMap<>();
+ Method tmp = null;
+ for (Method m : CommandHandler.class.getMethods()){
+ if (m.getName().equals("process_NotImplemented")){
+ tmp = m;
+ break;
+ }
+ }
+ assert (tmp != null) : "No Method found with name 'process_NotImplemented'";
+ processNotImplemented = tmp;
+ }
+
+ protected Method getHandler(TraCICmd cmd, VAR var){
+ return handler.getOrDefault(Pair.of(cmd, var), processNotImplemented);
+ }
+
+ protected abstract void init_HandlerSingle(Method m);
+ protected abstract void init_HandlerMult(Method m);
+
+ protected void putHandler(TraCICmd cmd, VAR var, Method m){
+ logger.debugf("Pair: %s | %s Method: %s", cmd.name(), var.name(), m.getName());
+ handler.put(Pair.of(cmd, var), m);
+ }
+
+ protected void init(Class extends Annotation> singleAnnotation, Class extends Annotation> multAnnotation){
+ for (Method m : this.getClass().getDeclaredMethods()){
+ logger.infof(m.getName());
+ if (m.isAnnotationPresent(singleAnnotation)){
+ init_HandlerSingle(m);
+ }
+ if (m.isAnnotationPresent(multAnnotation)){
+ init_HandlerMult(m);
+ }
+ }
+ }
+
+ protected TraCICommand invokeHandler(Method m, Object obj, TraCICommand cmd, RemoteManager manager){
+ try {
+ return (TraCICommand) m.invoke(obj, cmd, manager);
+ } catch (IllegalAccessException | InvocationTargetException e) {
+ e.printStackTrace();
+ }
+ return process_UnknownCommand(cmd, manager);
+ }
+
+
+ public TraCICommand process_NotImplemented(TraCICommand cmd, RemoteManager remoteManager){
+ return cmd.setNOK_response(TraCIPacket.sendStatus(cmd.getTraCICmd(),
+ TraCIStatusResponse.NOT_IMPLEMENTED,
+ "Command " + cmd.getCmdType().toString() + "not Implemented"));
+ }
+
+ public TraCICommand process_UnknownCommand(TraCICommand cmd, RemoteManager remoteManager){
+ return cmd.setNOK_response(TraCIPacket.sendStatus(cmd.getTraCICmd(),
+ TraCIStatusResponse.ERR,
+ "Command " + cmd.getCmdType().toString() + "Unknown"));
+ }
+
+ public TraCIGetResponse responseOK(TraCIDataType responseDataType, Object responseData, TraCICmd apiCmd, TraCICmd apiCmdResponse){
+ TraCIGetResponse res = new TraCIGetResponse(
+ new StatusResponse(apiCmd, TraCIStatusResponse.OK, ""),
+ apiCmdResponse);
+ res.setResponseDataType(responseDataType);
+ res.setResponseData(responseData);
+ return res;
+ }
+
+ public TraCIGetResponse responseERR(String err, TraCICmd apiCmd, TraCICmd apiCmdResponse){
+ TraCIGetResponse res = new TraCIGetResponse(
+ new StatusResponse(apiCmd, TraCIStatusResponse.ERR, err),
+ apiCmdResponse);
+ return res;
+ }
+
+
+ public TraCICommand processValueSub(TraCICommand rawCmd, RemoteManager remoteManager,
+ TraCICmdHandler traCICmdHandler, TraCICmd getCommand, TraCICmd apiCmdResponse){
+ TraCIValueSubscriptionCommand cmd = (TraCIValueSubscriptionCommand)rawCmd;
+
+ List getCommands = new ArrayList<>();
+
+ cmd.getVariables().forEach(var -> {
+ getCommands.add(new TraCIGetCommand(getCommand, var, cmd.getElementIdentifier()));
+ });
+
+ cmd.setGetCommands(getCommands);
+ // add correct Get-Handler and the subscription command to the remoteManager
+ // after each SIM_STEP command the remoteMangers knows how to gather
+ // the subscribed variables. It is the responsibility of the
+ // TraCIValueSubscriptionCommand implementation to translate the TraCIGetResponses
+ // into a single TraCISubscriptionResponse.
+ Subscription sub = new Subscription(traCICmdHandler, apiCmdResponse, cmd);
+ remoteManager.addValueSubscription(sub );
+
+ // process the current subscription to return the initial response for the given subscription
+ // return value not needed. The result is directly saved in getCmd.setResponse(...)
+ // in the process_X methods.
+ sub.executeSubscription(remoteManager);
+
+ return cmd;
+ }
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/commandHandler/ControlCommandHandler.java b/VadereManager/src/org/vadere/manager/traci/commandHandler/ControlCommandHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..d6d6cf2a62fb1f60e4e9e98ea1f7a16a68b606e1
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/commandHandler/ControlCommandHandler.java
@@ -0,0 +1,128 @@
+package org.vadere.manager.traci.commandHandler;
+
+
+import org.vadere.manager.RemoteManager;
+import org.vadere.manager.Subscription;
+import org.vadere.manager.VadereServer;
+import org.vadere.manager.traci.TraCIVersion;
+import org.vadere.manager.traci.commandHandler.annotation.ControlHandler;
+import org.vadere.manager.traci.commandHandler.annotation.ControlHandlers;
+import org.vadere.manager.traci.commandHandler.variables.ControlVar;
+import org.vadere.manager.traci.commands.TraCICommand;
+import org.vadere.manager.traci.commands.control.TraCICloseCommand;
+import org.vadere.manager.traci.commands.control.TraCIGetVersionCommand;
+import org.vadere.manager.traci.commands.control.TraCISendFileCommand;
+import org.vadere.manager.traci.commands.control.TraCISendFileCommandV20_0_1;
+import org.vadere.manager.traci.commands.control.TraCISimStepCommand;
+import org.vadere.manager.traci.respons.StatusResponse;
+import org.vadere.manager.traci.respons.TraCIGetVersionResponse;
+import org.vadere.manager.traci.respons.TraCISimTimeResponse;
+import org.vadere.manager.traci.respons.TraCIStatusResponse;
+import org.vadere.util.logging.Logger;
+
+import java.lang.reflect.Method;
+
+/**
+ * Handel {@link org.vadere.manager.traci.commands.TraCICommand}s for the Control API
+ */
+public class ControlCommandHandler extends CommandHandler{
+
+ private static Logger logger = Logger.getLogger(ControlCommandHandler.class);
+
+ public static ControlCommandHandler instance;
+
+ static {
+ instance = new ControlCommandHandler();
+ }
+
+ private ControlCommandHandler(){
+ super();
+ init(ControlHandler.class, ControlHandlers.class);
+ }
+
+ @Override
+ protected void init_HandlerSingle(Method m) {
+ ControlHandler an = m.getAnnotation(ControlHandler.class);
+ putHandler(an.cmd(), an.var(), m);
+ }
+
+ @Override
+ protected void init_HandlerMult(Method m) {
+ ControlHandler[] ans = m.getAnnotation(ControlHandlers.class).value();
+ for(ControlHandler a : ans){
+ putHandler(a.cmd(), a.var(), m);
+ }
+ }
+
+ public TraCICommand process_load(TraCICommand rawCmd, RemoteManager remoteManager) {
+ return null;
+ }
+
+ public TraCICommand process_close(TraCICommand rawCmd, RemoteManager remoteManager) {
+
+ TraCICloseCommand cmd = (TraCICloseCommand)rawCmd;
+
+ remoteManager.setClientCloseCommandReceived(true);
+
+ if (remoteManager.stopSimulationIfRunning())
+ cmd.getResponse().getStatusResponse().setDescription("Stop simulation waiting for client close EOF");
+ else
+ cmd.getResponse().getStatusResponse().setDescription("waiting for client close EOF");
+ return cmd;
+ }
+
+ public TraCICommand process_simStep(TraCICommand rawCmd, RemoteManager remoteManager) {
+ TraCISimStepCommand cmd = (TraCISimStepCommand) rawCmd;
+
+ logger.debugf("Simulate to: %f", cmd.getTargetTime());
+// remoteManager.nextStep(cmd.getTargetTime());
+ if (!remoteManager.nextStep(cmd.getTargetTime())) {
+ //simulation finished;
+ cmd.setResponse(TraCISimTimeResponse.simEndReached());
+ return cmd;
+ }
+ // execute all
+ logger.debug("execute subscriptions");
+ remoteManager.getSubscriptions().forEach(sub -> sub.executeSubscription(remoteManager));
+
+ // remove subscriptions no longer valid
+ remoteManager.getSubscriptions().removeIf(Subscription::isMarkedForRemoval);
+
+ // get responses
+ TraCISimTimeResponse response = new TraCISimTimeResponse(
+ new StatusResponse(cmd.getTraCICmd(), TraCIStatusResponse.OK, ""));
+
+ remoteManager.getSubscriptions().forEach(sub -> {
+ response.addSubscriptionResponse(sub.getValueSubscriptionCommand().getResponse());
+ });
+ cmd.setResponse(response);
+
+ logger.debug("process_simStep done.");
+ return cmd;
+ }
+
+ public TraCICommand process_getVersion(TraCICommand rawCmd, RemoteManager remoteManager) {
+
+ TraCIGetVersionCommand cmd = (TraCIGetVersionCommand)rawCmd;
+ cmd.setResponse(new TraCIGetVersionResponse(VadereServer.currentVersion));
+
+ return cmd;
+ }
+
+ public TraCICommand process_load_file(TraCICommand rawCmd, RemoteManager remoteManager) {
+
+ if (VadereServer.currentVersion.greaterOrEqual(TraCIVersion.V20_0_2)){
+ TraCISendFileCommandV20_0_1 cmd = (TraCISendFileCommandV20_0_1) rawCmd;
+
+ remoteManager.loadScenario(cmd.getFile(), cmd.getCacheData());
+ remoteManager.startSimulation();
+ return cmd;
+ } else {
+ TraCISendFileCommand cmd = (TraCISendFileCommand) rawCmd;
+
+ remoteManager.loadScenario(cmd.getFile());
+ remoteManager.startSimulation();
+ return cmd;
+ }
+ }
+}
\ No newline at end of file
diff --git a/VadereManager/src/org/vadere/manager/traci/commandHandler/PersonCommandHandler.java b/VadereManager/src/org/vadere/manager/traci/commandHandler/PersonCommandHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..0584f7a0bd70afa2f12a0fff5e300c12993e3079
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/commandHandler/PersonCommandHandler.java
@@ -0,0 +1,295 @@
+package org.vadere.manager.traci.commandHandler;
+
+import org.vadere.annotation.traci.client.TraCIApi;
+import org.vadere.manager.RemoteManager;
+import org.vadere.manager.traci.TraCICmd;
+import org.vadere.manager.traci.TraCIDataType;
+import org.vadere.manager.traci.commandHandler.annotation.PersonHandler;
+import org.vadere.manager.traci.commandHandler.annotation.PersonHandlers;
+import org.vadere.manager.traci.commandHandler.variables.PersonVar;
+import org.vadere.manager.traci.commands.TraCICommand;
+import org.vadere.manager.traci.commands.TraCIGetCommand;
+import org.vadere.manager.traci.commands.TraCISetCommand;
+import org.vadere.manager.traci.respons.TraCIGetResponse;
+import org.vadere.state.scenario.Pedestrian;
+import org.vadere.util.geometry.Vector3D;
+import org.vadere.util.logging.Logger;
+
+import java.lang.reflect.Method;
+import java.util.Arrays;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+
+/**
+ * Handel GET/SET {@link org.vadere.manager.traci.commands.TraCICommand}s for the Person API
+ */
+@TraCIApi(
+ name = "PersonAPI",
+ singleAnnotation = PersonHandler.class,
+ multipleAnnotation = PersonHandlers.class,
+ cmdEnum = TraCICmd.class,
+ varEnum = PersonVar.class
+)
+public class PersonCommandHandler extends CommandHandler{
+
+ private static Logger logger = Logger.getLogger(PersonCommandHandler.class);
+
+ public static PersonCommandHandler instance;
+
+ static {
+ instance = new PersonCommandHandler();
+ }
+
+ private PersonCommandHandler(){
+ super();
+ init(PersonHandler.class, PersonHandlers.class);
+ }
+
+ @Override
+ protected void init_HandlerSingle(Method m) {
+ PersonHandler an = m.getAnnotation(PersonHandler.class);
+ putHandler(an.cmd(), an.var(), m);
+ }
+
+ @Override
+ protected void init_HandlerMult(Method m) {
+ PersonHandler[] ans = m.getAnnotation(PersonHandlers.class).value();
+ for(PersonHandler a : ans){
+ putHandler(a.cmd(), a.var(), m);
+ }
+ }
+
+
+ public static void main(String[] arg){
+ PersonCommandHandler h = instance;
+
+ }
+
+ public TraCIGetResponse responseOK(TraCIDataType responseDataType, Object responseData){
+ return responseOK(responseDataType, responseData, TraCICmd.GET_PERSON_VALUE, TraCICmd.RESPONSE_GET_PERSON_VALUE);
+ }
+
+ public TraCIGetResponse responseERR(String err){
+ return responseERR(err, TraCICmd.GET_PERSON_VALUE, TraCICmd.RESPONSE_GET_PERSON_VALUE);
+ }
+
+ public boolean checkIfPedestrianExists(Pedestrian ped, TraCIGetCommand cmd){
+ if (ped == null) {
+ cmd.setResponse(responseERR(CommandHandler.ELEMENT_ID_NOT_FOUND));
+ logger.debugf("Pedestrian: %s not found.", cmd.getElementIdentifier());
+ return false;
+ }
+ return true;
+ }
+
+ public boolean checkIfPedestrianExists(Pedestrian ped, TraCISetCommand cmd){
+ if (ped == null) {
+ cmd.setErr(CommandHandler.ELEMENT_ID_NOT_FOUND + cmd.getElementId());
+ return false;
+ }
+ return true;
+ }
+
+ ///////////////////////////// Handler /////////////////////////////
+
+ @PersonHandler(cmd = TraCICmd.GET_PERSON_VALUE, var = PersonVar.ID_LIST, name = "getIDList", ignoreElementId = true)
+ public TraCICommand process_getIDList(TraCIGetCommand cmd, RemoteManager remoteManager){
+ // elementIdentifier ignored.
+ remoteManager.accessState((manager, state) -> {
+ List data = state.getTopography().getPedestrianDynamicElements()
+ .getElements()
+ .stream()
+ .map(p -> Integer.toString(p.getId()))
+ .collect(Collectors.toList());
+ TraCIGetResponse res = responseOK(PersonVar.ID_LIST.type, data);
+ cmd.setResponse(res);
+ logger.debugf("time: %f ID's: %s", state.getSimTimeInSec(), Arrays.toString(data.toArray(String[]::new)));
+ });
+
+ return cmd;
+ }
+
+ @PersonHandler(cmd = TraCICmd.GET_PERSON_VALUE, var = PersonVar.COUNT, name = "getIDCount", ignoreElementId = true)
+ public TraCICommand process_getIDCount(TraCIGetCommand cmd, RemoteManager remoteManager){
+ remoteManager.accessState((manager, state) -> {
+ int numPeds = state.getTopography().getPedestrianDynamicElements().getElements().size();
+ cmd.setResponse(responseOK(PersonVar.COUNT.type, numPeds));
+ });
+
+ return cmd;
+ }
+
+ @PersonHandler( cmd = TraCICmd.GET_PERSON_VALUE, var = PersonVar.SPEED, name = "getSpeed")
+ public TraCICommand process_getSpeed(TraCIGetCommand cmd, RemoteManager remoteManager){
+
+ remoteManager.accessState((manager, state) -> {
+ Pedestrian ped = state.getTopography().getPedestrianDynamicElements()
+ .getElement(Integer.parseInt(cmd.getElementIdentifier()));
+
+ if (checkIfPedestrianExists(ped, cmd))
+ cmd.setResponse(responseOK(PersonVar.SPEED.type, ped.getVelocity().getLength()));
+
+ });
+
+ return cmd;
+ }
+
+ @PersonHandler(cmd = TraCICmd.GET_PERSON_VALUE, var = PersonVar.POS_2D, name = "getPosition2D")
+ public TraCICommand process_getPosition(TraCIGetCommand cmd, RemoteManager remoteManager){
+
+ remoteManager.accessState((manager, state) -> {
+ Pedestrian ped = state.getTopography().getPedestrianDynamicElements()
+ .getElement(Integer.parseInt(cmd.getElementIdentifier()));
+
+ if (checkIfPedestrianExists(ped, cmd)) {
+ cmd.setResponse(responseOK(PersonVar.POS_2D.type, ped.getPosition()));
+ logger.debugf("time: %f Pedestrian: %s Position: %s",
+ state.getSimTimeInSec(),
+ cmd.getElementIdentifier(),
+ ped.getPosition().toString());
+ }
+ });
+
+ return cmd;
+ }
+
+ @PersonHandler(cmd = TraCICmd.GET_PERSON_VALUE, var = PersonVar.POS_3D, name = "getPosition3D")
+ public TraCICommand process_getPosition3D(TraCIGetCommand cmd, RemoteManager remoteManager){
+
+ remoteManager.accessState((manager, state) -> {
+ Pedestrian ped = state.getTopography().getPedestrianDynamicElements()
+ .getElement(Integer.parseInt(cmd.getElementIdentifier()));
+
+ if (checkIfPedestrianExists(ped, cmd)) {
+ cmd.setResponse(responseOK(PersonVar.POS_3D.type, new Vector3D(ped.getPosition().x, ped.getPosition().y, 0.0)));
+ logger.debugf("time: %f Pedestrian: %s Position: %s",
+ state.getSimTimeInSec(),
+ cmd.getElementIdentifier(),
+ ped.getPosition().toString());
+ }
+ });
+
+ return cmd;
+ }
+
+
+ @PersonHandler( cmd = TraCICmd.GET_PERSON_VALUE, var = PersonVar.LENGTH, name = "getLength")
+ public TraCICommand process_getLength(TraCIGetCommand cmd, RemoteManager remoteManager){
+
+ remoteManager.accessState((manager, state) -> {
+ Pedestrian ped = state.getTopography().getPedestrianDynamicElements()
+ .getElement(Integer.parseInt(cmd.getElementIdentifier()));
+
+ if (checkIfPedestrianExists(ped, cmd))
+ cmd.setResponse(responseOK(PersonVar.LENGTH.type, ped.getRadius()*2));
+ });
+
+ return cmd;
+ }
+
+
+ @PersonHandler( cmd = TraCICmd.GET_PERSON_VALUE, var = PersonVar.WIDTH, name = "getWidth")
+ public TraCICommand process_getWidth(TraCIGetCommand cmd, RemoteManager remoteManager){
+
+ remoteManager.accessState((manager, state) -> {
+ Pedestrian ped = state.getTopography().getPedestrianDynamicElements()
+ .getElement(Integer.parseInt(cmd.getElementIdentifier()));
+
+ if (checkIfPedestrianExists(ped, cmd))
+ cmd.setResponse(responseOK(PersonVar.WIDTH.type, ped.getRadius()*2));
+ });
+
+ return cmd;
+ }
+
+ @PersonHandler( cmd = TraCICmd.GET_PERSON_VALUE, var = PersonVar.ROAD_ID, name = "getRoadId")
+ public TraCICommand process_getRoadId(TraCIGetCommand cmd, RemoteManager remoteManager) {
+ // return dummy value
+ cmd.setResponse(responseOK(PersonVar.ROAD_ID.type, "road000"));
+ return cmd;
+ }
+
+ @PersonHandler( cmd = TraCICmd.GET_PERSON_VALUE, var = PersonVar.ANGLE, name = "getAngle" )
+ public TraCICommand process_getAngle(TraCIGetCommand cmd, RemoteManager remoteManager) {
+ // return dummy value
+ cmd.setResponse(responseOK(PersonVar.ANGLE.type, 0.0));
+ return cmd;
+ }
+
+ @PersonHandler(cmd = TraCICmd.GET_PERSON_VALUE, var = PersonVar.TYPE, name = "getType" )
+ public TraCICommand process_getType(TraCIGetCommand cmd, RemoteManager remoteManager) {
+ // return dummy value
+ cmd.setResponse(responseOK(PersonVar.TYPE.type, "pedestrian"));
+ return cmd;
+ }
+
+ @PersonHandler(cmd = TraCICmd.GET_PERSON_VALUE, var = PersonVar.TARGET_LIST, name = "getTargetList")
+ public TraCICommand process_getTargetList(TraCIGetCommand cmd, RemoteManager remoteManager) {
+ // return dummy value
+ remoteManager.accessState((manager, state) -> {
+ Pedestrian ped = state.getTopography().getPedestrianDynamicElements()
+ .getElement(Integer.parseInt(cmd.getElementIdentifier()));
+
+ if(checkIfPedestrianExists(ped, cmd))
+ cmd.setResponse(responseOK(PersonVar.TARGET_LIST.type,
+ ped.getTargets()
+ .stream()
+ .map(i -> Integer.toString(i))
+ .collect(Collectors.toList())
+ ));
+ });
+ return cmd;
+ }
+
+ @PersonHandler(cmd = TraCICmd.SET_PERSON_STATE, var = PersonVar.TARGET_LIST, name = "setTargetList", dataTypeStr = "ArrayList")
+ public TraCICommand process_setTargetList(TraCISetCommand cmd, RemoteManager remoteManager) {
+ List tmp = (List) cmd.getVariableValue();
+ LinkedList data = tmp.stream().map(Integer::parseInt).collect(Collectors.toCollection(LinkedList::new));
+ remoteManager.accessState((manager, state) -> {
+ Pedestrian ped = state.getTopography().getPedestrianDynamicElements()
+ .getElement(Integer.parseInt(cmd.getElementId()));
+ if(checkIfPedestrianExists(ped, cmd)){
+ ped.setTargets(data);
+ cmd.setOK();
+ }
+ });
+ return cmd;
+ }
+
+ @PersonHandler(cmd=TraCICmd.GET_PERSON_VALUE, var= PersonVar.WAITING_TIME, name="getWaitingTime")
+ @PersonHandler(cmd=TraCICmd.GET_PERSON_VALUE, var= PersonVar.COLOR, name="getColor")
+ @PersonHandler(cmd=TraCICmd.GET_PERSON_VALUE, var= PersonVar.EDGE_POS, name="getEdgePos")
+ @PersonHandler(cmd=TraCICmd.GET_PERSON_VALUE, var= PersonVar.MIN_GAP, name="getMinGap")
+ @PersonHandler(cmd=TraCICmd.GET_PERSON_VALUE, var= PersonVar.NEXT_EDGE, name="getNextEdge")
+ @PersonHandler(cmd=TraCICmd.GET_PERSON_VALUE, var= PersonVar.REMAINING_STAGES, name="getRemainingStages")
+ @PersonHandler(cmd=TraCICmd.GET_PERSON_VALUE, var= PersonVar.VEHICLE, name="getVehicle")
+ public TraCICommand process_NotImplemented(TraCIGetCommand cmd, RemoteManager remoteManager){
+ return super.process_NotImplemented(cmd, remoteManager);
+ }
+
+ public TraCICommand processValueSub(TraCICommand rawCmd, RemoteManager remoteManager){
+ return processValueSub(rawCmd, remoteManager, this::processGet,
+ TraCICmd.GET_PERSON_VALUE, TraCICmd.RESPONSE_SUB_PERSON_VARIABLE);
+ }
+
+ public TraCICommand processGet(TraCICommand cmd, RemoteManager remoteManager){
+ TraCIGetCommand getCmd = (TraCIGetCommand) cmd;
+
+ PersonVar var = PersonVar.fromId(getCmd.getVariableIdentifier());
+ Method m = getHandler(getCmd.getTraCICmd(), var);
+
+ return invokeHandler(m, this, getCmd, remoteManager);
+ }
+
+ public TraCICommand processSet(TraCICommand cmd, RemoteManager remoteManager){
+ TraCISetCommand setCmd = (TraCISetCommand) cmd;
+
+ PersonVar var = PersonVar.fromId(setCmd.getVariableId());
+ Method m = getHandler(setCmd.getTraCICmd(), var);
+
+ return invokeHandler(m, this, setCmd, remoteManager);
+ }
+
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/commandHandler/PolygonCommandHandler.java b/VadereManager/src/org/vadere/manager/traci/commandHandler/PolygonCommandHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..5f3bb34f149cb1206b743d7b36c32add60413aa5
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/commandHandler/PolygonCommandHandler.java
@@ -0,0 +1,185 @@
+package org.vadere.manager.traci.commandHandler;
+
+import org.vadere.manager.RemoteManager;
+import org.vadere.manager.traci.TraCICmd;
+import org.vadere.manager.traci.TraCIDataType;
+import org.vadere.manager.traci.commandHandler.annotation.PolygonHandler;
+import org.vadere.manager.traci.commandHandler.annotation.PolygonHandlers;
+import org.vadere.manager.traci.commandHandler.variables.PolygonVar;
+import org.vadere.manager.traci.commands.TraCICommand;
+import org.vadere.manager.traci.commands.TraCIGetCommand;
+import org.vadere.manager.traci.commands.TraCISetCommand;
+import org.vadere.manager.traci.respons.TraCIGetResponse;
+import org.vadere.state.scenario.Obstacle;
+
+import java.awt.*;
+import java.lang.reflect.Method;
+import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
+/**
+ * Handel GET/SET/SUB {@link org.vadere.manager.traci.commands.TraCICommand}s for the Polygon API
+ */
+public class PolygonCommandHandler extends CommandHandler{
+
+ public static PolygonCommandHandler instance;
+
+
+ static {
+ instance = new PolygonCommandHandler();
+ }
+
+ public PolygonCommandHandler() {
+ super();
+ init(PolygonHandler.class, PolygonHandlers.class);
+ }
+
+ @Override
+ protected void init_HandlerSingle(Method m) {
+ PolygonHandler an = m.getAnnotation(PolygonHandler.class);
+ putHandler(an.cmd(), an.var(), m);
+ }
+
+ @Override
+ protected void init_HandlerMult(Method m) {
+ PolygonHandler[] ans = m.getAnnotation(PolygonHandlers.class).value();
+ for(PolygonHandler a : ans){
+ putHandler(a.cmd(), a.var(), m);
+ }
+ }
+
+
+ public TraCIGetResponse responseOK(TraCIDataType responseDataType, Object responseData){
+ return responseOK(responseDataType, responseData, TraCICmd.GET_POLYGON, TraCICmd.RESPONSE_GET_POLYGON);
+ }
+
+ public TraCIGetResponse responseERR(String err){
+ return responseERR(err, TraCICmd.GET_POLYGON, TraCICmd.RESPONSE_GET_POLYGON);
+ }
+
+ public boolean checkIfObstacleExists(Obstacle obstacle, TraCIGetCommand cmd){
+ if (obstacle == null) {
+ cmd.setResponse(responseERR(CommandHandler.ELEMENT_ID_NOT_FOUND));
+ return false;
+ }
+ return true;
+ }
+
+ public TraCICommand process_getIDList(TraCIGetCommand cmd, RemoteManager remoteManager, PolygonVar traCIVar){
+
+ remoteManager.accessState((manager, state) -> {
+ List ret = state.getTopography().getObstacles()
+ .stream()
+ .map(o -> Integer.toString(o.getId()))
+ .collect(Collectors.toList());
+ cmd.setResponse(responseOK(traCIVar.returnType, ret));
+ });
+
+ return cmd;
+ }
+
+ public TraCICommand process_getIDCount(TraCIGetCommand cmd, RemoteManager remoteManager, PolygonVar traCIVar){
+
+ remoteManager.accessState((manager, state) -> {
+ int ret = state.getTopography().getObstacles().size();
+ cmd.setResponse(responseOK(traCIVar.returnType, ret));
+ });
+
+ return cmd;
+ }
+
+ public TraCICommand process_getType(TraCIGetCommand cmd, RemoteManager remoteManager, PolygonVar traCIVar){
+ cmd.setResponse(responseOK(traCIVar.returnType, "building"));
+ return cmd;
+ }
+
+ public TraCICommand process_getShape(TraCIGetCommand cmd, RemoteManager remoteManager, PolygonVar traCIVar){
+
+ remoteManager.accessState((manager, state) -> {
+ Optional obstacle = state.getTopography().getObstacles().stream()
+ .filter(o-> cmd.getElementIdentifier().equals(Integer.toString(o.getId())))
+ .findFirst();
+ if (checkIfObstacleExists(obstacle.get(), cmd))
+ cmd.setResponse(responseOK(traCIVar.returnType, obstacle.get().getShape().getPath()));
+
+ });
+ return cmd;
+ }
+
+ public TraCICommand process_getColor(TraCIGetCommand cmd, RemoteManager remoteManager, PolygonVar traCIVar){
+ cmd.setResponse(responseOK(traCIVar.returnType, Color.BLACK));
+ return cmd;
+ }
+
+ public TraCICommand process_getPosition2D(TraCIGetCommand cmd, RemoteManager remoteManager, PolygonVar traCIVar){
+ remoteManager.accessState((manager, state) -> {
+ Optional obstacle = state.getTopography().getObstacles().stream()
+ .filter(o-> cmd.getElementIdentifier().equals(Integer.toString(o.getId())))
+ .findFirst();
+ if (checkIfObstacleExists(obstacle.get(), cmd))
+ cmd.setResponse(responseOK(traCIVar.returnType, obstacle.get().getShape().getCentroid()));
+
+ });
+ return cmd;
+ }
+
+ public TraCICommand process_getImageFile(TraCIGetCommand cmd, RemoteManager remoteManager, PolygonVar traCIVar){
+ cmd.setResponse(responseERR("Not Implemented"));
+ return cmd;
+ }
+
+ public TraCICommand process_getImageWidth(TraCIGetCommand cmd, RemoteManager remoteManager, PolygonVar traCIVar){
+ cmd.setResponse(responseERR("Not Implemented"));
+ return cmd;
+ }
+
+ public TraCICommand process_getImageHeight(TraCIGetCommand cmd, RemoteManager remoteManager, PolygonVar traCIVar){
+ cmd.setResponse(responseERR("Not Implemented"));
+ return cmd;
+ }
+
+ public TraCICommand process_getImageAngle(TraCIGetCommand cmd, RemoteManager remoteManager, PolygonVar traCIVar){
+ cmd.setResponse(responseERR("Not Implemented"));
+ return cmd;
+ }
+
+ public TraCICommand processValueSub(TraCICommand rawCmd, RemoteManager remoteManager){
+ return processValueSub(rawCmd, remoteManager, this::processGet,
+ TraCICmd.GET_POLYGON, TraCICmd.RESPONSE_SUB_POLYGON_VALUE);
+ }
+
+ public TraCICommand processGet(TraCICommand cmd, RemoteManager remoteManager) {
+ TraCIGetCommand getCmd = (TraCIGetCommand) cmd;
+
+ PolygonVar var = PolygonVar.fromId(getCmd.getVariableIdentifier());
+
+ switch (var){
+ case ID_LIST:
+ return process_getIDList(getCmd,remoteManager, var);
+ case COUNT:
+ return process_getIDCount(getCmd,remoteManager, var);
+ case TYPE:
+ return process_getType(getCmd,remoteManager, var);
+ case SHAPE:
+ return process_getShape(getCmd,remoteManager, var);
+ case COLOR:
+ return process_getColor(getCmd,remoteManager, var);
+ case POS_2D:
+ return process_getPosition2D(getCmd,remoteManager, var);
+ case IMAGE_FILE:
+ case WIDTH:
+ case HEIGHT:
+ case ANGLE:
+ default:
+ return process_UnknownCommand(getCmd, remoteManager);
+ }
+ }
+
+ public TraCICommand processSet(TraCICommand cmd, RemoteManager remoteManager) {
+ // do nothing just say ok...
+ ((TraCISetCommand) cmd).setOK();
+ return cmd;
+ }
+
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/commandHandler/SimulationCommandHandler.java b/VadereManager/src/org/vadere/manager/traci/commandHandler/SimulationCommandHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..93b0f0178bf275ae83f61effd2e8b3bab1d7615d
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/commandHandler/SimulationCommandHandler.java
@@ -0,0 +1,143 @@
+package org.vadere.manager.traci.commandHandler;
+
+import org.vadere.manager.RemoteManager;
+import org.vadere.manager.traci.TraCICmd;
+import org.vadere.manager.traci.TraCIDataType;
+import org.vadere.manager.traci.commandHandler.annotation.SimulationHandler;
+import org.vadere.manager.traci.commandHandler.annotation.SimulationHandlers;
+import org.vadere.manager.traci.commandHandler.variables.SimulationVar;
+import org.vadere.manager.traci.commands.TraCICommand;
+import org.vadere.manager.traci.commands.TraCIGetCommand;
+import org.vadere.manager.traci.respons.TraCIGetResponse;
+import org.vadere.util.geometry.shapes.VPoint;
+
+import java.awt.geom.Rectangle2D;
+import java.lang.reflect.Method;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.ArrayList;
+
+/**
+ * Handel GET/SET/SUB {@link org.vadere.manager.traci.commands.TraCICommand}s for the Simulation API
+ */
+public class SimulationCommandHandler extends CommandHandler{
+
+ public static SimulationCommandHandler instance;
+
+ static {
+ instance = new SimulationCommandHandler();
+ }
+
+ private SimulationCommandHandler(){
+ super();
+ init(SimulationHandler.class, SimulationHandlers.class);
+ }
+
+ @Override
+ protected void init_HandlerSingle(Method m) {
+ SimulationHandler an = m.getAnnotation(SimulationHandler.class);
+ putHandler(an.cmd(), an.var(), m);
+ }
+
+ @Override
+ protected void init_HandlerMult(Method m) {
+ SimulationHandler[] ans = m.getAnnotation(SimulationHandlers.class).value();
+ for(SimulationHandler a : ans){
+ putHandler(a.cmd(), a.var(), m);
+ }
+ }
+
+ public TraCIGetResponse responseOK(TraCIDataType responseDataType, Object responseData){
+ return responseOK(responseDataType, responseData, TraCICmd.GET_SIMULATION_VALUE, TraCICmd.RESPONSE_GET_SIMULATION_VALUE);
+ }
+
+ public TraCIGetResponse responseERR(TraCIDataType responseDataType, Object responseData){
+ return responseOK(responseDataType, responseData, TraCICmd.GET_SIMULATION_VALUE, TraCICmd.RESPONSE_GET_SIMULATION_VALUE);
+ }
+
+ public TraCICommand process_getNetworkBound(TraCIGetCommand cmd, RemoteManager remoteManager, SimulationVar traCIVar){
+
+ remoteManager.accessState((manager, state) -> {
+ Rectangle2D.Double rec = state.getTopography().getBounds();
+
+ VPoint lowLeft = new VPoint(rec.getMinX(), rec.getMinY());
+ VPoint highRight = new VPoint(rec.getMaxX(), rec.getMaxX());
+ ArrayList polyList = new ArrayList<>();
+ polyList.add(lowLeft);
+ polyList.add(highRight);
+ cmd.setResponse(responseOK(traCIVar.type, polyList));
+ });
+
+ return cmd;
+ }
+
+ public TraCICommand process_getSimTime(TraCIGetCommand cmd, RemoteManager remoteManager, SimulationVar traCIVar){
+
+ remoteManager.accessState((manager, state) -> {
+ // BigDecimal to ensure correct comparison in omentpp
+ BigDecimal time = BigDecimal.valueOf(state.getSimTimeInSec());
+ cmd.setResponse(responseOK(traCIVar.type, time.setScale(1, RoundingMode.HALF_UP).doubleValue()));
+ });
+
+ return cmd;
+ }
+
+ public TraCICommand process_getVehiclesStartTeleportIDs(TraCIGetCommand cmd, RemoteManager remoteManager, SimulationVar traCIVar){
+
+ cmd.setResponse(responseOK(traCIVar.type, new ArrayList<>()));
+ return cmd;
+ }
+
+ public TraCICommand process_getVehiclesEndTeleportIDs(TraCIGetCommand cmd, RemoteManager remoteManager, SimulationVar traCIVar){
+
+ cmd.setResponse(responseOK(traCIVar.type, new ArrayList<>()));
+ return cmd;
+ }
+
+ public TraCICommand process_getVehiclesStartParkingIDs(TraCIGetCommand cmd, RemoteManager remoteManager, SimulationVar traCIVar){
+
+ cmd.setResponse(responseOK(traCIVar.type, new ArrayList<>()));
+ return cmd;
+ }
+
+ public TraCICommand process_getVehiclesStopParkingIDs(TraCIGetCommand cmd, RemoteManager remoteManager, SimulationVar traCIVar){
+
+ cmd.setResponse(responseOK(traCIVar.type, new ArrayList<>()));
+ return cmd;
+ }
+
+ public TraCICommand processValueSub(TraCICommand rawCmd, RemoteManager remoteManager){
+ return processValueSub(rawCmd, remoteManager, this::processGet,
+ TraCICmd.GET_SIMULATION_VALUE, TraCICmd.RESPONSE_SUB_SIMULATION_VALUE);
+ }
+
+
+ public TraCICommand processGet(TraCICommand rawCmd, RemoteManager remoteManager){
+
+ TraCIGetCommand cmd = (TraCIGetCommand) rawCmd;
+ SimulationVar var = SimulationVar.fromId(cmd.getVariableIdentifier());
+ switch (var){
+ case NETWORK_BOUNDING_BOX_2D:
+ return process_getNetworkBound(cmd, remoteManager, var);
+ case CURR_SIM_TIME:
+ return process_getSimTime(cmd, remoteManager, var);
+ case VEHICLES_START_TELEPORT_IDS:
+ return process_getVehiclesStartTeleportIDs(cmd, remoteManager, var);
+ case VEHICLES_END_TELEPORT_IDS:
+ return process_getVehiclesEndTeleportIDs(cmd, remoteManager, var);
+ case VEHICLES_START_PARKING_IDS:
+ return process_getVehiclesStartParkingIDs(cmd, remoteManager, var);
+ case VEHICLES_STOP_PARKING_IDS:
+ return process_getVehiclesStopParkingIDs(cmd, remoteManager, var);
+
+ default:
+ return process_NotImplemented(cmd, remoteManager);
+ }
+ }
+
+ public TraCICommand processSet(TraCICommand cmd, RemoteManager remoteManager) {
+ return process_NotImplemented(cmd, remoteManager);
+
+ }
+
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/commandHandler/StateAccessHandler.java b/VadereManager/src/org/vadere/manager/traci/commandHandler/StateAccessHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..328cac21615d8366474fb150dfc677fcbf3ba1f1
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/commandHandler/StateAccessHandler.java
@@ -0,0 +1,24 @@
+package org.vadere.manager.traci.commandHandler;
+
+import org.vadere.manager.RemoteManager;
+import org.vadere.simulator.control.SimulationState;
+
+/**
+ * Interface used to allow access to the {@link SimulationState}
+ *
+ * This Interface is only implemented as lambda functions in {@link CommandHandler}s
+ * (see {@link PersonCommandHandler} for usage)
+ *
+ * In {@link RemoteManager#accessState(StateAccessHandler)} the access to the state is
+ * managerd and monitored to ensure that {@link SimulationState} access is synchronized
+ * and only occurs if the simulation is halted.
+ *
+ * (see singleStepMode in {@link org.vadere.simulator.control.Simulation})
+ *
+ */
+@FunctionalInterface
+public interface StateAccessHandler {
+
+ void execute(RemoteManager remoteManager, SimulationState state);
+
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/commandHandler/SubscriptionHandler.java b/VadereManager/src/org/vadere/manager/traci/commandHandler/SubscriptionHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..75bf277f9dea3142dd3dd2a455de8a5e54a8074b
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/commandHandler/SubscriptionHandler.java
@@ -0,0 +1,12 @@
+package org.vadere.manager.traci.commandHandler;
+
+import org.vadere.manager.traci.commands.TraCIGetCommand;
+
+import java.util.List;
+
+@FunctionalInterface
+public interface SubscriptionHandler {
+
+ void handel(List getCommands);
+
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/commandHandler/TraCICmdHandler.java b/VadereManager/src/org/vadere/manager/traci/commandHandler/TraCICmdHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..30dc9801cf64b5fff2b1ff6593424d3e73b3a514
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/commandHandler/TraCICmdHandler.java
@@ -0,0 +1,14 @@
+package org.vadere.manager.traci.commandHandler;
+
+import org.vadere.manager.RemoteManager;
+import org.vadere.manager.traci.commands.TraCICommand;
+
+/**
+ * Interface used to dispatch command handling to the correct {@link CommandHandler} subclass
+ */
+@FunctionalInterface
+public interface TraCICmdHandler {
+
+ TraCICommand handel(TraCICommand cmd, RemoteManager remoteManager);
+
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/commandHandler/VehicleCommandHandler.java b/VadereManager/src/org/vadere/manager/traci/commandHandler/VehicleCommandHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..9e9b8d53a151780ec0a52924529a254c3ff750e5
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/commandHandler/VehicleCommandHandler.java
@@ -0,0 +1,80 @@
+package org.vadere.manager.traci.commandHandler;
+
+import org.vadere.manager.RemoteManager;
+import org.vadere.manager.traci.TraCICmd;
+import org.vadere.manager.traci.TraCIDataType;
+import org.vadere.manager.traci.commandHandler.annotation.VehicleHandler;
+import org.vadere.manager.traci.commandHandler.annotation.VehicleHandlers;
+import org.vadere.manager.traci.commandHandler.variables.VehicleVar;
+import org.vadere.manager.traci.commands.TraCICommand;
+import org.vadere.manager.traci.commands.TraCIGetCommand;
+import org.vadere.manager.traci.respons.TraCIGetResponse;
+
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+
+public class VehicleCommandHandler extends CommandHandler{
+
+ public static VehicleCommandHandler instance;
+
+// private HashMap handler;
+
+ static {
+ instance = new VehicleCommandHandler();
+ }
+
+ public VehicleCommandHandler() {
+ super();
+ init(VehicleHandler.class, VehicleHandlers.class);
+ }
+
+ @Override
+ protected void init_HandlerSingle(Method m) {
+ VehicleHandler an = m.getAnnotation(VehicleHandler.class);
+ putHandler(an.cmd(), an.var(), m);
+ }
+
+ @Override
+ protected void init_HandlerMult(Method m) {
+ VehicleHandler[] ans = m.getAnnotation(VehicleHandlers.class).value();
+ for(VehicleHandler a : ans){
+ putHandler(a.cmd(), a.var(), m);
+ }
+ }
+
+ public TraCIGetResponse responseOK(TraCIDataType responseDataType, Object responseData){
+ return responseOK(responseDataType, responseData, TraCICmd.GET_VEHICLE_VALUE, TraCICmd.RESPONSE_GET_VEHICLE_VALUE);
+ }
+
+ public TraCIGetResponse responseERR(String err){
+ return responseERR(err, TraCICmd.GET_VEHICLE_VALUE, TraCICmd.RESPONSE_GET_VEHICLE_VALUE);
+ }
+
+ public TraCICommand process_getIDList(TraCIGetCommand rawCmd, RemoteManager remoteManager, VehicleVar traCIVar){
+
+ // always return an empty list
+ rawCmd.setResponse(responseOK(TraCIDataType.STRING_LIST, new ArrayList<>()));
+
+ return rawCmd;
+ }
+
+
+ public TraCICommand processValueSub(TraCICommand rawCmd, RemoteManager remoteManager){
+ return processValueSub(rawCmd, remoteManager, this::processGet,
+ TraCICmd.GET_VEHICLE_VALUE, TraCICmd.RESPONSE_SUB_VEHICLE_VALUE);
+ }
+
+ public TraCICommand processGet(TraCICommand cmd, RemoteManager remoteManager){
+ TraCIGetCommand getCmd = (TraCIGetCommand) cmd;
+
+ VehicleVar var = VehicleVar.fromId(getCmd.getVariableIdentifier());
+
+ switch (var){
+ case ID_LIST:
+ return process_getIDList(getCmd, remoteManager, var);
+ default:
+ return process_UnknownCommand(getCmd, remoteManager);
+ }
+ }
+
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/commandHandler/annotation/ControlHandler.java b/VadereManager/src/org/vadere/manager/traci/commandHandler/annotation/ControlHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..23ba12f2aec62392356c3e4a9339d0b7b1198097
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/commandHandler/annotation/ControlHandler.java
@@ -0,0 +1,20 @@
+package org.vadere.manager.traci.commandHandler.annotation;
+
+import org.vadere.manager.traci.TraCICmd;
+import org.vadere.manager.traci.commandHandler.variables.ControlVar;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Repeatable;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+@Repeatable(ControlHandlers.class)
+
+public @interface ControlHandler {
+ TraCICmd cmd();
+ ControlVar var() default ControlVar.NONE;
+ String name(); // name of client function.
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/commandHandler/annotation/ControlHandlers.java b/VadereManager/src/org/vadere/manager/traci/commandHandler/annotation/ControlHandlers.java
new file mode 100644
index 0000000000000000000000000000000000000000..e8c29364e20634e03c4b2934c7c7228076dd6147
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/commandHandler/annotation/ControlHandlers.java
@@ -0,0 +1,13 @@
+package org.vadere.manager.traci.commandHandler.annotation;
+
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ControlHandlers {
+ ControlHandler[] value();
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/commandHandler/annotation/PersonHandler.java b/VadereManager/src/org/vadere/manager/traci/commandHandler/annotation/PersonHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..d90b761c8fa2b0cf7eb5137e0caf2f0a913895e6
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/commandHandler/annotation/PersonHandler.java
@@ -0,0 +1,30 @@
+package org.vadere.manager.traci.commandHandler.annotation;
+
+import org.vadere.manager.traci.TraCICmd;
+import org.vadere.manager.traci.commandHandler.variables.PersonVar;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Repeatable;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Experimental annotation interface which removes long manually create switch statements by
+ * creating a dynamic HashMap connecting commands(using variableIDs) to the corresponding
+ * handler methods.
+ *
+ * Reflection is minimized to a single startup routine at object creation. At runtime only
+ * HashMap access is performed.
+ */
+
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+@Repeatable(PersonHandlers.class)
+public @interface PersonHandler {
+ TraCICmd cmd();
+ PersonVar var() ;
+ String name(); // name of client function.
+ boolean ignoreElementId() default false;
+ String dataTypeStr() default "";
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/commandHandler/annotation/PersonHandlers.java b/VadereManager/src/org/vadere/manager/traci/commandHandler/annotation/PersonHandlers.java
new file mode 100644
index 0000000000000000000000000000000000000000..b9acbe380c32c10419151bfb14a13a14fc3a065d
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/commandHandler/annotation/PersonHandlers.java
@@ -0,0 +1,13 @@
+package org.vadere.manager.traci.commandHandler.annotation;
+
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface PersonHandlers {
+ PersonHandler[] value();
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/commandHandler/annotation/PolygonHandler.java b/VadereManager/src/org/vadere/manager/traci/commandHandler/annotation/PolygonHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..cfd82bfb9b2fd99e8940b1247f55cc58779d9f5e
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/commandHandler/annotation/PolygonHandler.java
@@ -0,0 +1,28 @@
+package org.vadere.manager.traci.commandHandler.annotation;
+
+import org.vadere.manager.traci.TraCICmd;
+import org.vadere.manager.traci.commandHandler.variables.PolygonVar;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Repeatable;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Experimental annotation interface which removes long manually create switch statements by
+ * creating a dynamic HashMap connecting commands(using variableIDs) to the corresponding
+ * handler methods.
+ *
+ * Reflection is minimized to a single startup routine at object creation. At runtime only
+ * HashMap access is performed.
+ */
+
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+@Repeatable(PolygonHandlers.class)
+public @interface PolygonHandler {
+ TraCICmd cmd();
+ PolygonVar var() ;
+ String name(); // name of client function.
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/commandHandler/annotation/PolygonHandlers.java b/VadereManager/src/org/vadere/manager/traci/commandHandler/annotation/PolygonHandlers.java
new file mode 100644
index 0000000000000000000000000000000000000000..f7ee9f0eaff3fde8f8cf477b853f4a5ff6d5b2c1
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/commandHandler/annotation/PolygonHandlers.java
@@ -0,0 +1,13 @@
+package org.vadere.manager.traci.commandHandler.annotation;
+
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface PolygonHandlers {
+ PolygonHandler[] value();
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/commandHandler/annotation/SimulationHandler.java b/VadereManager/src/org/vadere/manager/traci/commandHandler/annotation/SimulationHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..dafaa38d8df82c21a18bcbd65cfbc33b89937224
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/commandHandler/annotation/SimulationHandler.java
@@ -0,0 +1,28 @@
+package org.vadere.manager.traci.commandHandler.annotation;
+
+import org.vadere.manager.traci.TraCICmd;
+import org.vadere.manager.traci.commandHandler.variables.SimulationVar;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Repeatable;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Experimental annotation interface which removes long manually create switch statements by
+ * creating a dynamic HashMap connecting commands(using variableIDs) to the corresponding
+ * handler methods.
+ *
+ * Reflection is minimized to a single startup routine at object creation. At runtime only
+ * HashMap access is performed.
+ */
+
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+@Repeatable(SimulationHandlers.class)
+public @interface SimulationHandler {
+ TraCICmd cmd();
+ SimulationVar var() ;
+ String name(); // name of client function.
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/commandHandler/annotation/SimulationHandlers.java b/VadereManager/src/org/vadere/manager/traci/commandHandler/annotation/SimulationHandlers.java
new file mode 100644
index 0000000000000000000000000000000000000000..230f578882f04be7d20fca7135c9d51d89d4e9c2
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/commandHandler/annotation/SimulationHandlers.java
@@ -0,0 +1,13 @@
+package org.vadere.manager.traci.commandHandler.annotation;
+
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface SimulationHandlers {
+ SimulationHandler[] value();
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/commandHandler/annotation/VehicleHandler.java b/VadereManager/src/org/vadere/manager/traci/commandHandler/annotation/VehicleHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..464c9a18f0253392a773d42afcef6c65dee244f8
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/commandHandler/annotation/VehicleHandler.java
@@ -0,0 +1,28 @@
+package org.vadere.manager.traci.commandHandler.annotation;
+
+import org.vadere.manager.traci.TraCICmd;
+import org.vadere.manager.traci.commandHandler.variables.VehicleVar;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Repeatable;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Experimental annotation interface which removes long manually create switch statements by
+ * creating a dynamic HashMap connecting commands(using variableIDs) to the corresponding
+ * handler methods.
+ *
+ * Reflection is minimized to a single startup routine at object creation. At runtime only
+ * HashMap access is performed.
+ */
+
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+@Repeatable(VehicleHandlers.class)
+public @interface VehicleHandler {
+ TraCICmd cmd();
+ VehicleVar var() ;
+ String name(); // name of client function.
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/commandHandler/annotation/VehicleHandlers.java b/VadereManager/src/org/vadere/manager/traci/commandHandler/annotation/VehicleHandlers.java
new file mode 100644
index 0000000000000000000000000000000000000000..afef183161924fe4d5aa901439cbb989746a9579
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/commandHandler/annotation/VehicleHandlers.java
@@ -0,0 +1,13 @@
+package org.vadere.manager.traci.commandHandler.annotation;
+
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface VehicleHandlers {
+ VehicleHandler[] value();
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/commandHandler/variables/ControlVar.java b/VadereManager/src/org/vadere/manager/traci/commandHandler/variables/ControlVar.java
new file mode 100644
index 0000000000000000000000000000000000000000..8758984c971cd2480df4263f3edb11b958e53d38
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/commandHandler/variables/ControlVar.java
@@ -0,0 +1,33 @@
+package org.vadere.manager.traci.commandHandler.variables;
+
+import org.vadere.manager.TraCIException;
+import org.vadere.manager.traci.TraCIDataType;
+
+public enum ControlVar {
+ NONE(-1, TraCIDataType.INTEGER);
+
+ public int id;
+ public TraCIDataType returnType;
+
+ ControlVar(int id, TraCIDataType retVal) {
+ this.id = id;
+ this.returnType = retVal;
+ }
+
+
+ public static ControlVar fromId(int id){
+ for(ControlVar var : values()){
+ if (var.id == id)
+ return var;
+ }
+ throw new TraCIException(String.format("No ControlVar var found with id: %02X", id));
+ }
+
+ @Override
+ public String toString() {
+ return "ControlVar{" +
+ "id=" + id +
+ ", type=" + returnType +
+ '}';
+ }
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/commandHandler/variables/PersonVar.java b/VadereManager/src/org/vadere/manager/traci/commandHandler/variables/PersonVar.java
new file mode 100644
index 0000000000000000000000000000000000000000..23fe2215ed0fa2972abe8112c68e51a6ee0fc08d
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/commandHandler/variables/PersonVar.java
@@ -0,0 +1,63 @@
+package org.vadere.manager.traci.commandHandler.variables;
+
+import org.vadere.manager.TraCIException;
+import org.vadere.manager.traci.TraCIDataType;
+
+
+/**
+ * VariableId list for Person API.
+ */
+public enum PersonVar {
+
+ ID_LIST(0x00, TraCIDataType.STRING_LIST), // get
+ COUNT(0x01, TraCIDataType.INTEGER), // get
+ SPEED(0x40, TraCIDataType.DOUBLE), // get, set
+ POS_2D(0x42, TraCIDataType.POS_2D), // get
+ POS_3D(0x42, TraCIDataType.POS_3D), // get
+ ANGLE(0x43, TraCIDataType.DOUBLE), // get
+ SLOPE(0x36, TraCIDataType.DOUBLE), // get
+ ROAD_ID(0x50, TraCIDataType.STRING), // get
+ TYPE(0x4f, TraCIDataType.STRING), // get, set
+ COLOR(0x45, TraCIDataType.COLOR), // get, set
+ EDGE_POS(0x56, TraCIDataType.DOUBLE), // get
+ LENGTH(0x44,TraCIDataType.DOUBLE), // get, set
+ MIN_GAP(0x4c, TraCIDataType.DOUBLE), // get, set
+ WIDTH(0x4d, TraCIDataType.DOUBLE), // get, set
+ WAITING_TIME(0x7a,TraCIDataType.DOUBLE), // get
+ NEXT_EDGE(0xc1, TraCIDataType.STRING), // get
+ REMAINING_STAGES(0xc2, TraCIDataType.INTEGER), // get
+ VEHICLE(0xc3, TraCIDataType.STRING), // get
+ ADD(0x80, TraCIDataType.COMPOUND_OBJECT), // set
+ APPEND_STAGE(0xc4, TraCIDataType.COMPOUND_OBJECT), // set
+ REMOVE_STAGE(0xc5, TraCIDataType.INTEGER), // set
+ REROUTE(0x90, TraCIDataType.COMPOUND_OBJECT), // set
+ TARGET_LIST(0xfe, TraCIDataType.STRING_LIST), // get, set
+ ;
+
+
+ public int id;
+ public TraCIDataType type;
+
+ PersonVar(int id, TraCIDataType retVal) {
+ this.id = id;
+ this.type = retVal;
+ }
+
+
+ public static PersonVar fromId(int id){
+ for(PersonVar var : values()){
+ if (var.id == id)
+ return var;
+ }
+ throw new TraCIException(String.format("No person var found with id: %02X", id));
+ }
+
+ @Override
+ public String toString() {
+ return "PersonVar{" +
+ name() +
+ ": id=" + id +
+ ", type=" + type +
+ '}';
+ }
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/commandHandler/variables/PolygonVar.java b/VadereManager/src/org/vadere/manager/traci/commandHandler/variables/PolygonVar.java
new file mode 100644
index 0000000000000000000000000000000000000000..37b9fb97b40dcd24b2051e57f30e66db5da70b44
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/commandHandler/variables/PolygonVar.java
@@ -0,0 +1,35 @@
+package org.vadere.manager.traci.commandHandler.variables;
+
+import org.vadere.manager.TraCIException;
+import org.vadere.manager.traci.TraCIDataType;
+
+public enum PolygonVar {
+ ID_LIST(0x00, TraCIDataType.STRING_LIST), // get
+ COUNT(0x01, TraCIDataType.INTEGER), // get
+ TYPE(0x4f, TraCIDataType.STRING), // get, set
+ SHAPE(0x4e, TraCIDataType.POLYGON),
+ COLOR(0x45, TraCIDataType.COLOR), // get, set
+ POS_2D(0x42, TraCIDataType.POS_2D), // get
+ IMAGE_FILE(0x93, TraCIDataType.STRING),
+ WIDTH(0x4d, TraCIDataType.DOUBLE), // get, set
+ HEIGHT(0xbc, TraCIDataType.DOUBLE), // get, set
+ ANGLE(0x43, TraCIDataType.DOUBLE)
+ ;
+
+ public int id;
+ public TraCIDataType returnType;
+
+ PolygonVar(int id, TraCIDataType retVal) {
+ this.id = id;
+ this.returnType = retVal;
+ }
+
+
+ public static PolygonVar fromId(int id){
+ for(PolygonVar var : values()){
+ if (var.id == id)
+ return var;
+ }
+ throw new TraCIException(String.format("No polygon var found with id: %02X", id));
+ }
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/commandHandler/variables/SimulationVar.java b/VadereManager/src/org/vadere/manager/traci/commandHandler/variables/SimulationVar.java
new file mode 100644
index 0000000000000000000000000000000000000000..eb6d7c799cb2f89ef30fe2f7b36c39c04efa474d
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/commandHandler/variables/SimulationVar.java
@@ -0,0 +1,47 @@
+package org.vadere.manager.traci.commandHandler.variables;
+
+import org.vadere.manager.TraCIException;
+import org.vadere.manager.traci.TraCIDataType;
+
+public enum SimulationVar {
+
+ CURR_SIM_TIME(0x66, TraCIDataType.DOUBLE),
+ NUM_LOADED_VEHICLES(0x71, TraCIDataType.INTEGER),
+ LOADED_VEHICLES_IDS(0x72, TraCIDataType.STRING_LIST),
+ NUM_DEPARTED_VEHICLES(0x73, TraCIDataType.INTEGER),
+ DEPARTED_VEHICLES_IDS(0x74, TraCIDataType.STRING_LIST),
+ NUM_VEHICLES_START_TELEPORT(0x75, TraCIDataType.INTEGER),
+ VEHICLES_START_TELEPORT_IDS(0x76, TraCIDataType.STRING_LIST),
+ NUM_VEHICLES_END_TELEPORT(0x77, TraCIDataType.INTEGER),
+ VEHICLES_END_TELEPORT_IDS(0x78, TraCIDataType.STRING_LIST),
+ VEHICLES_START_PARKING_IDS(0x6d, TraCIDataType.STRING_LIST),
+ VEHICLES_STOP_PARKING_IDS(0x6f, TraCIDataType.STRING_LIST),
+ //
+ NETWORK_BOUNDING_BOX_2D(0x7c, TraCIDataType.POLYGON)
+
+ ;
+
+ public int id;
+ public TraCIDataType type;
+
+ SimulationVar(int id, TraCIDataType retVal) {
+ this.id = id;
+ this.type = retVal;
+ }
+
+ public static SimulationVar fromId(int id){
+ for(SimulationVar var : values()){
+ if (var.id == id)
+ return var;
+ }
+ throw new TraCIException(String.format("No simulation var found with id: %02X", id));
+ }
+
+ @Override
+ public String toString() {
+ return "SimulationVar{" +
+ "id=" + id +
+ ", type=" + type +
+ '}';
+ }
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/commandHandler/variables/VehicleVar.java b/VadereManager/src/org/vadere/manager/traci/commandHandler/variables/VehicleVar.java
new file mode 100644
index 0000000000000000000000000000000000000000..dcda5a346053c25aee2e7d890bda1a895a466781
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/commandHandler/variables/VehicleVar.java
@@ -0,0 +1,33 @@
+package org.vadere.manager.traci.commandHandler.variables;
+
+import org.vadere.manager.TraCIException;
+import org.vadere.manager.traci.TraCIDataType;
+
+public enum VehicleVar {
+ ID_LIST(0x00, TraCIDataType.STRING_LIST);
+
+ public int id;
+ public TraCIDataType returnType;
+
+ VehicleVar(int id, TraCIDataType retVal) {
+ this.id = id;
+ this.returnType = retVal;
+ }
+
+
+ public static VehicleVar fromId(int id){
+ for(VehicleVar var : values()){
+ if (var.id == id)
+ return var;
+ }
+ throw new TraCIException(String.format("No vehicle var found with id: %02X", id));
+ }
+
+ @Override
+ public String toString() {
+ return "VehicleVar{" +
+ "id=" + id +
+ ", type=" + returnType +
+ '}';
+ }
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/commands/TraCICommand.java b/VadereManager/src/org/vadere/manager/traci/commands/TraCICommand.java
new file mode 100644
index 0000000000000000000000000000000000000000..163f42857ea1a992bf2186fc1ae98a9bfd7214aa
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/commands/TraCICommand.java
@@ -0,0 +1,107 @@
+package org.vadere.manager.traci.commands;
+
+import org.vadere.manager.TraCIException;
+import org.vadere.manager.VadereServer;
+import org.vadere.manager.traci.CmdType;
+import org.vadere.manager.traci.TraCICmd;
+import org.vadere.manager.traci.TraCIVersion;
+import org.vadere.manager.traci.commands.control.TraCICloseCommand;
+import org.vadere.manager.traci.commands.control.TraCIGetVersionCommand;
+import org.vadere.manager.traci.commands.control.TraCILoadCommand;
+import org.vadere.manager.traci.commands.control.TraCISendFileCommand;
+import org.vadere.manager.traci.commands.control.TraCISendFileCommandV20_0_1;
+import org.vadere.manager.traci.commands.control.TraCISimStepCommand;
+import org.vadere.manager.traci.reader.TraCICommandBuffer;
+import org.vadere.manager.traci.writer.TraCIPacket;
+
+import java.nio.ByteBuffer;
+
+/**
+ * Abstract Class for TraCICommands.
+ *
+ * Object of this Class only hold the state (input parameters, response data) for each
+ * command. The execution is handed by {@link org.vadere.manager.traci.commandHandler.CommandHandler}
+ * classes.
+ *
+ * Each command has an Id managed as an enum {@link TraCICmd}. This enum also contains
+ * the type of the command (i.e. GET, SET, Control). Depending on the type (and sometimes on
+ * the var queried) different sub classes are used to manage the command.
+ *
+ * Construction Methods: (compare with {@link org.vadere.manager.traci.respons.TraCIResponse})
+ *
+ * 1) created from serialized data (byte[] / {@link ByteBuffer} / {@link TraCICommandBuffer})
+ *
+ * 2) created from simple static factories which are used by clients.
+ *
+ */
+public abstract class TraCICommand {
+
+ protected TraCICmd traCICmd;
+ protected TraCIPacket NOK_response = null;
+
+ public static TraCICommand create(ByteBuffer rawCmd){
+ TraCICommandBuffer cmdBuffer = TraCICommandBuffer.wrap(rawCmd);
+
+ int identifier = cmdBuffer.readCmdIdentifier();
+ TraCICmd cmd = TraCICmd.fromId(identifier);
+
+ switch (cmd.type){
+ case CTRL:
+ return createControlCommand(cmd, cmdBuffer);
+ case VALUE_GET:
+ return new TraCIGetCommand(cmd, cmdBuffer);
+ case VALUE_SET:
+ return new TraCISetCommand(cmd, cmdBuffer);
+ case VALUE_SUB:
+ return new TraCIValueSubscriptionCommand(cmd, cmdBuffer);
+ case CONTEXT_SUB:
+ throw new TraCIException("Subscription not implement. Command: 0x%02X", cmd.id);
+ default:
+ throw new IllegalStateException("Should not be reached. All CmdType enums are tested in switch statement");
+ }
+
+ }
+
+ private static TraCICommand createControlCommand(TraCICmd cmd, TraCICommandBuffer cmdBuffer){
+
+ switch (cmd){
+ case GET_VERSION:
+ return new TraCIGetVersionCommand();
+ case SIM_STEP:
+ return new TraCISimStepCommand(cmdBuffer);
+ case CLOSE:
+ return new TraCICloseCommand();
+ case SEND_FILE:
+ if (VadereServer.currentVersion.greaterOrEqual(TraCIVersion.V20_0_2))
+ return new TraCISendFileCommandV20_0_1(cmdBuffer);
+ else
+ return new TraCISendFileCommand(cmdBuffer);
+ case LOAD:
+ return new TraCILoadCommand(cmdBuffer);
+ default:
+ throw new IllegalStateException(String.format("Should not be reached. Only TraCI control commands expected: %0X", cmd.id));
+ }
+
+ }
+
+
+ protected TraCICommand(TraCICmd traCICmd){
+ this.traCICmd = traCICmd;
+ }
+
+ public TraCICmd getTraCICmd() {
+ return traCICmd;
+ }
+
+ public CmdType getCmdType(){
+ return traCICmd.type;
+ }
+
+
+ public TraCICommand setNOK_response(TraCIPacket NOK_response) {
+ this.NOK_response = NOK_response;
+ return this;
+ }
+
+ public abstract TraCIPacket buildResponsePacket();
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/commands/TraCIGetCommand.java b/VadereManager/src/org/vadere/manager/traci/commands/TraCIGetCommand.java
new file mode 100644
index 0000000000000000000000000000000000000000..e6687b64e261802ac76f3560ac7b35a1aceb9d3c
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/commands/TraCIGetCommand.java
@@ -0,0 +1,90 @@
+package org.vadere.manager.traci.commands;
+
+import org.vadere.manager.traci.TraCICmd;
+import org.vadere.manager.traci.commandHandler.variables.PersonVar;
+import org.vadere.manager.traci.writer.TraCIPacket;
+import org.vadere.manager.traci.reader.TraCICommandBuffer;
+import org.vadere.manager.traci.respons.TraCIGetResponse;
+
+import java.nio.charset.StandardCharsets;
+
+
+/**
+ * Sub class of {@link TraCICommand} which represents a get request to some API.
+ *
+ * An API in this context is for instance the Person(GET/SET), Simulation(GET/SET/SUB)
+ *
+ * Command Structure
+ *
+ * [ cmdIdentifier(based on API) ] [ variableId ] [ elementId]
+ *
+ * - cmdIdentifier(based on API): see {@link TraCICmd} enum GET_****
+ * - variableId: Id for the var. The numbers may be the same between different APIs
+ * see {@link PersonVar} enum
+ * - elementId: String based id for the object (i.e. a pedestrianId)
+ *
+ * see {@link org.vadere.manager.traci.commandHandler.PersonCommandHandler} for execution handing.
+ *
+ */
+public class TraCIGetCommand extends TraCICommand {
+
+ protected int variableIdentifier;
+ protected String elementIdentifier;
+
+ private TraCIGetResponse response;
+
+
+ public static TraCIPacket build(TraCICmd commandIdentifier, int variableIdentifier, String elementIdentifier){
+ int cmdLen = 1 + 1 + 1 + 4 + elementIdentifier.getBytes(StandardCharsets.US_ASCII).length;
+ TraCIPacket packet = TraCIPacket.create();
+ packet.writeCommandLength(cmdLen) // [1|5]
+ .writeUnsignedByte(commandIdentifier.id) // 1
+ .writeUnsignedByte(variableIdentifier) // 1
+ .writeString(elementIdentifier); // 4+strLen
+
+ return packet;
+ }
+
+ public TraCIGetCommand(TraCICmd traCICmd, int variableIdentifier, String elementIdentifier) {
+ super(traCICmd);
+ this.variableIdentifier = variableIdentifier;
+ this.elementIdentifier = elementIdentifier;
+ }
+
+ public TraCIGetCommand(TraCICmd traCICmd, TraCICommandBuffer cmdBuffer) {
+ super(traCICmd);
+ variableIdentifier = cmdBuffer.readUnsignedByte();
+ elementIdentifier = cmdBuffer.readString();
+ }
+
+ public int getVariableIdentifier() {
+ return variableIdentifier;
+ }
+
+ public void setVariableIdentifier(int variableIdentifier) {
+ this.variableIdentifier = variableIdentifier;
+ }
+
+ public String getElementIdentifier() {
+ return elementIdentifier;
+ }
+
+ public void setElementIdentifier(String elementIdentifier) {
+ this.elementIdentifier = elementIdentifier;
+ }
+
+ public TraCIGetResponse getResponse() {
+ return response;
+ }
+
+ public void setResponse(TraCIGetResponse response) {
+ response.setVariableIdentifier(variableIdentifier);
+ response.setElementIdentifier(elementIdentifier);
+ this.response = response;
+ }
+
+ @Override
+ public TraCIPacket buildResponsePacket() {
+ return TraCIPacket.create().wrapGetResponse(response);
+ }
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/commands/TraCISetCommand.java b/VadereManager/src/org/vadere/manager/traci/commands/TraCISetCommand.java
new file mode 100644
index 0000000000000000000000000000000000000000..4a66e4932fea0232147cabc4cbb00974341275c2
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/commands/TraCISetCommand.java
@@ -0,0 +1,84 @@
+package org.vadere.manager.traci.commands;
+
+import org.vadere.manager.traci.TraCICmd;
+import org.vadere.manager.traci.TraCIDataType;
+import org.vadere.manager.traci.commandHandler.variables.PersonVar;
+import org.vadere.manager.traci.reader.TraCICommandBuffer;
+import org.vadere.manager.traci.respons.StatusResponse;
+import org.vadere.manager.traci.respons.TraCIStatusResponse;
+import org.vadere.manager.traci.writer.TraCIPacket;
+
+/**
+ * Sub class of {@link TraCICommand} which represents a set request to some API.
+ *
+ * An API in this context is for instance the Person(GET/SET), Simulation(GET/SET/SUB)
+ *
+ * Command Structure
+ *
+ * [ cmdIdentifier(based on API) ] [ variableId ] [ elementId] [ dataTypeId ] [ data ]
+ *
+ * - cmdIdentifier(based on API): see {@link TraCICmd} enum GET_****
+ * - variableId: Id for the var. The numbers may be the same between different APIs
+ * see {@link PersonVar} enum
+ * - elementId: String based id for the object (i.e. a pedestrianId)
+ * - dataTypeId: see {@link TraCIDataType}
+ * - data: data to be returned.
+ *
+ * see {@link org.vadere.manager.traci.commandHandler.PersonCommandHandler} for execution handing.
+ *
+ */
+public class TraCISetCommand extends TraCICommand{
+
+ protected int variableId;
+ protected String elementId;
+ protected TraCIDataType returnDataType;
+ protected Object variableValue;
+
+ private StatusResponse statusResponse;
+
+ public static TraCIPacket build(TraCICmd commandIdentifier, String elementIdentifier, int variableIdentifier, TraCIDataType dataType, Object data){
+ return TraCIPacket.create()
+ .wrapSetCommand(commandIdentifier, elementIdentifier, variableIdentifier,
+ dataType, data);
+ }
+
+ public TraCISetCommand(TraCICmd traCICmd, TraCICommandBuffer cmdBuffer) {
+ super(traCICmd);
+ variableId = cmdBuffer.readUnsignedByte();
+ elementId = cmdBuffer.readString();
+ returnDataType = TraCIDataType.fromId(cmdBuffer.readUnsignedByte());
+ variableValue = cmdBuffer.readTypeValue(returnDataType);
+
+ }
+
+ public Object getVariableValue(){
+ return variableValue;
+ }
+
+ public int getVariableId() {
+ return variableId;
+ }
+
+ public String getElementId() {
+ return elementId;
+ }
+
+ public TraCIDataType getReturnDataType() {
+ return returnDataType;
+ }
+
+ public TraCISetCommand setErr(String desc){
+ statusResponse = new StatusResponse(traCICmd, TraCIStatusResponse.ERR, desc);
+ return this;
+ }
+
+ public TraCISetCommand setOK(){
+ statusResponse = new StatusResponse(traCICmd, TraCIStatusResponse.OK, "");
+ return this;
+ }
+
+ @Override
+ public TraCIPacket buildResponsePacket() {
+ return TraCIPacket.create().addStatusResponse(statusResponse);
+ }
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/commands/TraCIValueSubscriptionCommand.java b/VadereManager/src/org/vadere/manager/traci/commands/TraCIValueSubscriptionCommand.java
new file mode 100644
index 0000000000000000000000000000000000000000..897f8d6745a1e6453470dbaf379fd08a04cb8bc7
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/commands/TraCIValueSubscriptionCommand.java
@@ -0,0 +1,103 @@
+package org.vadere.manager.traci.commands;
+
+import org.vadere.manager.traci.TraCICmd;
+import org.vadere.manager.traci.reader.TraCICommandBuffer;
+import org.vadere.manager.traci.respons.TraCISubscriptionResponse;
+import org.vadere.manager.traci.writer.TraCIPacket;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class TraCIValueSubscriptionCommand extends TraCICommand {
+
+ private double beginTime;
+ private double endTime;
+ private String elementIdentifier;
+ private int numberOfVariables;
+ private List variables;
+
+ private List getCommands;
+
+ private TraCISubscriptionResponse response;
+
+
+ protected TraCIValueSubscriptionCommand(TraCICmd traCICmd, TraCICommandBuffer buffer) {
+ this(traCICmd);
+ beginTime = buffer.readDouble();
+ endTime = buffer.readDouble();
+ elementIdentifier = buffer.readString();
+ numberOfVariables = buffer.readUnsignedByte();
+
+ for (int i = 0; i < numberOfVariables; i++) {
+ int var = buffer.readUnsignedByte();
+ variables.add(var);
+ }
+ }
+
+ protected TraCIValueSubscriptionCommand(TraCICmd traCICmd) {
+ super(traCICmd);
+ variables = new ArrayList<>();
+ getCommands = new ArrayList<>();
+ }
+
+ @Override
+ public TraCIPacket buildResponsePacket() {
+ return TraCIPacket.create().wrapValueSubscriptionCommand(response);
+ }
+
+ public double getBeginTime() {
+ return beginTime;
+ }
+
+ public void setBeginTime(double beginTime) {
+ this.beginTime = beginTime;
+ }
+
+ public double getEndTime() {
+ return endTime;
+ }
+
+ public void setEndTime(double endTime) {
+ this.endTime = endTime;
+ }
+
+ public String getElementIdentifier() {
+ return elementIdentifier;
+ }
+
+ public void setElementIdentifier(String elementIdentifier) {
+ this.elementIdentifier = elementIdentifier;
+ }
+
+ public int getNumberOfVariables() {
+ return numberOfVariables;
+ }
+
+ public void setNumberOfVariables(int numberOfVariables) {
+ this.numberOfVariables = numberOfVariables;
+ }
+
+ public List getVariables() {
+ return variables;
+ }
+
+ public void setVariables(List variables) {
+ this.variables = variables;
+ }
+
+ public TraCISubscriptionResponse getResponse() {
+ return response;
+ }
+
+ public void setResponse(TraCISubscriptionResponse response) {
+ this.response = response;
+ }
+
+ public List getGetCommands() {
+ return getCommands;
+ }
+
+ public void setGetCommands(List getCommands) {
+ this.getCommands = getCommands;
+ }
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/commands/control/TraCICloseCommand.java b/VadereManager/src/org/vadere/manager/traci/commands/control/TraCICloseCommand.java
new file mode 100644
index 0000000000000000000000000000000000000000..f9cc935d282661e096f62152a21388b657d5da51
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/commands/control/TraCICloseCommand.java
@@ -0,0 +1,46 @@
+package org.vadere.manager.traci.commands.control;
+
+import org.vadere.manager.traci.writer.TraCIPacket;
+import org.vadere.manager.traci.TraCICmd;
+import org.vadere.manager.traci.commands.TraCICommand;
+import org.vadere.manager.traci.respons.StatusResponse;
+import org.vadere.manager.traci.respons.TraCIResponse;
+import org.vadere.manager.traci.respons.TraCIStatusResponse;
+
+public class TraCICloseCommand extends TraCICommand {
+
+ private TraCIResponse response;
+
+ public static TraCIPacket build(){
+
+ TraCIPacket packet = TraCIPacket.create(6); // 4
+ packet.writeUnsignedByte(2) // 1
+ .writeUnsignedByte(TraCICmd.CLOSE.id); // 1
+
+ return packet;
+ }
+
+ public TraCICloseCommand() {
+ super(TraCICmd.CLOSE);
+ this.response = new TraCIResponse(
+ new StatusResponse(TraCICmd.CLOSE, TraCIStatusResponse.OK, ""),
+ TraCICmd.CLOSE);
+ }
+
+ public TraCIResponse getResponse() {
+ return response;
+ }
+
+ public void setResponse(TraCIResponse response) {
+ this.response = response;
+ }
+
+ @Override
+ public TraCIPacket buildResponsePacket() {
+ if (NOK_response != null)
+ return NOK_response;
+ else
+ return TraCIPacket.create().addStatusResponse(response.getStatusResponse());
+ }
+
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/commands/control/TraCIGetVersionCommand.java b/VadereManager/src/org/vadere/manager/traci/commands/control/TraCIGetVersionCommand.java
new file mode 100644
index 0000000000000000000000000000000000000000..a797cae69ddfea4efe9a9b7c70eac88bb7ac475a
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/commands/control/TraCIGetVersionCommand.java
@@ -0,0 +1,42 @@
+package org.vadere.manager.traci.commands.control;
+
+import org.vadere.manager.traci.writer.TraCIPacket;
+import org.vadere.manager.traci.TraCICmd;
+import org.vadere.manager.traci.commands.TraCICommand;
+import org.vadere.manager.traci.respons.TraCIGetVersionResponse;
+
+public class TraCIGetVersionCommand extends TraCICommand {
+
+ private TraCIGetVersionResponse response;
+
+ public static TraCIPacket build(){
+ TraCIPacket packet = TraCIPacket.create(6); // 4
+ packet.writeCommandLength(2) // 1
+ .writeUnsignedByte(TraCICmd.GET_VERSION.id); // 1
+ return packet;
+ }
+
+ public TraCIGetVersionCommand(){
+ super(TraCICmd.GET_VERSION);
+ response = new TraCIGetVersionResponse();
+ }
+
+
+ public TraCIGetVersionResponse getResponse() {
+ return response;
+ }
+
+ public void setResponse(TraCIGetVersionResponse response) {
+ this.response = response;
+ }
+
+ @Override
+ public TraCIPacket buildResponsePacket() {
+ if (NOK_response != null)
+ return NOK_response;
+ else
+ return TraCIPacket.create().wrapGetVersionCommand(this);
+ }
+
+
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/commands/control/TraCILoadCommand.java b/VadereManager/src/org/vadere/manager/traci/commands/control/TraCILoadCommand.java
new file mode 100644
index 0000000000000000000000000000000000000000..cb1e5b2b3aedb30ff713d8985ef9af9c26676082
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/commands/control/TraCILoadCommand.java
@@ -0,0 +1,28 @@
+package org.vadere.manager.traci.commands.control;
+
+import org.vadere.manager.traci.TraCICmd;
+import org.vadere.manager.traci.writer.TraCIPacket;
+import org.vadere.manager.traci.commands.TraCICommand;
+import org.vadere.manager.traci.reader.TraCICommandBuffer;
+
+import java.util.List;
+
+public class TraCILoadCommand extends TraCICommand {
+
+ private List optionList;
+
+ public static TraCIPacket build(List optionList){
+ TraCIPacket packet = TraCIPacket.create();
+ return packet;
+ }
+
+ public TraCILoadCommand(TraCICommandBuffer cmdBuffer) {
+ super(TraCICmd.LOAD);
+ this.optionList = cmdBuffer.readStringList();
+ }
+
+ @Override
+ public TraCIPacket buildResponsePacket() {
+ return null;
+ }
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/commands/control/TraCISendFileCommand.java b/VadereManager/src/org/vadere/manager/traci/commands/control/TraCISendFileCommand.java
new file mode 100644
index 0000000000000000000000000000000000000000..68c65c33a082f35ad0ad823fdbbe8494a3f7663d
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/commands/control/TraCISendFileCommand.java
@@ -0,0 +1,53 @@
+package org.vadere.manager.traci.commands.control;
+
+import org.vadere.manager.traci.TraCICmd;
+import org.vadere.manager.traci.writer.TraCIPacket;
+import org.vadere.manager.traci.commands.TraCICommand;
+import org.vadere.manager.traci.reader.TraCICommandBuffer;
+
+import java.nio.charset.StandardCharsets;
+
+public class TraCISendFileCommand extends TraCICommand {
+
+ private String fileName;
+ private String file;
+
+ public static TraCIPacket TraCISendFileCommand(String fileName, String file){
+ int strLen = file.getBytes(StandardCharsets.US_ASCII).length;
+ strLen += fileName.getBytes(StandardCharsets.US_ASCII).length;
+ TraCIPacket packet = TraCIPacket.create(); // 4 (add later)
+ packet.writeCommandLength(1 + 1 + 4 + 4 + strLen) // [1|5]
+ .writeUnsignedByte(TraCICmd.SEND_FILE.id) // 1
+ .writeString(fileName)
+ .writeString(file); // 4+strLen
+ return packet;
+ }
+
+ public TraCISendFileCommand(TraCICommandBuffer cmdBuffer) {
+ super(TraCICmd.SEND_FILE);
+ this.fileName = cmdBuffer.readString();
+ this.file = cmdBuffer.readString();
+
+ }
+
+
+ protected TraCISendFileCommand(TraCICmd traCICmd) {
+ super(traCICmd);
+ }
+
+ public String getFile() {
+ return file;
+ }
+
+ public void setFile(String file) {
+ this.file = file;
+ }
+
+ @Override
+ public TraCIPacket buildResponsePacket() {
+ if (NOK_response != null)
+ return NOK_response;
+ else
+ return TraCIPacket.create(11).add_OK_StatusResponse(TraCICmd.SEND_FILE);
+ }
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/commands/control/TraCISendFileCommandV20_0_1.java b/VadereManager/src/org/vadere/manager/traci/commands/control/TraCISendFileCommandV20_0_1.java
new file mode 100644
index 0000000000000000000000000000000000000000..4ac79c1a684458280e9b4fd754ef692e71e1a861
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/commands/control/TraCISendFileCommandV20_0_1.java
@@ -0,0 +1,42 @@
+package org.vadere.manager.traci.commands.control;
+
+import org.vadere.manager.traci.TraCICmd;
+import org.vadere.manager.traci.reader.TraCICommandBuffer;
+import org.vadere.util.logging.Logger;
+
+import java.io.ByteArrayInputStream;
+import java.util.HashMap;
+
+public class TraCISendFileCommandV20_0_1 extends TraCISendFileCommand {
+ private static Logger logger = Logger.getLogger(TraCISendFileCommandV20_0_1.class);
+
+ HashMap cacheData;
+
+
+ public TraCISendFileCommandV20_0_1(TraCICommandBuffer cmdBuffer) {
+ super(cmdBuffer);
+ cacheData = new HashMap<>();
+ if (cmdBuffer.hasRemaining()){
+ int numberOfCaches = cmdBuffer.readInt();
+ for (int i = 0; i < numberOfCaches; i++) {
+ String cacheIdentifier = cmdBuffer.readString();
+ int numberOfBytes = cmdBuffer.readInt();
+ byte[] data = new byte[numberOfBytes];
+ cmdBuffer.readBytes(data);
+ cacheData.put(cacheIdentifier, new ByteArrayInputStream(data));
+ }
+ } else {
+ logger.warnf("did not found fields needed for cache extraction fallback to old version and treat as zero cache send.");
+ }
+
+ }
+
+ protected TraCISendFileCommandV20_0_1(TraCICmd traCICmd) {
+ super(traCICmd);
+ cacheData = new HashMap<>();
+ }
+
+ public HashMap getCacheData() {
+ return cacheData;
+ }
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/commands/control/TraCISimStepCommand.java b/VadereManager/src/org/vadere/manager/traci/commands/control/TraCISimStepCommand.java
new file mode 100644
index 0000000000000000000000000000000000000000..f066054b5ebe7b523bfc779ef8c7fb9058849944
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/commands/control/TraCISimStepCommand.java
@@ -0,0 +1,50 @@
+package org.vadere.manager.traci.commands.control;
+
+import org.vadere.manager.traci.TraCICmd;
+import org.vadere.manager.traci.writer.TraCIPacket;
+import org.vadere.manager.traci.commands.TraCICommand;
+import org.vadere.manager.traci.reader.TraCICommandBuffer;
+import org.vadere.manager.traci.respons.TraCISimTimeResponse;
+
+public class TraCISimStepCommand extends TraCICommand {
+
+ private double targetTime;
+ private TraCISimTimeResponse response;
+
+ public static TraCIPacket build(double targetTime){
+ TraCIPacket packet = TraCIPacket.create(14); // 4
+ packet.writeUnsignedByte(10) // 1
+ .writeUnsignedByte(TraCICmd.SIM_STEP.id) // 1
+ .writeDouble(targetTime); // 8
+ return packet;
+ }
+
+ public TraCISimStepCommand(TraCICommandBuffer cmdBuffer) {
+ super(TraCICmd.SIM_STEP);
+ this.targetTime = cmdBuffer.readDouble();
+ }
+
+ public double getTargetTime() {
+ return targetTime;
+ }
+
+ public void setTargetTime(double targetTime) {
+ this.targetTime = targetTime;
+ }
+
+ public TraCISimTimeResponse getResponse() {
+ return response;
+ }
+
+ public void setResponse(TraCISimTimeResponse response) {
+ this.response = response;
+ }
+
+ @Override
+ public TraCIPacket buildResponsePacket() {
+ if (NOK_response != null)
+ return NOK_response;
+ else
+ return TraCIPacket.create().wrapSimTimeStepCommand(response); // TODO
+ }
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/reader/TraCIByteBuffer.java b/VadereManager/src/org/vadere/manager/traci/reader/TraCIByteBuffer.java
new file mode 100644
index 0000000000000000000000000000000000000000..558cf14ee46d5b0830dca6e067d5e4be23786623
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/reader/TraCIByteBuffer.java
@@ -0,0 +1,273 @@
+package org.vadere.manager.traci.reader;
+
+import org.vadere.manager.TraCIException;
+import org.vadere.manager.traci.TraCIDataType;
+import org.vadere.manager.traci.sumo.LightPhase;
+import org.vadere.manager.traci.sumo.RoadMapPosition;
+import org.vadere.manager.traci.sumo.TrafficLightPhase;
+import org.vadere.util.geometry.GeometryUtils;
+import org.vadere.util.geometry.Vector3D;
+import org.vadere.util.geometry.shapes.IPoint;
+import org.vadere.util.geometry.shapes.VPoint;
+import org.vadere.util.geometry.shapes.VPolygon;
+
+import java.awt.*;
+import java.nio.ByteBuffer;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * A {@link ByteBuffer} based implementation of the {@link TraCIReader} interface.
+ * The {@link ByteBuffer} wraps a byte[] array and allows getX access to the given
+ * byte[] array.
+ *
+ */
+public class TraCIByteBuffer implements TraCIReader {
+
+ private ByteBuffer byteBuffer;
+
+ public static TraCIByteBuffer wrap(byte[] data){
+ TraCIByteBuffer traCIByteBuffer = new TraCIByteBuffer();
+ traCIByteBuffer.byteBuffer = ByteBuffer.wrap(data);
+ return traCIByteBuffer;
+ }
+
+ public static TraCIByteBuffer wrap(ByteBuffer buffer){
+ TraCIByteBuffer traCIByteBuffer = new TraCIByteBuffer();
+ traCIByteBuffer.byteBuffer = buffer;
+ return traCIByteBuffer;
+ }
+
+ protected TraCIByteBuffer(){ }
+
+ protected TraCIByteBuffer(byte[] buffer){
+ byteBuffer = ByteBuffer.wrap(buffer);
+ }
+
+ protected TraCIByteBuffer(ByteBuffer buffer){
+ byteBuffer = buffer;
+ }
+
+ @Override
+ public byte readByte() {
+ return byteBuffer.get();
+ }
+
+ @Override
+ public byte[] readBytes(int num) {
+ ensureBytes(num);
+ byte[] data = new byte[num];
+ byteBuffer.get(data, 0, data.length);
+ return data;
+ }
+
+ @Override
+ public void readBytes(byte[] data) {
+ byteBuffer.get(data, 0, data.length);
+ }
+
+ @Override
+ public int readInt() {
+ return byteBuffer.getInt();
+ }
+
+ @Override
+ public double readDouble() {
+ return byteBuffer.getDouble();
+ }
+
+ @Override
+ public String readString(int numOfBytes) {
+ byte [] data = readBytes(numOfBytes);
+
+ return new String(data, StandardCharsets.US_ASCII);
+ }
+
+ @Override
+ public String readString(){
+ ensureBytes(4);
+ int len = byteBuffer.getInt();
+
+ if(len == 0)
+ return "";
+
+ ensureBytes(len);
+ byte[] stringBytes = new byte[len];
+ byteBuffer.get(stringBytes, 0, stringBytes.length);
+
+ return new String(stringBytes, StandardCharsets.US_ASCII);
+ }
+
+ @Override
+ public List readStringList(){
+ ensureBytes(4); // 1x int
+ int numOfStrings = byteBuffer.getInt();
+
+ ArrayList stringList = new ArrayList<>();
+ for(int i=0; i < numOfStrings; i++){
+ stringList.add(readString());
+ }
+
+ return stringList;
+ }
+
+ @Override
+ public VPoint read2DPosition(){
+ // id already consumed
+ ensureBytes(16); // 2x double
+ double x = byteBuffer.getDouble();
+ double y = byteBuffer.getDouble();
+ return new VPoint(x,y);
+ }
+
+ @Override
+ public Vector3D read3DPosition(){
+ // id already consumed
+ ensureBytes(24); // 3x double
+ double x = byteBuffer.getDouble();
+ double y = byteBuffer.getDouble();
+ double z = byteBuffer.getDouble();
+ return new Vector3D(x, y, z);
+ }
+
+ @Override
+ public RoadMapPosition readRoadMapPosition(){
+ // id already consumed
+ String roadId = readString();
+ ensureBytes(9); // double + ubyte
+ double pos = readDouble();
+ int laneId = readUnsignedByte();
+ return new RoadMapPosition(roadId, pos, laneId);
+ }
+
+ @Override
+ public VPoint readLonLatPosition(){
+ // id already consumed
+ ensureBytes(16); // 2x double
+ double lon = byteBuffer.getDouble();
+ double lat = byteBuffer.getDouble();
+ return new VPoint(lon, lat);
+ }
+
+ @Override
+ public Vector3D readLonLatAltPosition(){
+ // id already consumed
+ ensureBytes(24); // 3x double
+ double lon = byteBuffer.getDouble();
+ double lat = byteBuffer.getDouble();
+ double alt = byteBuffer.getDouble();
+ return new Vector3D(lon, lat, alt);
+ }
+
+ @Override
+ public VPolygon readPolygon(){
+ // id already consumed
+ ensureBytes(1); // ubyte
+ int numberOfPoints = readUnsignedByte();
+
+ ensureBytes(numberOfPoints * 16); // 2x double values for each numberOfPoints
+ IPoint[] points = new IPoint[numberOfPoints];
+ for (int i = 0; i < points.length; i++) {
+ double x = byteBuffer.getDouble();
+ double y = byteBuffer.getDouble();
+ points[i] = new VPoint(x, y);
+ }
+ return GeometryUtils.polygonFromPoints2D(points);
+ }
+
+ @Override
+ public List readTrafficLightPhaseList(){
+ // id already consumed
+ ensureBytes(1); // 1x ubyte
+ int numberOfPhases = readUnsignedByte();
+
+ ArrayList phases = new ArrayList<>();
+ for (int i=0; i < numberOfPhases; i++){
+ String precRoad = readString();
+ String succRoad = readString();
+ ensureBytes(1); // 1x ubyte
+ int lightPhaseId = readUnsignedByte();
+ phases.add(new TrafficLightPhase(precRoad, succRoad, LightPhase.fromId(lightPhaseId)));
+ }
+
+ return phases;
+ }
+
+ @Override
+ public Color readColor(){
+ // id already consumed
+ ensureBytes(4); // 4x ubyte (RGBA)
+
+ int r = readUnsignedByte();
+ int g = readUnsignedByte();
+ int b = readUnsignedByte();
+ int a = readUnsignedByte();
+
+ return new Color(r, g, b, a);
+ }
+
+ @Override
+ public Object readTypeValue(TraCIDataType type) {
+
+ switch (type){
+ case U_BYTE:
+ return readUnsignedByte();
+ case BYTE:
+ return readByte();
+ case INTEGER:
+ return readInt();
+ case DOUBLE:
+ return readDouble();
+ case STRING:
+ return readString();
+ case STRING_LIST:
+ return readStringList();
+ case POS_2D:
+ return read2DPosition();
+ case POS_3D:
+ return read3DPosition();
+ case POS_ROAD_MAP:
+ return readRoadMapPosition();
+ case POS_LON_LAT:
+ return readLonLatPosition();
+ case POS_LON_LAT_ALT:
+ return readLonLatAltPosition();
+ case POLYGON:
+ return readPolygon();
+ case TRAFFIC_LIGHT_PHASE_LIST:
+ return readTrafficLightPhaseList();
+ case COLOR:
+ return readColor();
+ case COMPOUND_OBJECT:
+ return null; // todo: simple fix. For now we ignore Compound Objects.
+ default:
+ throw new TraCIException("Unknown Datatype: " + type.toString());
+ }
+ }
+
+ @Override
+ public boolean hasRemaining(){
+ return byteBuffer.hasRemaining();
+ }
+
+ @Override
+ public void ensureBytes(int num){
+ int bytesLeft = byteBuffer.limit() - byteBuffer.position();
+ if (bytesLeft < num)
+ throw new TraCIException("Not enough bytes left." + "Expected " + num + "Bytes but only " + bytesLeft + " found.");
+ }
+
+ @Override
+ public int limit() {
+ return byteBuffer.limit();
+ }
+
+ @Override
+ public int position() {
+ return byteBuffer.position();
+ }
+
+
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/reader/TraCICommandBuffer.java b/VadereManager/src/org/vadere/manager/traci/reader/TraCICommandBuffer.java
new file mode 100644
index 0000000000000000000000000000000000000000..4d69e9f03d00398cbc3f40bf06b1afc6a1146baf
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/reader/TraCICommandBuffer.java
@@ -0,0 +1,49 @@
+package org.vadere.manager.traci.reader;
+
+import java.nio.ByteBuffer;
+
+/**
+ * A simple Wrapper around a {@link TraCIReader} which knows how to traverse a single command.
+ *
+ * The class expects that the given buffer only contains *one* command. The command length filed
+ * (1 byte or 5 bytes, depending on the command limit) must be removed before creating an instance.
+ *
+ */
+public class TraCICommandBuffer extends TraCIByteBuffer {
+
+ private boolean cmdIdentifierRead;
+
+ public static TraCICommandBuffer wrap(byte[] buf){
+ return new TraCICommandBuffer(buf);
+ }
+
+ public static TraCICommandBuffer wrap(ByteBuffer buf){
+ return new TraCICommandBuffer(buf);
+ }
+
+ public static TraCICommandBuffer empty(){
+ return new TraCICommandBuffer(new byte[0]);
+ }
+
+
+ private TraCICommandBuffer(byte[] buf) {
+ super(buf);
+ cmdIdentifierRead = false;
+ }
+
+ private TraCICommandBuffer(ByteBuffer buf) {
+ super(buf);
+ cmdIdentifierRead = false;
+ }
+
+
+ public int readCmdIdentifier(){
+ if (cmdIdentifierRead)
+ throw new IllegalStateException("TraCI Command Identifier already consumed. readCmdIdentifier() must only be called once. Something went wrong in the TraCI message handling.");
+
+ cmdIdentifierRead = true;
+ return readUnsignedByte();
+ }
+
+
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/reader/TraCIPacketBuffer.java b/VadereManager/src/org/vadere/manager/traci/reader/TraCIPacketBuffer.java
new file mode 100644
index 0000000000000000000000000000000000000000..567eb5b63f22e0532528772764ef6b516c6c071d
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/reader/TraCIPacketBuffer.java
@@ -0,0 +1,86 @@
+package org.vadere.manager.traci.reader;
+
+import org.vadere.manager.traci.TraCICmd;
+import org.vadere.manager.traci.respons.StatusResponse;
+import org.vadere.manager.traci.commands.TraCICommand;
+import org.vadere.manager.traci.respons.TraCIResponse;
+
+import java.nio.ByteBuffer;
+
+/**
+ * A simple Wrapper around a {@link TraCIReader} which knows how to retrieve *
+ * single commands from a TraCI byte[] array.
+ *
+ * The class expects that the given buffer only contains commands. The packet length filed (int)
+ * must be removed before!
+ *
+ */
+public class TraCIPacketBuffer extends TraCIByteBuffer {
+
+ public static TraCIPacketBuffer wrap(byte[] buf){
+ return new TraCIPacketBuffer(buf);
+ }
+
+ public static TraCIPacketBuffer wrap(ByteBuffer buf){
+ return new TraCIPacketBuffer(buf);
+ }
+
+ public static TraCIPacketBuffer empty(){
+ return new TraCIPacketBuffer(new byte[0]);
+ }
+
+ protected TraCIPacketBuffer(byte[] buf){
+ super(buf);
+ }
+
+ protected TraCIPacketBuffer(ByteBuffer buf){
+ super(buf);
+ }
+
+ public TraCICommand nextCommand(){
+ if (!hasRemaining())
+ return null;
+
+ int cmdLen = getCommandDataLen();
+
+ return TraCICommand.create(readByteBuffer(cmdLen));
+ }
+
+ public TraCIResponse nextResponse(){
+ if (!hasRemaining())
+ return null;
+
+ int statusLen = getCommandDataLen();
+ StatusResponse statusResponse = StatusResponse.createFromByteBuffer(readByteBuffer(statusLen));
+
+ if (!hasRemaining()){
+ // only StatusResponse
+ return TraCIResponse.create(statusResponse);
+ } else {
+ if (statusResponse.getCmdIdentifier().equals(TraCICmd.SIM_STEP)){
+ // The sim step command does follow the standard command structure.
+ // After the status command follows a single int encoding the number of
+ // subscription results which will follow. Thus in case of SIM_STEP
+ // give all remaining data to the factory.
+ int rest = limit() - position();
+ return TraCIResponse.create(statusResponse, readByteBuffer(rest));
+ } else {
+ int responseDataLen = getCommandDataLen();
+ ByteBuffer buffer = readByteBuffer(responseDataLen);
+ return TraCIResponse.create(statusResponse, buffer);
+ }
+
+ }
+ }
+
+ private int getCommandDataLen(){
+ int cmdLen = readUnsignedByte();
+ if (cmdLen == 0 ){
+ // extended cmdLen field used.
+ cmdLen = readInt() - 5; // subtract cmdLen field: 1 ubyte + 1 int (4)
+ } else {
+ cmdLen -= 1; // subtract cmdLen field: 1 ubyte
+ }
+ return cmdLen;
+ }
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/reader/TraCIReader.java b/VadereManager/src/org/vadere/manager/traci/reader/TraCIReader.java
new file mode 100644
index 0000000000000000000000000000000000000000..8c8f62f3973c07b4533730f5354cb91df938e00d
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/reader/TraCIReader.java
@@ -0,0 +1,70 @@
+package org.vadere.manager.traci.reader;
+
+import org.vadere.manager.traci.TraCIDataType;
+import org.vadere.manager.traci.sumo.RoadMapPosition;
+import org.vadere.manager.traci.sumo.TrafficLightPhase;
+import org.vadere.util.geometry.Vector3D;
+import org.vadere.util.geometry.shapes.VPoint;
+import org.vadere.util.geometry.shapes.VPolygon;
+
+import java.awt.*;
+import java.nio.ByteBuffer;
+import java.util.List;
+
+
+/**
+ * Definition of read methods used to deserialize TraCICommands / TraCIResponses received
+ * over a socket.
+ */
+public interface TraCIReader {
+
+
+ byte readByte();
+ default int readUnsignedByte(){
+ // (signed)byte --cast--> (signed)int --(& 0xff)--> cut highest three bytes.
+ // This result represents the an unsigned byte value (0..255) as an int.
+ return (int)readByte() & 0xff;
+ }
+
+ byte[] readBytes(int num);
+ default ByteBuffer readByteBuffer(int num){
+ return ByteBuffer.wrap(readBytes(num));
+ }
+
+ void readBytes(byte[] data);
+
+ int readInt();
+ double readDouble();
+
+ String readString(int numOfBytes);
+
+ String readString();
+
+ List readStringList();
+
+ VPoint read2DPosition();
+
+ Vector3D read3DPosition();
+
+ RoadMapPosition readRoadMapPosition();
+
+ VPoint readLonLatPosition();
+
+ Vector3D readLonLatAltPosition();
+
+ VPolygon readPolygon();
+
+ List readTrafficLightPhaseList();
+
+ Object readTypeValue(TraCIDataType type);
+
+ Color readColor();
+
+ boolean hasRemaining();
+
+ void ensureBytes(int num);
+
+ int limit();
+
+ int position();
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/respons/StatusResponse.java b/VadereManager/src/org/vadere/manager/traci/respons/StatusResponse.java
new file mode 100644
index 0000000000000000000000000000000000000000..d25b138d0e07f1ea4a347e1c6ad9bd5b49a1e254
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/respons/StatusResponse.java
@@ -0,0 +1,90 @@
+package org.vadere.manager.traci.respons;
+
+import org.vadere.manager.traci.TraCICmd;
+import org.vadere.manager.traci.reader.TraCICommandBuffer;
+
+import java.nio.ByteBuffer;
+import java.util.Objects;
+
+
+/**
+ * {@link StatusResponse} object send with each response.
+ *
+ * see {@link TraCIStatusResponse} for status codes.
+ */
+public class StatusResponse {
+
+ private TraCICmd cmdIdentifier;
+ private TraCIStatusResponse response;
+ private String description;
+
+ public static StatusResponse createFromByteBuffer(ByteBuffer rawCmd){
+ StatusResponse ret = new StatusResponse();
+ TraCICommandBuffer buf = TraCICommandBuffer.wrap(rawCmd);
+ ret.cmdIdentifier = TraCICmd.fromId(buf.readCmdIdentifier());
+ ret.response = TraCIStatusResponse.fromId(buf.readUnsignedByte());
+
+ ret.description = buf.readString();
+
+ return ret;
+ }
+
+ private StatusResponse(){
+
+ }
+
+ public StatusResponse(TraCICmd cmdIdentifier, TraCIStatusResponse response, String description) {
+ this.cmdIdentifier = cmdIdentifier;
+ this.response = response;
+ this.description = description;
+ }
+
+
+ public TraCICmd getCmdIdentifier() {
+ return cmdIdentifier;
+ }
+
+ public void setCmdIdentifier(TraCICmd cmdIdentifier) {
+ this.cmdIdentifier = cmdIdentifier;
+ }
+
+ public TraCIStatusResponse getResponse() {
+ return response;
+ }
+
+ public void setResponse(TraCIStatusResponse response) {
+ this.response = response;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ StatusResponse response1 = (StatusResponse) o;
+ return cmdIdentifier == response1.cmdIdentifier &&
+ response == response1.response &&
+ description.equals(response1.description);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(cmdIdentifier, response, description);
+ }
+
+ @Override
+ public String toString() {
+ return "StatusResponse{" +
+ "cmdIdentifier=" + cmdIdentifier +
+ ", response=" + response +
+ ", description='" + description + '\'' +
+ '}';
+ }
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/respons/TraCIGetResponse.java b/VadereManager/src/org/vadere/manager/traci/respons/TraCIGetResponse.java
new file mode 100644
index 0000000000000000000000000000000000000000..01d740e2400538b41cbedd5699205da04413158b
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/respons/TraCIGetResponse.java
@@ -0,0 +1,100 @@
+package org.vadere.manager.traci.respons;
+
+import org.vadere.manager.traci.TraCICmd;
+import org.vadere.manager.traci.TraCIDataType;
+import org.vadere.manager.traci.reader.TraCICommandBuffer;
+
+import java.util.Objects;
+
+
+/**
+ * Response object for {@link org.vadere.manager.traci.commands.TraCIGetCommand}
+ * command. This command is used to retrieve generic data from the simulator.
+ *
+ * The structure of the response:
+ *
+ * [ responseID(based on API) ] [ variableId ] [ elementId ] [ dataTypeId ] [ data ]
+ *
+ * - responseID(based on API): Each API (Person, Vehicle, Simulation, ...) has a different Id.
+ * - variableId: Id for the var. The numbers may be the same between different APIs
+ * - elementId: String based id for the object (i.e. a pedestrianId)
+ * - dataTypeId: see {@link TraCIDataType}
+ * - data: data to be returned.
+ *
+ * See {@link TraCIResponse} for static factory methods used to create objects from byte[]
+ */
+public class TraCIGetResponse extends TraCIResponse{
+
+ private int variableIdentifier;
+ private String elementIdentifier;
+
+ private TraCIDataType responseDataType;
+ private Object responseData;
+
+ public TraCIGetResponse(StatusResponse statusResponse, TraCICmd responseIdentifier, TraCICommandBuffer buffer) {
+ super(statusResponse, responseIdentifier);
+
+ variableIdentifier = buffer.readUnsignedByte();
+ elementIdentifier = buffer.readString();
+ responseDataType = TraCIDataType.fromId(buffer.readUnsignedByte());
+ responseData = buffer.readTypeValue(responseDataType);
+ }
+
+ public TraCIGetResponse(StatusResponse statusResponse, TraCICmd responseIdentifier) {
+ super(statusResponse, responseIdentifier);
+ }
+
+ public int getVariableIdentifier() {
+ return variableIdentifier;
+ }
+
+ public void setVariableIdentifier(int variableIdentifier) {
+ this.variableIdentifier = variableIdentifier;
+ }
+
+ public String getElementIdentifier() {
+ return elementIdentifier;
+ }
+
+ public void setElementIdentifier(String elementIdentifier) {
+ this.elementIdentifier = elementIdentifier;
+ }
+
+ public TraCIDataType getResponseDataType() {
+ return responseDataType;
+ }
+
+ public void setResponseDataType(TraCIDataType responseDataType) {
+ this.responseDataType = responseDataType;
+ }
+
+ public Object getResponseData() {
+ return responseData;
+ }
+
+ public void setResponseData(Object responseData) {
+ this.responseData = responseData;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ TraCIGetResponse that = (TraCIGetResponse) o;
+ return responseDataType == that.responseDataType &&
+ responseData.equals(that.responseData);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(responseDataType, responseData);
+ }
+
+ @Override
+ public String toString() {
+ return "TraCIGetResponse{" +
+ "responseDataType=" + responseDataType +
+ ", responseData=" + responseData +
+ '}';
+ }
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/respons/TraCIGetVersionResponse.java b/VadereManager/src/org/vadere/manager/traci/respons/TraCIGetVersionResponse.java
new file mode 100644
index 0000000000000000000000000000000000000000..bf9ba0265b35a99ca95e523c2ff1984a2a3b14de
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/respons/TraCIGetVersionResponse.java
@@ -0,0 +1,82 @@
+package org.vadere.manager.traci.respons;
+
+import org.vadere.manager.traci.TraCICmd;
+import org.vadere.manager.traci.TraCIVersion;
+import org.vadere.manager.traci.reader.TraCICommandBuffer;
+
+import java.util.Objects;
+
+/**
+ * Response object for {@link org.vadere.manager.traci.commands.control.TraCIGetVersionCommand}
+ * command. It returns the numerical {@link #versionId} and string {@link #versionString}
+ * representation of the current TraCI version.
+ *
+ * See {@link TraCIResponse} for static factory methods used to create objects from byte[]
+ */
+public class TraCIGetVersionResponse extends TraCIResponse{
+
+ private int versionId;
+ private String versionString;
+
+ // deserialize from buffer (wrap byte[])
+ public TraCIGetVersionResponse(StatusResponse statusResponse, TraCICommandBuffer buffer) {
+ super(statusResponse, TraCICmd.GET_VERSION);
+ this.versionId = buffer.readInt();
+ this.versionString = buffer.readString();
+ }
+
+ public TraCIGetVersionResponse(){
+ super(new StatusResponse(TraCICmd.GET_VERSION, TraCIStatusResponse.OK, ""),
+ TraCICmd.GET_VERSION);
+ }
+
+ public TraCIGetVersionResponse(TraCIVersion version) {
+ this();
+ this.versionId = version.traciBaseVersion;
+ this.versionString = version.getVersionString();
+ }
+
+ public boolean isOKResponseStatus(){
+ return statusResponse.getResponse().equals(TraCIStatusResponse.OK);
+ }
+
+ public int getVersionId() {
+ return versionId;
+ }
+
+ public void setVersionId(int versionId) {
+ this.versionId = versionId;
+ }
+
+ public String getVersionString() {
+ return versionString;
+ }
+
+ public void setVersionString(String versionString) {
+ this.versionString = versionString;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ TraCIGetVersionResponse that = (TraCIGetVersionResponse) o;
+ return versionId == that.versionId &&
+ Objects.equals(versionString, that.versionString);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(versionId, versionString);
+ }
+
+ @Override
+ public String toString() {
+ return "TraCIGetVersionResponse{" +
+ "versionId=" + versionId +
+ ", versionString='" + versionString + '\'' +
+ ", statusResponse=" + statusResponse +
+ ", responseIdentifier=" + responseIdentifier +
+ '}';
+ }
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/respons/TraCIResponse.java b/VadereManager/src/org/vadere/manager/traci/respons/TraCIResponse.java
new file mode 100644
index 0000000000000000000000000000000000000000..9ac864c16d5a792686077f8e3a516df65db903e1
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/respons/TraCIResponse.java
@@ -0,0 +1,110 @@
+package org.vadere.manager.traci.respons;
+
+import org.vadere.manager.TraCIException;
+import org.vadere.manager.traci.TraCICmd;
+import org.vadere.manager.traci.reader.TraCICommandBuffer;
+
+import java.nio.ByteBuffer;
+
+
+/**
+ * Generic response object for each command. It contains the {@link StatusResponse} object
+ * as well as optional response data warped in a second command.
+ *
+ * If no additional data is send the responseIdentifier will be ignored.
+ *
+ * Construction Methods: (compare with {@link org.vadere.manager.traci.commands.TraCICommand})
+ *
+ * Each {@link TraCIResponse} class is build in two ways. Either it is created from bytes
+ * (i.e. some byte[] wrapped in a {@link ByteBuffer} or {@link TraCICommandBuffer} for ease of use)
+ * or manually to prepaid a response to a client.
+ *
+ *
+ */
+public class TraCIResponse {
+
+ protected StatusResponse statusResponse;
+ protected TraCICmd responseIdentifier;
+
+
+ public static TraCIResponse create(StatusResponse statusResponse){
+ return new TraCIResponse(statusResponse, statusResponse.getCmdIdentifier());
+ }
+
+ public static TraCIResponse create(StatusResponse statusResponse, ByteBuffer rawCmd){
+ TraCICommandBuffer cmdResponseBuffer = TraCICommandBuffer.wrap(rawCmd);
+
+ TraCICmd commandIdentifier = statusResponse.getCmdIdentifier();
+
+ // build correct versions. based on actual command
+ TraCICmd responseIdentifier;
+ switch (commandIdentifier.type){
+ case CTRL:
+ return createControlResponse(commandIdentifier, cmdResponseBuffer, statusResponse);
+ case VALUE_GET:
+ responseIdentifier = TraCICmd.fromId(cmdResponseBuffer.readCmdIdentifier());
+ return new TraCIGetResponse(statusResponse, responseIdentifier, cmdResponseBuffer);
+ case VALUE_SET:
+ responseIdentifier = TraCICmd.fromId(cmdResponseBuffer.readCmdIdentifier());
+ return createSetResponse(commandIdentifier, responseIdentifier, cmdResponseBuffer, statusResponse);
+ case VALUE_SUB:
+// return createControlResponse(cmd, responseIdentifier, cmdResponseBuffer);
+ case CONTEXT_SUB:
+// return createControlResponse(cmd, responseIdentifier, cmdResponseBuffer);
+ default:
+ throw new TraCIException("Response Object not implemented for command: " + commandIdentifier.toString());
+ }
+ }
+
+ // factory methods
+
+ private static TraCIResponse createControlResponse(TraCICmd commandIdentifier, TraCICommandBuffer cmdResponseBuffer, StatusResponse statusResponse){
+ switch (commandIdentifier){
+ case GET_VERSION:
+ return new TraCIGetVersionResponse(statusResponse, cmdResponseBuffer);
+ case SIM_STEP:
+ return new TraCISimTimeResponse(statusResponse, cmdResponseBuffer);
+ }
+ return null;
+ }
+
+
+ private static TraCIResponse createSetResponse(TraCICmd commandIdentifier, TraCICmd responseIdentifier, TraCICommandBuffer cmdResponseBuffer, StatusResponse statusResponse){
+ return null;
+ }
+
+ // instance methods
+
+ public TraCIResponse (StatusResponse statusResponse, TraCICmd responseIdentifier){
+ this.statusResponse = statusResponse;
+ this.responseIdentifier = responseIdentifier;
+ }
+
+ public TraCIResponse(TraCICmd responseIdentifier){
+
+ }
+
+ public StatusResponse getStatusResponse() {
+ return statusResponse;
+ }
+
+ public void setStatusResponse(StatusResponse statusResponse) {
+ this.statusResponse = statusResponse;
+ }
+
+ public TraCICmd getResponseIdentifier() {
+ return responseIdentifier;
+ }
+
+ public void setResponseIdentifier(TraCICmd responseIdentifier) {
+ this.responseIdentifier = responseIdentifier;
+ }
+
+ @Override
+ public String toString() {
+ return "TraCIResponse{" +
+ "statusResponse=" + statusResponse +
+ ", responseIdentifier=" + responseIdentifier +
+ '}';
+ }
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/respons/TraCISimTimeResponse.java b/VadereManager/src/org/vadere/manager/traci/respons/TraCISimTimeResponse.java
new file mode 100644
index 0000000000000000000000000000000000000000..6fb2c5b929b6c905e2ca2bb22b9fd60844197102
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/respons/TraCISimTimeResponse.java
@@ -0,0 +1,65 @@
+package org.vadere.manager.traci.respons;
+
+import org.vadere.manager.traci.TraCICmd;
+import org.vadere.manager.traci.reader.TraCICommandBuffer;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Response object for {@link org.vadere.manager.traci.commands.control.TraCISimStepCommand}
+ * command. It includes all subscriptions previously added by each client.
+ *
+ * See {@link TraCIResponse} for static factory methods used to create objects from byte[]
+ */
+public class TraCISimTimeResponse extends TraCIResponse {
+
+// private int numberOfSubscriptions;
+ private List subscriptionResponses;
+
+
+ public static TraCISimTimeResponse simEndReached(){
+ TraCISimTimeResponse res = new TraCISimTimeResponse(
+ new StatusResponse(TraCICmd.SIM_STEP, TraCIStatusResponse.ERR, "Simulation end reached."));
+
+ return res;
+ }
+
+ public TraCISimTimeResponse (StatusResponse statusResponse, TraCICommandBuffer buffer){
+ this(statusResponse);
+ int numberOfSubscriptions = buffer.readInt();
+ for(int i=0; i();
+ }
+
+ public int getNumberOfSubscriptions() {
+ return subscriptionResponses.size();
+ }
+
+ public List getSubscriptionResponses() {
+ return subscriptionResponses;
+ }
+
+ public void setSubscriptionResponses(List subscriptionResponses) {
+ this.subscriptionResponses = subscriptionResponses;
+ }
+
+ public void addSubscriptionResponse(TraCISubscriptionResponse response){
+ this.subscriptionResponses.add(response);
+ }
+
+
+
+
+
+
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/respons/TraCIStatusResponse.java b/VadereManager/src/org/vadere/manager/traci/respons/TraCIStatusResponse.java
new file mode 100644
index 0000000000000000000000000000000000000000..7afe9a25a0d2196c75c48922051cfbfac50ca2eb
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/respons/TraCIStatusResponse.java
@@ -0,0 +1,32 @@
+package org.vadere.manager.traci.respons;
+
+import org.vadere.manager.TraCIException;
+
+/**
+ * Status Codes for each Response send from a TraCI-Server. These codes are wrapped within a
+ * {@link TraCIStatusResponse} response send back to the client. Depending on the command
+ * an additional response appended.
+ *
+ * See {@link TraCIResponse} for more information.
+ */
+public enum TraCIStatusResponse {
+
+ OK(0x00),
+ ERR(0xFF),
+ NOT_IMPLEMENTED(0x01),
+ ;
+
+ public int id;
+
+ public static TraCIStatusResponse fromId(int id){
+ for(TraCIStatusResponse status : values()){
+ if (status.id == id)
+ return status;
+ }
+ throw new TraCIException(String.format("No status id found with id: %02X", id));
+ }
+
+ TraCIStatusResponse(int id) {
+ this.id = id;
+ }
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/respons/TraCISubscriptionResponse.java b/VadereManager/src/org/vadere/manager/traci/respons/TraCISubscriptionResponse.java
new file mode 100644
index 0000000000000000000000000000000000000000..73ee18b9eea23c7d95403db24a2f1a0995b42b61
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/respons/TraCISubscriptionResponse.java
@@ -0,0 +1,192 @@
+package org.vadere.manager.traci.respons;
+
+import org.vadere.manager.traci.TraCICmd;
+import org.vadere.manager.traci.TraCIDataType;
+import org.vadere.manager.traci.commands.TraCIValueSubscriptionCommand;
+import org.vadere.manager.traci.reader.TraCICommandBuffer;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+public class TraCISubscriptionResponse extends TraCIResponse {
+
+ public static final String SUB_REMOVED = "Subscription removed.";
+
+ private String elementId;
+ private int numberOfVariables;
+ private List responses;
+
+
+ public static TraCISubscriptionResponse removeResponse(TraCIValueSubscriptionCommand cmd, TraCICmd res){
+ TraCISubscriptionResponse subResponse = new TraCISubscriptionResponse(
+ new StatusResponse(cmd.getTraCICmd(), TraCIStatusResponse.ERR, SUB_REMOVED),
+ res, cmd.getElementIdentifier(), cmd.getNumberOfVariables());
+
+ return subResponse;
+ }
+
+
+ public TraCISubscriptionResponse(StatusResponse statusResponse, TraCICmd responseIdentifier, TraCICommandBuffer buffer) {
+ this(statusResponse, responseIdentifier);
+
+ elementId = buffer.readString();
+ numberOfVariables = buffer.readUnsignedByte();
+ for(int i=0; i();
+ }
+
+ public void addVariableResponse(int variableId, TraCIStatusResponse status, TraCIDataType dataType, Object value){
+ responses.add(new SingeVarResponse(variableId, status, dataType, value));
+ }
+
+ public String getElementId() {
+ return elementId;
+ }
+
+ public void setElementId(String elementId) {
+ this.elementId = elementId;
+ }
+
+ public int getNumberOfVariables() {
+ return numberOfVariables;
+ }
+
+ public void setNumberOfVariables(int numberOfVariables) {
+ this.numberOfVariables = numberOfVariables;
+ }
+
+ public List getResponses() {
+ return responses;
+ }
+
+ public void setResponses(List responses) {
+ this.responses = responses;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ TraCISubscriptionResponse that = (TraCISubscriptionResponse) o;
+ return numberOfVariables == that.numberOfVariables &&
+ elementId.equals(that.elementId) &&
+ responses.equals(that.responses);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(elementId, numberOfVariables, responses);
+ }
+
+ @Override
+ public String toString() {
+ return "TraCISubscriptionResponse{" +
+ "elementId='" + elementId + '\'' +
+ ", numberOfVariables=" + numberOfVariables +
+ ", responses=" + responses +
+ ", statusResponse=" + statusResponse +
+ '}';
+ }
+
+ public class SingeVarResponse {
+
+ int variableId;
+ TraCIStatusResponse status;
+ TraCIDataType variableDataType;
+ Object variableValue;
+
+ public SingeVarResponse(TraCICommandBuffer buffer) {
+ variableId = buffer.readUnsignedByte();
+ status = TraCIStatusResponse.fromId(buffer.readUnsignedByte());
+ if(status.equals(TraCIStatusResponse.OK)){
+ variableDataType = TraCIDataType.fromId(buffer.readUnsignedByte());
+ } else {
+ variableDataType = TraCIDataType.STRING; // ERR
+ }
+ variableValue = buffer.readTypeValue(variableDataType);
+ }
+
+ public SingeVarResponse(int variableId, TraCIStatusResponse status, TraCIDataType variableDataType, Object variableValue) {
+ this.variableId = variableId;
+ this.status = status;
+ this.variableDataType = variableDataType;
+ this.variableValue = variableValue;
+ }
+
+ public boolean isStatusOK(){
+ return status.equals(TraCIStatusResponse.OK);
+ }
+
+ public int getVariableId() {
+ return variableId;
+ }
+
+ public void setVariableId(int variableId) {
+ this.variableId = variableId;
+ }
+
+ public TraCIStatusResponse getStatus() {
+ return status;
+ }
+
+ public void setStatus(TraCIStatusResponse status) {
+ this.status = status;
+ }
+
+ public TraCIDataType getVariableDataType() {
+ return variableDataType;
+ }
+
+ public void setVariableDataType(TraCIDataType variableDataType) {
+ this.variableDataType = variableDataType;
+ }
+
+ public Object getVariableValue() {
+ return variableValue;
+ }
+
+ public void setVariableValue(Object variableValue) {
+ this.variableValue = variableValue;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ SingeVarResponse that = (SingeVarResponse) o;
+ return variableId == that.variableId &&
+ status == that.status &&
+ variableDataType == that.variableDataType &&
+ variableValue.equals(that.variableValue);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(variableId, status, variableDataType, variableValue);
+ }
+
+ @Override
+ public String toString() {
+ return "SingeVarResponse{" +
+ "variableId=" + variableId +
+ ", status=" + status +
+ ", variableDataType=" + variableDataType +
+ ", variableValue=" + variableValue +
+ '}';
+ }
+ }
+
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/sumo/LightPhase.java b/VadereManager/src/org/vadere/manager/traci/sumo/LightPhase.java
new file mode 100644
index 0000000000000000000000000000000000000000..aa82f1818ebe8e325fc721046247aa47ce017ec1
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/sumo/LightPhase.java
@@ -0,0 +1,25 @@
+package org.vadere.manager.traci.sumo;
+
+public enum LightPhase {
+
+ RED (0x01),
+ YELLOW (0x02),
+ GREEN (0x03),
+ OFF_BLINK (0x04),
+ OFF (0x05);
+
+
+ public int id;
+ LightPhase(int id){
+ this.id = id;
+ }
+
+ public static LightPhase fromId(int id){
+ for (LightPhase value : values()) {
+ if (value.id == id)
+ return value;
+ }
+ throw new IllegalArgumentException("No LightPhase for traCICmd: " + id);
+ }
+
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/sumo/RoadMapPosition.java b/VadereManager/src/org/vadere/manager/traci/sumo/RoadMapPosition.java
new file mode 100644
index 0000000000000000000000000000000000000000..4360cd05d26ecb0bb94071d94d3fb72c41626cf5
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/sumo/RoadMapPosition.java
@@ -0,0 +1,64 @@
+package org.vadere.manager.traci.sumo;
+
+import java.util.Objects;
+
+public class RoadMapPosition {
+
+ private String roadId;
+ private double pos;
+ private int laneId;
+
+ public RoadMapPosition(String roadId, double pos, int laneId) {
+ this.roadId = roadId;
+ this.pos = pos;
+ this.laneId = laneId;
+ }
+
+ public String getRoadId() {
+ return roadId;
+ }
+
+ public void setRoadId(String roadId) {
+ this.roadId = roadId;
+ }
+
+ public double getPos() {
+ return pos;
+ }
+
+ public void setPos(double pos) {
+ this.pos = pos;
+ }
+
+ public int getLaneId() {
+ return laneId;
+ }
+
+ public void setLaneId(int laneId) {
+ this.laneId = laneId;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ RoadMapPosition that = (RoadMapPosition) o;
+ return Double.compare(that.pos, pos) == 0 &&
+ laneId == that.laneId &&
+ roadId.equals(that.roadId);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(roadId, pos, laneId);
+ }
+
+ @Override
+ public String toString() {
+ return "RoadMapPosition{" +
+ "roadId='" + roadId + '\'' +
+ ", pos=" + pos +
+ ", laneId=" + laneId +
+ '}';
+ }
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/sumo/TrafficLightPhase.java b/VadereManager/src/org/vadere/manager/traci/sumo/TrafficLightPhase.java
new file mode 100644
index 0000000000000000000000000000000000000000..8b18bfab6b68ae7987e691364c866afce7a73c91
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/sumo/TrafficLightPhase.java
@@ -0,0 +1,65 @@
+package org.vadere.manager.traci.sumo;
+
+import java.util.Objects;
+
+public class TrafficLightPhase {
+
+ private String PrecRoad;
+ private String SuccRoad;
+ private LightPhase phase;
+
+
+ public TrafficLightPhase(String precRoad, String succRoad, LightPhase phase) {
+ PrecRoad = precRoad;
+ SuccRoad = succRoad;
+ this.phase = phase;
+ }
+
+ public String getPrecRoad() {
+ return PrecRoad;
+ }
+
+ public void setPrecRoad(String precRoad) {
+ PrecRoad = precRoad;
+ }
+
+ public String getSuccRoad() {
+ return SuccRoad;
+ }
+
+ public void setSuccRoad(String succRoad) {
+ SuccRoad = succRoad;
+ }
+
+ public LightPhase getPhase() {
+ return phase;
+ }
+
+ public void setPhase(LightPhase phase) {
+ this.phase = phase;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ TrafficLightPhase that = (TrafficLightPhase) o;
+ return PrecRoad.equals(that.PrecRoad) &&
+ SuccRoad.equals(that.SuccRoad) &&
+ phase == that.phase;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(PrecRoad, SuccRoad, phase);
+ }
+
+ @Override
+ public String toString() {
+ return "TrafficLightPhase{" +
+ "PrecRoad='" + PrecRoad + '\'' +
+ ", SuccRoad='" + SuccRoad + '\'' +
+ ", phase=" + phase +
+ '}';
+ }
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/writer/ByteArrayOutputStreamTraCIWriter.java b/VadereManager/src/org/vadere/manager/traci/writer/ByteArrayOutputStreamTraCIWriter.java
new file mode 100644
index 0000000000000000000000000000000000000000..fd579917bb7b2e179d120235b2646f15373d424d
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/writer/ByteArrayOutputStreamTraCIWriter.java
@@ -0,0 +1,305 @@
+package org.vadere.manager.traci.writer;
+
+import org.vadere.manager.TraCIException;
+import org.vadere.manager.traci.TraCIDataType;
+import org.vadere.manager.traci.sumo.RoadMapPosition;
+import org.vadere.manager.traci.sumo.TrafficLightPhase;
+import org.vadere.util.geometry.Vector3D;
+import org.vadere.util.geometry.shapes.VPoint;
+import org.vadere.util.logging.Logger;
+
+import java.awt.*;
+import java.io.ByteArrayOutputStream;
+import java.nio.ByteBuffer;
+import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
+import java.util.Arrays;
+import java.util.List;
+
+public class ByteArrayOutputStreamTraCIWriter implements TraCIWriter {
+
+ private static Logger logger = Logger.getLogger(ByteArrayOutputStreamTraCIWriter.class);
+
+ ByteArrayOutputStream data;
+
+
+
+ public ByteArrayOutputStreamTraCIWriter() {
+ data = new ByteArrayOutputStream();
+ }
+
+ @Override
+ public ByteBuffer asByteBuffer(){
+ return ByteBuffer.wrap(data.toByteArray());
+ }
+
+ @Override
+ public byte[] asByteArray(){
+ return data.toByteArray();
+ }
+
+ @Override
+ public TraCIWriter rest(){
+ data.reset();
+ return this;
+ }
+
+ @Override
+ public TraCIWriter writeObjectWithId(TraCIDataType dataType, Object data) {
+
+ switch (dataType){
+ case U_BYTE:
+ writeUnsignedByteWithId((int) data);
+ break;
+ case BYTE:
+ writeByteWithId((byte) data);
+ break;
+ case INTEGER:
+ writeIntWithId((int) data);
+ break;
+ case DOUBLE:
+ writeDoubleWithId((double) data);
+ break;
+ case STRING:
+ writeStringWithId((String) data);
+ break;
+ case STRING_LIST:
+ writeStringListWithId((List) data);
+ break;
+ case POS_2D:
+ write2DPosition((VPoint) data);
+ break;
+ case POS_3D:
+ write3DPosition((Vector3D) data);
+ break;
+ case POS_ROAD_MAP:
+ writeRoadMapPosition((RoadMapPosition) data);
+ break;
+ case POS_LON_LAT:
+ writeLonLatPosition((VPoint) data);
+ break;
+ case POS_LON_LAT_ALT:
+ writeLonLatAltPosition((Vector3D) data);
+ break;
+ case POLYGON:
+ writePolygon((List) data);
+ break;
+ case TRAFFIC_LIGHT_PHASE_LIST:
+ writeTrafficLightPhaseList((List) data);
+ break;
+ case COLOR:
+ writeColor((Color) data);
+ break;
+ default:
+ logger.errorf("cannot write %s", dataType.toString());
+
+ }
+
+ return this;
+ }
+
+ @Override
+ public TraCIWriter writeByte(int val) {
+ data.write(val);
+ return this;
+ }
+
+ @Override
+ public TraCIWriter writeBytes(byte[] buf) {
+ data.writeBytes(buf);
+ return this;
+ }
+
+ @Override
+ public TraCIWriter writeBytes(byte[] buf, int offset, int len) {
+ data.write(buf, offset, len);
+ return this;
+ }
+
+
+ @Override
+ public TraCIWriter writeUnsignedByteWithId(int val) {
+ writeUnsignedByte(TraCIDataType.U_BYTE.id);
+ writeUnsignedByte(val);
+ return this;
+ }
+
+ @Override
+ public TraCIWriter writeByteWithId(byte val) {
+ writeUnsignedByte(TraCIDataType.BYTE.id);
+ writeByte(val);
+ return this;
+ }
+
+ @Override
+ public TraCIWriter writeIntWithId(int val) {
+ writeUnsignedByte(TraCIDataType.INTEGER.id);
+ writeInt(val);
+ return this;
+ }
+
+ @Override
+ public TraCIWriter writeDoubleWithId(double val) {
+ writeUnsignedByte(TraCIDataType.DOUBLE.id);
+ writeDouble(val);
+ return this;
+ }
+
+ @Override
+ public TraCIWriter writeStringWithId(String val) {
+ writeUnsignedByte(TraCIDataType.STRING.id);
+ writeString(val);
+ return this;
+ }
+
+ @Override
+ public TraCIWriter writeStringListWithId(List val) {
+ writeUnsignedByte(TraCIDataType.STRING_LIST.id);
+ writeStringList(val);
+ return this;
+ }
+
+ @Override
+ public TraCIWriter writeString(String val){
+ writeString(val, StandardCharsets.US_ASCII);
+ return this;
+ }
+
+ @Override
+ public TraCIWriter writeStringList(List val){
+ writeInt(val.size());
+ val.forEach(this::writeString);
+ return this;
+ }
+
+ @Override
+ public int getStringByteCount(String val){
+ return val.getBytes(StandardCharsets.US_ASCII).length;
+ }
+
+ private TraCIWriter writeString(String val, Charset c){
+ byte[] byteString = val.getBytes(c);
+ writeInt(byteString.length);
+ if (byteString.length > 0)
+ writeBytes(byteString);
+ return this;
+ }
+
+ @Override
+ public TraCIWriter write2DPosition(VPoint val){
+ writeUnsignedByte(TraCIDataType.POS_2D.id);
+ writeDouble(val.x);
+ writeDouble(val.y);
+ return this;
+ }
+
+ @Override
+ public TraCIWriter write3DPosition(Vector3D val){
+ writeUnsignedByte(TraCIDataType.POS_3D.id);
+ writeDouble(val.x);
+ writeDouble(val.y);
+ writeDouble(val.z);
+ return this;
+ }
+
+
+ @Override
+ public TraCIWriter writeRoadMapPosition(RoadMapPosition val){
+ writeUnsignedByte(TraCIDataType.POS_ROAD_MAP.id);
+ writeString(val.getRoadId());
+ writeDouble(val.getPos());
+ writeUnsignedByte(val.getLaneId());
+ return this;
+ }
+
+ @Override
+ public TraCIWriter writeLonLatPosition(VPoint lonLat){
+ writeUnsignedByte(TraCIDataType.POS_LON_LAT.id);
+ writeDouble(lonLat.x);
+ writeDouble(lonLat.y);
+ return this;
+ }
+
+ @Override
+ public TraCIWriter writeLonLatAltPosition(Vector3D lonLatAlt){
+ writeUnsignedByte(TraCIDataType.POS_LON_LAT_ALT.id);
+ writeDouble(lonLatAlt.x);
+ writeDouble(lonLatAlt.y);
+ writeDouble(lonLatAlt.z);
+ return this;
+ }
+
+ @Override
+ public TraCIWriter writePolygon(VPoint... points){
+ writePolygon(Arrays.asList(points));
+ return this;
+ }
+
+ @Override
+ public TraCIWriter writePolygon(List points){
+ writeUnsignedByte(TraCIDataType.POLYGON.id);
+ if(points.size() > 255)
+ throw new TraCIException("Polygon to big. TraCI only supports polygon up to 255 points.");
+ writeUnsignedByte(points.size());
+ points.forEach(p -> {
+ writeDouble(p.getX());
+ writeDouble(p.getY());
+ });
+ return this;
+ }
+
+ @Override
+ public TraCIWriter writeTrafficLightPhaseList(List phases){
+ writeUnsignedByte(TraCIDataType.TRAFFIC_LIGHT_PHASE_LIST.id);
+ if(phases.size() > 255)
+ throw new TraCIException("Traffic Light Phase List to big. TraCI only supports list up to 255 elements.");
+ writeUnsignedByte(phases.size());
+ phases.forEach( phase -> {
+ writeString(phase.getPrecRoad());
+ writeString(phase.getSuccRoad());
+ writeUnsignedByte(phase.getPhase().id);
+ });
+ return this;
+ }
+
+ @Override
+ public TraCIWriter writeColor(Color color){
+ writeUnsignedByte(TraCIDataType.COLOR.id);
+ writeUnsignedByte(color.getRed());
+ writeUnsignedByte(color.getGreen());
+ writeUnsignedByte(color.getBlue());
+ writeUnsignedByte(color.getAlpha());
+ return this;
+ }
+
+ @Override
+ public int stringByteCount(String str) {
+ return str.getBytes(StandardCharsets.US_ASCII).length;
+ }
+
+ /**
+ * Check if the given cmdLen fits into a single byte. If not use the extended
+ * cmdLen format which nulls the first byte and introduces a int field for the
+ * cmdLen.
+ *
+ * @param cmdLen number of bytes of command *including* one byte for the cmdLen field.
+ */
+ @Override
+ public TraCIWriter writeCommandLength(int cmdLen) {
+
+ if (cmdLen <= 255){ //
+ writeUnsignedByte(cmdLen);
+ } else {
+ // use extended cmdLen field (+4 byte)
+ cmdLen += 4;
+ writeUnsignedByte(0); // first byte must be null
+ writeInt(cmdLen); // write cmdLen as integer
+ }
+ return this;
+ }
+
+ @Override
+ public int size(){
+ return data.size();
+ }
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/writer/TraCIPacket.java b/VadereManager/src/org/vadere/manager/traci/writer/TraCIPacket.java
new file mode 100644
index 0000000000000000000000000000000000000000..b644080656684c53584fd7f9f3314fc5cae35457
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/writer/TraCIPacket.java
@@ -0,0 +1,255 @@
+package org.vadere.manager.traci.writer;
+
+import org.vadere.manager.TraCIException;
+import org.vadere.manager.traci.TraCICmd;
+import org.vadere.manager.traci.TraCIDataType;
+import org.vadere.manager.traci.commands.control.TraCIGetVersionCommand;
+import org.vadere.manager.traci.respons.StatusResponse;
+import org.vadere.manager.traci.respons.TraCIGetResponse;
+import org.vadere.manager.traci.respons.TraCIGetVersionResponse;
+import org.vadere.manager.traci.respons.TraCISimTimeResponse;
+import org.vadere.manager.traci.respons.TraCIStatusResponse;
+import org.vadere.manager.traci.respons.TraCISubscriptionResponse;
+
+import java.nio.ByteBuffer;
+
+/**
+ * //todo comment
+ */
+public class TraCIPacket extends ByteArrayOutputStreamTraCIWriter{
+
+// private TraCIWriter writer;
+ private boolean emptyLengthField;
+ private boolean finalized; //
+
+
+ public static TraCIPacket create(){
+ return new TraCIPacket().addEmptyLengthField();
+ }
+
+ public static TraCIPacket create(int packetSize){
+ TraCIPacket packet = new TraCIPacket();
+ packet.writeInt(packetSize);
+ return packet;
+ }
+
+ public static TraCIPacket sendStatus(TraCICmd cmd, TraCIStatusResponse status, String description){
+ TraCIPacket response = new TraCIPacket();
+ int cmdLen = 7 + response.getStringByteCount(description);
+
+ if (cmdLen > 255){
+ //extended CMD
+ cmdLen += 4; // add int field
+ response.writeInt(4 + cmdLen); // packet limit (4 + cmdLen) [4]
+ response.writeUnsignedByte(0); // [1]
+ response.writeInt(cmdLen); // [4]
+ } else {
+ response.writeInt(4 + cmdLen); // [4]
+ response.writeUnsignedByte(cmdLen); // [1]
+ }
+ response.writeUnsignedByte(cmd.id); // [1]
+ response.writeUnsignedByte(status.id); // [1]
+ response.writeString(description); //[4 + strLen]
+ response.finalizePacket();
+ return response;
+ }
+
+ public TraCIPacket finalizePacket(){
+ finalized = true;
+ return this;
+ }
+
+ private void throwIfFinalized(){
+ if (finalized)
+ throw new TraCIException("Cannot change finalized TraCIPacket");
+ }
+
+ private TraCIPacket() {
+ super();
+ finalized = false;
+ emptyLengthField = false;
+ }
+
+
+ private TraCIPacket addEmptyLengthField(){
+ if(emptyLengthField)
+ throw new IllegalStateException("Should only be called at most once.");
+ writeInt(-1);
+ emptyLengthField = true;
+ return this;
+ }
+
+
+ public byte[] send() {
+
+ // packet is valid TraCI packet an can be send.
+ if (finalized)
+ return asByteArray();
+
+ // packet limit must be set to correct value
+ if (emptyLengthField){
+ ByteBuffer packet = asByteBuffer();
+ packet.putInt(packet.capacity());
+ packet.position(0);
+ return packet.array();
+ } else {
+ return asByteArray();
+ }
+
+ }
+
+ private TraCIWriter getCmdBuilder(){
+ return new ByteArrayOutputStreamTraCIWriter();
+ }
+
+ public TraCIPacket wrapSetCommand(TraCICmd commandIdentifier, String elementIdentifier,
+ int variableIdentifier, TraCIDataType dataType, Object data){
+
+ TraCIWriter cmdBuilder = getCmdBuilder();
+ cmdBuilder.writeUnsignedByte(commandIdentifier.id)
+ .writeUnsignedByte(variableIdentifier)
+ .writeString(elementIdentifier)
+ .writeObjectWithId(dataType, data);
+
+ addCommandWithoutLen(cmdBuilder.asByteArray());
+
+ return this;
+ }
+
+ public TraCIPacket wrapGetResponse(TraCIGetResponse res){
+ addStatusResponse(res.getStatusResponse());
+
+ if (!res.getStatusResponse().getResponse().equals(TraCIStatusResponse.OK))
+ return this; // ERR or NOT_IMPLEMENTED --> only StatusResponse
+
+ TraCIWriter cmdBuilder = getCmdBuilder();
+ cmdBuilder.writeUnsignedByte(res.getResponseIdentifier().id)
+ .writeUnsignedByte(res.getVariableIdentifier())
+ .writeString(res.getElementIdentifier())
+ .writeObjectWithId(res.getResponseDataType(), res.getResponseData());
+
+ addCommandWithoutLen(cmdBuilder.asByteArray());
+
+ return this;
+ }
+
+ public TraCIPacket wrapValueSubscriptionCommand(TraCISubscriptionResponse res){
+ addStatusResponse(res.getStatusResponse());
+
+ if (!res.getStatusResponse().getResponse().equals(TraCIStatusResponse.OK))
+ return this; // ERR or NOT_IMPLEMENTED --> only StatusResponse
+
+ wrapSubscription(res);
+
+ return this;
+ }
+
+ private void wrapSubscription(TraCISubscriptionResponse res){
+ TraCIWriter cmdBuilder = getCmdBuilder();
+ cmdBuilder.writeUnsignedByte(res.getResponseIdentifier().id) // (i.e. TraCICmd.RESPONSE_SUB_PERSON_VARIABLE)
+ .writeString(res.getElementId())
+ .writeUnsignedByte(res.getNumberOfVariables());
+ res.getResponses().forEach( var -> {
+ cmdBuilder.writeUnsignedByte(var.getVariableId())
+ .writeUnsignedByte(var.getStatus().id)
+ .writeObjectWithId(var.getVariableDataType(), var.getVariableValue());
+ });
+
+ addCommandWithExtendedLenField(cmdBuilder.asByteArray());
+ }
+
+ public TraCIPacket wrapGetVersionCommand(TraCIGetVersionCommand cmd){
+ TraCIGetVersionResponse res = cmd.getResponse();
+
+ if(res.isOKResponseStatus())
+ add_OK_StatusResponse(cmd.getTraCICmd());
+ else
+ addStatusResponse(res.getStatusResponse());
+
+ TraCIWriter cmdBuilder = getCmdBuilder();
+ cmdBuilder.writeUnsignedByte(res.getResponseIdentifier().id)
+ .writeInt(res.getVersionId())
+ .writeString(res.getVersionString());
+
+ addCommandWithoutLen(cmdBuilder.asByteArray());
+
+ return this;
+ }
+
+ public TraCIPacket wrapSimTimeStepCommand(TraCISimTimeResponse res){
+ addStatusResponse(res.getStatusResponse());
+
+ if (!res.getStatusResponse().getResponse().equals(TraCIStatusResponse.OK))
+ return this; // ERR or NOT_IMPLEMENTED --> only StatusResponse
+
+
+ // not length field! Directly add number of subscription responses.
+ writeInt(res.getNumberOfSubscriptions());
+
+ // add each SubscriptionsResponse as its own command (with length and responseID)
+ res.getSubscriptionResponses().forEach(this::wrapSubscription);
+
+
+ return this;
+ }
+
+ public void addCommandWithExtendedLenField(byte[] buffer){
+ writeUnsignedByte(0);
+ writeInt(buffer.length + 5); // 1 + 4 length field
+ writeBytes(buffer);
+ }
+
+
+ public void addCommandWithoutLen(byte[] buffer){
+ if (buffer.length > 255){
+ writeUnsignedByte(0);
+ writeInt(buffer.length + 5); // 1 + 4 length field
+ writeBytes(buffer);
+ } else {
+ writeUnsignedByte(buffer.length + 1); // 1 length field
+ writeBytes(buffer);
+ }
+ }
+
+
+ public TraCIPacket add_Err_StatusResponse(int cmdIdentifier, String description){
+ throwIfFinalized();
+ return addStatusResponse(cmdIdentifier, TraCIStatusResponse.ERR, description);
+ }
+
+ public TraCIPacket add_OK_StatusResponse(TraCICmd traCICmd){
+ throwIfFinalized();
+ return add_OK_StatusResponse(traCICmd.id);
+ }
+
+ public TraCIPacket add_OK_StatusResponse(int cmdIdentifier){
+ throwIfFinalized();
+ // simple OK Status without description.
+ writeUnsignedByte(7);
+ writeUnsignedByte(cmdIdentifier);
+ writeUnsignedByte(TraCIStatusResponse.OK.id);
+ writeInt(0);
+ return this;
+ }
+
+ public TraCIPacket addStatusResponse(StatusResponse res) {
+ addStatusResponse(res.getCmdIdentifier().id, res.getResponse(), res.getDescription());
+ return this;
+ }
+
+ public TraCIPacket addStatusResponse(int cmdIdentifier, TraCIStatusResponse response, String description){
+ throwIfFinalized();
+ // expect single byte cmdLenField.
+ // cmdLenField + cmdIdentifier + cmdResult + strLen + str
+ // 1 + 1 + 1 + 4 + len(strBytes)
+ int cmdLen = 7 + stringByteCount(description);
+
+ writeCommandLength(cmdLen); // 1b
+ writeUnsignedByte(cmdIdentifier); // 1b
+ writeUnsignedByte(response.id); // 4b
+ writeString(description); // 4b + X
+
+ return this;
+ }
+
+}
diff --git a/VadereManager/src/org/vadere/manager/traci/writer/TraCIWriter.java b/VadereManager/src/org/vadere/manager/traci/writer/TraCIWriter.java
new file mode 100644
index 0000000000000000000000000000000000000000..99d5fc6c18409b2fb6abaaf70bc7abe37a1ed81a
--- /dev/null
+++ b/VadereManager/src/org/vadere/manager/traci/writer/TraCIWriter.java
@@ -0,0 +1,94 @@
+package org.vadere.manager.traci.writer;
+
+import org.vadere.manager.traci.TraCIDataType;
+import org.vadere.manager.traci.sumo.RoadMapPosition;
+import org.vadere.manager.traci.sumo.TrafficLightPhase;
+import org.vadere.util.geometry.Vector3D;
+import org.vadere.util.geometry.shapes.VPoint;
+
+import java.awt.*;
+import java.nio.ByteBuffer;
+import java.util.List;
+
+public interface TraCIWriter {
+
+
+ ByteBuffer asByteBuffer();
+
+ byte[] asByteArray();
+
+ TraCIWriter rest();
+
+ TraCIWriter writeObjectWithId(TraCIDataType dataType, Object data);
+
+ TraCIWriter writeUnsignedByteWithId(int val);
+ TraCIWriter writeByteWithId(byte val);
+ TraCIWriter writeIntWithId(int val);
+ TraCIWriter writeDoubleWithId(double val);
+ TraCIWriter writeStringWithId(String val);
+ TraCIWriter writeStringListWithId(List val);
+
+ TraCIWriter writeByte(int val);
+
+ default TraCIWriter writeUnsignedByte(int val){
+ if (val>= 0 && val<=255){
+ writeByte(val);
+ } else {
+ throw new IllegalArgumentException(
+ "unsignedByte must be within (including) 0..255 but was: " + val);
+ }
+ return this;
+ }
+
+ TraCIWriter writeBytes(byte[] buf);
+ TraCIWriter writeBytes(byte[] buf, int offset, int len);
+
+ default TraCIWriter writeBytes(ByteBuffer buf, int offset, int len){
+ writeBytes(buf.array(), offset, len);
+ return this;
+ }
+ default TraCIWriter writeBytes(ByteBuffer buf){
+ writeBytes(buf, 0, buf.array().length);
+ return this;
+ }
+
+ default TraCIWriter writeInt(int val){
+ writeBytes(ByteBuffer.allocate(4).putInt(val).array());
+ return this;
+ }
+
+ default TraCIWriter writeDouble(double val){
+ writeBytes(ByteBuffer.allocate(8).putDouble(val).array());
+ return this;
+ }
+
+ TraCIWriter writeString(String val);
+
+ TraCIWriter writeStringList(List val);
+
+ TraCIWriter write2DPosition(VPoint val);
+
+ TraCIWriter write3DPosition(Vector3D val);
+
+ TraCIWriter writeRoadMapPosition(RoadMapPosition val);
+
+ TraCIWriter writeLonLatPosition(VPoint lonLat);
+
+ TraCIWriter writeLonLatAltPosition(Vector3D lonLatAlt);
+
+ TraCIWriter writePolygon(VPoint... points);
+
+ TraCIWriter writePolygon(List points);
+
+ TraCIWriter writeTrafficLightPhaseList(List phases);
+
+ TraCIWriter writeColor(Color color);
+
+ TraCIWriter writeCommandLength(int cmdLen);
+
+ int stringByteCount(String str);
+
+ int size();
+ int getStringByteCount(String val);
+
+}
diff --git a/VadereManager/testResources/getVersionTest b/VadereManager/testResources/getVersionTest
new file mode 100644
index 0000000000000000000000000000000000000000..125694dde59bdaee4d0c84cfb1ffca8d0f42e6ae
--- /dev/null
+++ b/VadereManager/testResources/getVersionTest
@@ -0,0 +1 @@
+00 00 00 06 02 00
diff --git a/VadereManager/testResources/test004/vadere.project b/VadereManager/testResources/test004/vadere.project
new file mode 100644
index 0000000000000000000000000000000000000000..7c4a013e52c76442ab80ee5572399a30373600a2
--- /dev/null
+++ b/VadereManager/testResources/test004/vadere.project
@@ -0,0 +1 @@
+aaa
\ No newline at end of file
diff --git a/VadereManager/testResources/test005/scenarios/mf_small_simple.scenario b/VadereManager/testResources/test005/scenarios/mf_small_simple.scenario
new file mode 100644
index 0000000000000000000000000000000000000000..d430b02e60a97ebf91f5cfa0fe59390f28b27f7e
--- /dev/null
+++ b/VadereManager/testResources/test005/scenarios/mf_small_simple.scenario
@@ -0,0 +1,1978 @@
+{
+ "name" : "mf_small_simple",
+ "description" : "",
+ "release" : "1.2",
+ "processWriters" : {
+ "files" : [ {
+ "type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
+ "filename" : "postvis.trajectories",
+ "processors" : [ 1, 2 ]
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOverlapOutputFile",
+ "filename" : "overlaps.csv",
+ "processors" : [ 3 ]
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.outputfile.NoDataKeyOutputFile",
+ "filename" : "overlapCount.txt",
+ "processors" : [ 4 ]
+ } ],
+ "processors" : [ {
+ "type" : "org.vadere.simulator.projects.dataprocessing.processor.PedestrianPositionProcessor",
+ "id" : 1
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.processor.PedestrianTargetIdProcessor",
+ "id" : 2
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.processor.PedestrianOverlapProcessor",
+ "id" : 3
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.processor.NumberOverlapsProcessor",
+ "id" : 4,
+ "attributesType" : "org.vadere.state.attributes.processor.AttributesNumberOverlapsProcessor",
+ "attributes" : {
+ "pedestrianOverlapProcessorId" : 3
+ }
+ } ],
+ "isTimestamped" : true,
+ "isWriteMetaData" : false
+ },
+ "scenario" : {
+ "mainModel" : "org.vadere.simulator.models.osm.OptimalStepsModel",
+ "attributesModel" : {
+ "org.vadere.state.attributes.models.AttributesOSM" : {
+ "stepCircleResolution" : 4,
+ "numberOfCircles" : 1,
+ "optimizationType" : "DISCRETE",
+ "varyStepDirection" : true,
+ "movementType" : "ARBITRARY",
+ "stepLengthIntercept" : 0.4625,
+ "stepLengthSlopeSpeed" : 0.2345,
+ "stepLengthSD" : 0.036,
+ "movementThreshold" : 0.0,
+ "minStepLength" : 0.1,
+ "minimumStepLength" : true,
+ "maxStepDuration" : 1.7976931348623157E308,
+ "dynamicStepLength" : true,
+ "updateType" : "EVENT_DRIVEN",
+ "seeSmallWalls" : false,
+ "targetPotentialModel" : "org.vadere.simulator.models.potential.fields.PotentialFieldTargetGrid",
+ "pedestrianPotentialModel" : "org.vadere.simulator.models.potential.PotentialFieldPedestrianCompactSoftshell",
+ "obstaclePotentialModel" : "org.vadere.simulator.models.potential.PotentialFieldObstacleCompactSoftshell",
+ "submodels" : [ ]
+ },
+ "org.vadere.state.attributes.models.AttributesPotentialCompactSoftshell" : {
+ "pedPotentialIntimateSpaceWidth" : 0.45,
+ "pedPotentialPersonalSpaceWidth" : 1.2,
+ "pedPotentialHeight" : 50.0,
+ "obstPotentialWidth" : 0.8,
+ "obstPotentialHeight" : 6.0,
+ "intimateSpaceFactor" : 1.2,
+ "personalSpacePower" : 1,
+ "intimateSpacePower" : 1
+ },
+ "org.vadere.state.attributes.models.AttributesFloorField" : {
+ "createMethod" : "HIGH_ACCURACY_FAST_MARCHING",
+ "potentialFieldResolution" : 0.3,
+ "obstacleGridPenalty" : 0.1,
+ "targetAttractionStrength" : 1.0,
+ "cacheType" : "TXT_CACHE",
+ "cacheDir" : "mf-small",
+ "timeCostAttributes" : {
+ "standardDeviation" : 0.7,
+ "type" : "UNIT",
+ "obstacleDensityWeight" : 3.5,
+ "pedestrianSameTargetDensityWeight" : 3.5,
+ "pedestrianOtherTargetDensityWeight" : 3.5,
+ "pedestrianWeight" : 3.5,
+ "queueWidthLoading" : 1.0,
+ "pedestrianDynamicWeight" : 6.0,
+ "loadingType" : "CONSTANT",
+ "width" : 0.2,
+ "height" : 1.0
+ }
+ }
+ },
+ "attributesSimulation" : {
+ "finishTime" : 500.0,
+ "simTimeStepLength" : 0.4,
+ "realTimeSimTimeRatio" : 0.1,
+ "writeSimulationData" : true,
+ "visualizationEnabled" : true,
+ "printFPS" : false,
+ "digitsPerCoordinate" : 2,
+ "useFixedSeed" : true,
+ "fixedSeed" : -7492697142818052001,
+ "simulationSeed" : 0,
+ "useSalientBehavior" : false
+ },
+ "topography" : {
+ "attributes" : {
+ "bounds" : {
+ "x" : 0.0,
+ "y" : 0.0,
+ "width" : 416.0,
+ "height" : 394.0
+ },
+ "boundingBoxWidth" : 0.5,
+ "bounded" : true
+ },
+ "obstacles" : [ {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 132.49563939182553,
+ "y" : 9.706123710609972
+ }, {
+ "x" : 137.54908174742013,
+ "y" : 40.92949869018048
+ }, {
+ "x" : 91.29751981049776,
+ "y" : 46.538723167963326
+ }, {
+ "x" : 86.02559399825986,
+ "y" : 25.343919068574905
+ }, {
+ "x" : 97.37899205833673,
+ "y" : 23.088923882693052
+ }, {
+ "x" : 109.36867269373033,
+ "y" : 16.082200379110873
+ } ]
+ },
+ "id" : 1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 147.48832788609434,
+ "y" : 266.0697437087074
+ }, {
+ "x" : 149.67207587813027,
+ "y" : 265.9874638039619
+ }, {
+ "x" : 149.44200104125775,
+ "y" : 260.21632443834096
+ }, {
+ "x" : 149.12462083762512,
+ "y" : 259.693836491555
+ }, {
+ "x" : 148.62762896576896,
+ "y" : 259.42120799049735
+ }, {
+ "x" : 147.89042185922153,
+ "y" : 259.42977830581367
+ }, {
+ "x" : 147.4237846584292,
+ "y" : 259.8034938145429
+ }, {
+ "x" : 147.25787687243428,
+ "y" : 260.30971815250814
+ } ]
+ },
+ "id" : 2
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 10.384619708871469,
+ "y" : 61.08531735651195
+ }, {
+ "x" : 0.0,
+ "y" : 64.41891782451421
+ }, {
+ "x" : 2.9493999496335164,
+ "y" : 74.55394606105983
+ }, {
+ "x" : 19.19943108758889,
+ "y" : 73.66508542746305
+ }, {
+ "x" : 31.100576703669503,
+ "y" : 101.38019937369972
+ }, {
+ "x" : 31.949724983191118,
+ "y" : 103.35584659036249
+ }, {
+ "x" : 41.280593269038945,
+ "y" : 100.58768412098289
+ }, {
+ "x" : 28.859270189888775,
+ "y" : 60.894355457276106
+ }, {
+ "x" : 11.654857782414183,
+ "y" : 66.03469680808485
+ } ]
+ },
+ "id" : 3
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 192.229625736014,
+ "y" : 120.62000664323568
+ }, {
+ "x" : 191.81950455647893,
+ "y" : 119.09303265996277
+ }, {
+ "x" : 192.49859879072756,
+ "y" : 117.93650711234659
+ }, {
+ "x" : 194.7720954598626,
+ "y" : 117.4010854549706
+ }, {
+ "x" : 195.87239499611314,
+ "y" : 118.10569510050118
+ }, {
+ "x" : 196.33082218794152,
+ "y" : 119.74555786699057
+ }, {
+ "x" : 195.59116808278486,
+ "y" : 120.71089836303145
+ }, {
+ "x" : 193.49836623796728,
+ "y" : 121.18564400728792
+ } ]
+ },
+ "id" : 4
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 398.2570426602615,
+ "y" : 113.85065295547247
+ }, {
+ "x" : 390.71402013581246,
+ "y" : 98.89869510382414
+ }, {
+ "x" : 386.1479702384677,
+ "y" : 89.26527027506381
+ }, {
+ "x" : 391.3245302303694,
+ "y" : 75.47620683908463
+ }, {
+ "x" : 408.15509718388785,
+ "y" : 68.18814485613257
+ }, {
+ "x" : 413.7977612769464,
+ "y" : 80.99547578953207
+ }, {
+ "x" : 402.5217649335973,
+ "y" : 85.81149602681398
+ }, {
+ "x" : 405.37487236689776,
+ "y" : 91.49302094988525
+ }, {
+ "x" : 413.1251486123074,
+ "y" : 107.14181248936802
+ } ]
+ },
+ "id" : 5
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 5.087338114157319,
+ "y" : 252.2672161431983
+ }, {
+ "x" : 7.846879991237074,
+ "y" : 248.34344168007374
+ }, {
+ "x" : 5.691728836623952,
+ "y" : 246.46852079685777
+ }, {
+ "x" : 4.200591969653033,
+ "y" : 244.32664728164673
+ }, {
+ "x" : 3.428918853867799,
+ "y" : 241.59702445194125
+ }, {
+ "x" : 3.5156201337231323,
+ "y" : 239.01865428686142
+ }, {
+ "x" : 3.983799320529215,
+ "y" : 236.16382985468954
+ }, {
+ "x" : 5.482151748845354,
+ "y" : 233.22125810477883
+ }, {
+ "x" : 7.4435759774642065,
+ "y" : 231.11759947706014
+ }, {
+ "x" : 9.459507467690855,
+ "y" : 229.8279892820865
+ }, {
+ "x" : 12.19882175035309,
+ "y" : 228.9409973444417
+ }, {
+ "x" : 15.008299414766952,
+ "y" : 228.62380398344249
+ }, {
+ "x" : 17.98526613228023,
+ "y" : 229.30247913487256
+ }, {
+ "x" : 20.479156968649477,
+ "y" : 230.84388276934624
+ }, {
+ "x" : 22.542557765729725,
+ "y" : 228.14284174889326
+ }, {
+ "x" : 21.80659459764138,
+ "y" : 223.24480162654072
+ }, {
+ "x" : 24.574454374960624,
+ "y" : 222.8372033080086
+ }, {
+ "x" : 38.09767436166294,
+ "y" : 208.9502873402089
+ }, {
+ "x" : 49.023094923002645,
+ "y" : 194.84251022245735
+ }, {
+ "x" : 51.10593294072896,
+ "y" : 195.76928466465324
+ }, {
+ "x" : 55.99496726808138,
+ "y" : 190.0590730123222
+ }, {
+ "x" : 60.37294866563752,
+ "y" : 193.788976511918
+ }, {
+ "x" : 61.68001871742308,
+ "y" : 192.10837434791028
+ }, {
+ "x" : 66.3333916827105,
+ "y" : 196.2814691029489
+ }, {
+ "x" : 49.21670819027349,
+ "y" : 217.63555298466235
+ }, {
+ "x" : 34.685886699706316,
+ "y" : 236.25058425217867
+ }, {
+ "x" : 16.642093724338338,
+ "y" : 260.6110338792205
+ } ]
+ },
+ "id" : 6
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 41.74883003497962,
+ "y" : 190.24749543890357
+ }, {
+ "x" : 37.50345266284421,
+ "y" : 191.20621130801737
+ }, {
+ "x" : 38.07997281313874,
+ "y" : 193.76238214224577
+ }, {
+ "x" : 32.889904009061866,
+ "y" : 194.92298040352762
+ }, {
+ "x" : 33.350157593144104,
+ "y" : 196.95230752788484
+ }, {
+ "x" : 25.804858991294168,
+ "y" : 198.6456461492926
+ }, {
+ "x" : 21.47831108281389,
+ "y" : 179.44091100711375
+ }, {
+ "x" : 38.4877230291022,
+ "y" : 175.6625866079703
+ }, {
+ "x" : 51.048396613565274,
+ "y" : 172.91406178940088
+ }, {
+ "x" : 62.713481448590755,
+ "y" : 170.23557582311332
+ }, {
+ "x" : 77.38477420189884,
+ "y" : 167.14642967190593
+ }, {
+ "x" : 82.72628087643534,
+ "y" : 169.45122427958995
+ }, {
+ "x" : 84.18529482756276,
+ "y" : 176.30956331081688
+ }, {
+ "x" : 80.6027994803153,
+ "y" : 181.01783756539226
+ }, {
+ "x" : 65.72854327911045,
+ "y" : 184.16690391860902
+ }, {
+ "x" : 53.97243263828568,
+ "y" : 186.67542703077197
+ }, {
+ "x" : 53.56763716065325,
+ "y" : 184.32530236896127
+ }, {
+ "x" : 41.006986524909735,
+ "y" : 187.07382106035948
+ } ]
+ },
+ "id" : 7
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 338.03569119493477,
+ "y" : 99.72761433850974
+ }, {
+ "x" : 203.25108998350333,
+ "y" : 135.29933942947537
+ }, {
+ "x" : 210.75398529251106,
+ "y" : 166.27147937752306
+ }, {
+ "x" : 214.68945491674822,
+ "y" : 182.48139366973191
+ }, {
+ "x" : 320.30626190430485,
+ "y" : 191.83450482599437
+ }, {
+ "x" : 323.9962762054056,
+ "y" : 177.97307213861495
+ }, {
+ "x" : 327.8846443553921,
+ "y" : 163.3061045994982
+ }, {
+ "x" : 331.86717111011967,
+ "y" : 148.27514360379428
+ }, {
+ "x" : 341.47734665311873,
+ "y" : 108.71117755398154
+ } ]
+ },
+ "id" : 8
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 373.60014810448047,
+ "y" : 100.45835386309773
+ }, {
+ "x" : 351.6492524778005,
+ "y" : 109.48774266242981
+ }, {
+ "x" : 349.07094563147984,
+ "y" : 119.29214380308986
+ }, {
+ "x" : 339.7766800012905,
+ "y" : 155.88490118738264
+ }, {
+ "x" : 330.6280033283401,
+ "y" : 191.91513324249536
+ }, {
+ "x" : 349.1672116734553,
+ "y" : 195.54371430631727
+ }, {
+ "x" : 374.9429138553096,
+ "y" : 197.36892197839916
+ }, {
+ "x" : 390.5927082701819,
+ "y" : 196.39415188878775
+ }, {
+ "x" : 414.13796314341016,
+ "y" : 191.51312353368849
+ }, {
+ "x" : 415.2447087839246,
+ "y" : 190.03724455274642
+ } ]
+ },
+ "id" : 9
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 324.2578210707288,
+ "y" : 207.7780264718458
+ }, {
+ "x" : 320.44795189681463,
+ "y" : 222.325250367634
+ }, {
+ "x" : 307.32107540150173,
+ "y" : 275.25583338271827
+ }, {
+ "x" : 309.9967050399864,
+ "y" : 278.24990486819297
+ }, {
+ "x" : 323.78818380460143,
+ "y" : 274.0970222344622
+ }, {
+ "x" : 371.99886162544135,
+ "y" : 259.5657437760383
+ }, {
+ "x" : 400.9509751783917,
+ "y" : 250.83912970870733
+ }, {
+ "x" : 403.44669234380126,
+ "y" : 229.34937280602753
+ }, {
+ "x" : 401.9039858386386,
+ "y" : 222.77739096339792
+ }, {
+ "x" : 398.72115259221755,
+ "y" : 209.65239937789738
+ } ]
+ },
+ "id" : 10
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 402.47574361914303,
+ "y" : 259.26859607733786
+ }, {
+ "x" : 385.35885682550725,
+ "y" : 264.46638219989836
+ }, {
+ "x" : 306.8875765139237,
+ "y" : 288.34797645080835
+ }, {
+ "x" : 302.5591517527355,
+ "y" : 290.0046521956101
+ }, {
+ "x" : 297.9911242470844,
+ "y" : 294.1344191096723
+ }, {
+ "x" : 295.2179503674852,
+ "y" : 304.8668809533119
+ }, {
+ "x" : 289.74562628986314,
+ "y" : 327.8919776920229
+ }, {
+ "x" : 292.22550660697743,
+ "y" : 338.24503855314106
+ }, {
+ "x" : 307.9627013136633,
+ "y" : 335.3259130381048
+ }, {
+ "x" : 345.46696896187495,
+ "y" : 328.3668885510415
+ }, {
+ "x" : 373.27785574435256,
+ "y" : 322.3499027583748
+ }, {
+ "x" : 392.51854601397645,
+ "y" : 318.1805127309635
+ }, {
+ "x" : 405.37718827079516,
+ "y" : 269.0351012656465
+ } ]
+ },
+ "id" : 11
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 394.93131833150983,
+ "y" : 331.62447317223996
+ }, {
+ "x" : 273.723095261259,
+ "y" : 356.52547006402165
+ }, {
+ "x" : 274.41165184625424,
+ "y" : 379.402006813325
+ }, {
+ "x" : 349.21245901077054,
+ "y" : 390.85583183914423
+ }, {
+ "x" : 355.873663465376,
+ "y" : 388.8883651131764
+ }, {
+ "x" : 398.5138815200189,
+ "y" : 348.56812652014196
+ } ]
+ },
+ "id" : 12
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 383.8831806560047,
+ "y" : 11.10479134041816
+ }, {
+ "x" : 338.00738965556957,
+ "y" : 16.1461473274976
+ }, {
+ "x" : 323.51135834795423,
+ "y" : 22.634070438332856
+ }, {
+ "x" : 348.98994402075186,
+ "y" : 79.26822689548135
+ }, {
+ "x" : 397.99125810340047,
+ "y" : 58.33271599095315
+ } ]
+ },
+ "id" : 13
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 245.454217336257,
+ "y" : 198.62656102329493
+ }, {
+ "x" : 221.20493738504592,
+ "y" : 200.54724023025483
+ }, {
+ "x" : 240.4165817425819,
+ "y" : 273.30329787544906
+ }, {
+ "x" : 242.98562469799072,
+ "y" : 282.780356916599
+ }, {
+ "x" : 244.98278176831082,
+ "y" : 289.34533510077745
+ }, {
+ "x" : 265.94549771468155,
+ "y" : 283.33090760651976
+ }, {
+ "x" : 293.9075710645411,
+ "y" : 275.0377352302894
+ }, {
+ "x" : 298.4178367025452,
+ "y" : 258.4779797429219
+ }, {
+ "x" : 307.29833707376383,
+ "y" : 225.09785598982126
+ }, {
+ "x" : 308.3878437280655,
+ "y" : 220.81755857355893
+ }, {
+ "x" : 312.22271020920016,
+ "y" : 205.7482358692214
+ }, {
+ "x" : 280.2954425984062,
+ "y" : 200.47841310407966
+ }, {
+ "x" : 264.80746851093136,
+ "y" : 199.52296201791614
+ } ]
+ },
+ "id" : 14
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 279.58093583746813,
+ "y" : 295.08322514779866
+ }, {
+ "x" : 249.2923338660039,
+ "y" : 304.16597416158766
+ }, {
+ "x" : 259.52564410783816,
+ "y" : 340.0255707418546
+ }, {
+ "x" : 273.80563075933605,
+ "y" : 336.6122348792851
+ }, {
+ "x" : 279.42014936893247,
+ "y" : 315.7726633278653
+ }, {
+ "x" : 283.5895808194764,
+ "y" : 300.2695431280881
+ } ]
+ },
+ "id" : 15
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 143.16444930480793,
+ "y" : 313.8227388774976
+ }, {
+ "x" : 6.739023174857721,
+ "y" : 317.8117614351213
+ }, {
+ "x" : 0.4697507165838033,
+ "y" : 340.6656234366819
+ }, {
+ "x" : 41.346187320770696,
+ "y" : 373.5164463762194
+ }, {
+ "x" : 123.55259956466034,
+ "y" : 392.9602503068745
+ }, {
+ "x" : 138.0014330423437,
+ "y" : 393.5910988114774
+ }, {
+ "x" : 146.9120532188099,
+ "y" : 393.3457755940035
+ }, {
+ "x" : 146.17653927661013,
+ "y" : 355.70316960662603
+ } ]
+ },
+ "id" : 16
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 140.11391512711998,
+ "y" : 154.51461593899876
+ }, {
+ "x" : 113.04620617919136,
+ "y" : 159.890195437707
+ }, {
+ "x" : 44.90581537678372,
+ "y" : 251.7482415549457
+ }, {
+ "x" : 14.169676488032565,
+ "y" : 295.17497979011387
+ }, {
+ "x" : 14.203284389455803,
+ "y" : 300.5945857455954
+ }, {
+ "x" : 33.32364832912572,
+ "y" : 300.436525718309
+ }, {
+ "x" : 49.417912491364405,
+ "y" : 300.17674558609724
+ }, {
+ "x" : 145.05923254950903,
+ "y" : 297.5531679727137
+ }, {
+ "x" : 144.68991099356208,
+ "y" : 278.0030469596386
+ }, {
+ "x" : 142.80199658451602,
+ "y" : 224.61141097079962
+ } ]
+ },
+ "id" : 17
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 137.2231975501636,
+ "y" : 51.4995901864022
+ }, {
+ "x" : 121.13527868466917,
+ "y" : 51.77050573565066
+ }, {
+ "x" : 104.6069155826699,
+ "y" : 55.39789929706603
+ }, {
+ "x" : 97.21966983948369,
+ "y" : 57.69729004986584
+ }, {
+ "x" : 44.79267056565732,
+ "y" : 74.06960068270564
+ }, {
+ "x" : 49.7183491056785,
+ "y" : 90.29041692242026
+ }, {
+ "x" : 76.56449194485322,
+ "y" : 90.1809058105573
+ }, {
+ "x" : 137.73858611402102,
+ "y" : 81.31301099155098
+ } ]
+ },
+ "id" : 18
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 137.46003352757543,
+ "y" : 89.37016474828124
+ }, {
+ "x" : 119.58136252115946,
+ "y" : 89.76996902283281
+ }, {
+ "x" : 83.71383533114567,
+ "y" : 93.40322850365192
+ }, {
+ "x" : 26.302181491046213,
+ "y" : 107.27150216139853
+ }, {
+ "x" : 13.461438397294842,
+ "y" : 137.603720869869
+ }, {
+ "x" : 18.03574552037753,
+ "y" : 160.51068524550647
+ }, {
+ "x" : 98.80507549608592,
+ "y" : 143.1111324876547
+ }, {
+ "x" : 138.10882872948423,
+ "y" : 134.464410639368
+ }, {
+ "x" : 138.14997701102402,
+ "y" : 119.96829866990447
+ } ]
+ },
+ "id" : 19
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 185.93127037596423,
+ "y" : 4.973188903182745
+ }, {
+ "x" : 169.75496158958413,
+ "y" : 9.635868145152926
+ }, {
+ "x" : 172.55675540678203,
+ "y" : 20.389101441949606
+ }, {
+ "x" : 181.55402404651977,
+ "y" : 35.72345955949277
+ }, {
+ "x" : 244.81837488571182,
+ "y" : 31.789185896515846
+ }, {
+ "x" : 272.04072085686494,
+ "y" : 23.170525611378253
+ }, {
+ "x" : 291.89023351855576,
+ "y" : 15.316198794171214
+ }, {
+ "x" : 288.335027924506,
+ "y" : 6.384482720866799
+ } ]
+ },
+ "id" : 20
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 60.273445224855095,
+ "y" : 0.0
+ }, {
+ "x" : 51.26553867990151,
+ "y" : 2.4563426533713937
+ }, {
+ "x" : 41.38614885136485,
+ "y" : 5.150420036166906
+ }, {
+ "x" : 29.538105807616375,
+ "y" : 8.3902533557266
+ }, {
+ "x" : 29.798538877279498,
+ "y" : 43.14622634649277
+ }, {
+ "x" : 34.33702121011447,
+ "y" : 58.708681798540056
+ }, {
+ "x" : 47.0932943855878,
+ "y" : 55.02098180167377
+ }, {
+ "x" : 64.66521250014193,
+ "y" : 14.611816671676934
+ } ]
+ },
+ "id" : 21
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 141.6306351003277,
+ "y" : 116.83901793050784
+ }, {
+ "x" : 141.87407785240606,
+ "y" : 128.5904625324498
+ }, {
+ "x" : 146.64992685380682,
+ "y" : 128.49019010291423
+ }, {
+ "x" : 146.39773279475918,
+ "y" : 116.77177871782462
+ }, {
+ "x" : 145.89784854486646,
+ "y" : 116.78253681752702
+ }, {
+ "x" : 146.13927885240602,
+ "y" : 128.0008013367562
+ }, {
+ "x" : 142.36361193208882,
+ "y" : 128.08007421475259
+ }, {
+ "x" : 142.13052784683714,
+ "y" : 116.82866215978545
+ }, {
+ "x" : 141.6306351003277,
+ "y" : 116.83901793050784
+ }, {
+ "x" : 141.6306351003277,
+ "y" : 116.83901793050784
+ }, {
+ "x" : 141.87407785240606,
+ "y" : 128.5904625324498
+ }, {
+ "x" : 146.64992685380682,
+ "y" : 128.49019010291423
+ }, {
+ "x" : 146.39773279475918,
+ "y" : 116.77177871782462
+ }, {
+ "x" : 145.89784854486646,
+ "y" : 116.78253681752702
+ }, {
+ "x" : 146.13927885240602,
+ "y" : 128.0008013367562
+ }, {
+ "x" : 142.36361193208882,
+ "y" : 128.08007421475259
+ }, {
+ "x" : 142.13052784683714,
+ "y" : 116.82866215978545
+ }, {
+ "x" : 141.6306351003277,
+ "y" : 116.83901793050784
+ } ]
+ },
+ "id" : 22
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 143.92115343943564,
+ "y" : 168.69565355275918
+ }, {
+ "x" : 143.8295708812843,
+ "y" : 158.46319241869656
+ }, {
+ "x" : 147.9524496438901,
+ "y" : 158.453088570111
+ }, {
+ "x" : 148.04042161765545,
+ "y" : 168.57734735060853
+ }, {
+ "x" : 148.54040274306163,
+ "y" : 168.57300290155786
+ }, {
+ "x" : 148.44811333818495,
+ "y" : 157.95187235651085
+ }, {
+ "x" : 143.3250868078719,
+ "y" : 157.96442724530158
+ }, {
+ "x" : 143.42117346474575,
+ "y" : 168.70012847277175
+ }, {
+ "x" : 143.92115343943564,
+ "y" : 168.69565355275918
+ }, {
+ "x" : 143.92115343943564,
+ "y" : 168.69565355275918
+ }, {
+ "x" : 143.8295708812843,
+ "y" : 158.46319241869656
+ }, {
+ "x" : 147.9524496438901,
+ "y" : 158.453088570111
+ }, {
+ "x" : 148.04042161765545,
+ "y" : 168.57734735060853
+ }, {
+ "x" : 148.54040274306163,
+ "y" : 168.57300290155786
+ }, {
+ "x" : 148.44811333818495,
+ "y" : 157.95187235651085
+ }, {
+ "x" : 143.3250868078719,
+ "y" : 157.96442724530158
+ }, {
+ "x" : 143.42117346474575,
+ "y" : 168.70012847277175
+ }, {
+ "x" : 143.92115343943564,
+ "y" : 168.69565355275918
+ } ]
+ },
+ "id" : 258139209
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 188.7041750979025,
+ "y" : 158.69070027838583
+ }, {
+ "x" : 186.33297799111978,
+ "y" : 148.07219112430533
+ }, {
+ "x" : 189.2497066635849,
+ "y" : 147.42692357318728
+ }, {
+ "x" : 191.67341151847072,
+ "y" : 158.25968440859606
+ }, {
+ "x" : 192.1613478736064,
+ "y" : 158.15051429667483
+ }, {
+ "x" : 189.62873353653288,
+ "y" : 146.83098199201368
+ }, {
+ "x" : 185.73581088284294,
+ "y" : 147.6922128261164
+ }, {
+ "x" : 188.21619402101524,
+ "y" : 158.79967031371658
+ }, {
+ "x" : 188.7041750979025,
+ "y" : 158.69070027838583
+ }, {
+ "x" : 188.7041750979025,
+ "y" : 158.69070027838583
+ }, {
+ "x" : 186.33297799111978,
+ "y" : 148.07219112430533
+ }, {
+ "x" : 189.2497066635849,
+ "y" : 147.42692357318728
+ }, {
+ "x" : 191.67341151847072,
+ "y" : 158.25968440859606
+ }, {
+ "x" : 192.1613478736064,
+ "y" : 158.15051429667483
+ }, {
+ "x" : 189.62873353653288,
+ "y" : 146.83098199201368
+ }, {
+ "x" : 185.73581088284294,
+ "y" : 147.6922128261164
+ }, {
+ "x" : 188.21619402101524,
+ "y" : 158.79967031371658
+ }, {
+ "x" : 188.7041750979025,
+ "y" : 158.69070027838583
+ } ]
+ },
+ "id" : 24
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 188.261242747794,
+ "y" : 294.0484465407503
+ }, {
+ "x" : 181.6824518049997,
+ "y" : 295.6227589882707
+ }, {
+ "x" : 182.08438824431738,
+ "y" : 221.3026442560818
+ }, {
+ "x" : 188.84126911950128,
+ "y" : 219.60664249463255
+ }, {
+ "x" : 190.02978186829608,
+ "y" : 224.72626733047719
+ }, {
+ "x" : 195.81308696624853,
+ "y" : 223.40219032999948
+ }, {
+ "x" : 194.56729329889654,
+ "y" : 218.02247281869427
+ }, {
+ "x" : 194.39055891388224,
+ "y" : 217.25059867861336
+ }, {
+ "x" : 212.00589001654996,
+ "y" : 213.55386180363712
+ }, {
+ "x" : 211.903197453717,
+ "y" : 213.0645211885858
+ }, {
+ "x" : 193.7895223977315,
+ "y" : 216.86584005852532
+ }, {
+ "x" : 194.08004405776148,
+ "y" : 218.13467156797256
+ }, {
+ "x" : 195.21289463065494,
+ "y" : 223.0266663054666
+ }, {
+ "x" : 190.40410551607104,
+ "y" : 224.127629674842
+ }, {
+ "x" : 189.21321723391563,
+ "y" : 218.99777201683918
+ }, {
+ "x" : 181.5864930240181,
+ "y" : 220.912107630122
+ }, {
+ "x" : 181.1790125138196,
+ "y" : 296.2573495805463
+ }, {
+ "x" : 188.37760789108174,
+ "y" : 294.53471719936306
+ }, {
+ "x" : 188.261242747794,
+ "y" : 294.0484465407503
+ }, {
+ "x" : 188.261242747794,
+ "y" : 294.0484465407503
+ }, {
+ "x" : 181.6824518049997,
+ "y" : 295.6227589882707
+ }, {
+ "x" : 182.08438824431738,
+ "y" : 221.3026442560818
+ }, {
+ "x" : 188.84126911950128,
+ "y" : 219.60664249463255
+ }, {
+ "x" : 190.02978186829608,
+ "y" : 224.72626733047719
+ }, {
+ "x" : 195.81308696624853,
+ "y" : 223.40219032999948
+ }, {
+ "x" : 194.56729329889654,
+ "y" : 218.02247281869427
+ }, {
+ "x" : 194.39055891388224,
+ "y" : 217.25059867861336
+ }, {
+ "x" : 212.00589001654996,
+ "y" : 213.55386180363712
+ }, {
+ "x" : 211.903197453717,
+ "y" : 213.0645211885858
+ }, {
+ "x" : 193.7895223977315,
+ "y" : 216.86584005852532
+ }, {
+ "x" : 194.08004405776148,
+ "y" : 218.13467156797256
+ }, {
+ "x" : 195.21289463065494,
+ "y" : 223.0266663054666
+ }, {
+ "x" : 190.40410551607104,
+ "y" : 224.127629674842
+ }, {
+ "x" : 189.21321723391563,
+ "y" : 218.99777201683918
+ }, {
+ "x" : 181.5864930240181,
+ "y" : 220.912107630122
+ }, {
+ "x" : 181.1790125138196,
+ "y" : 296.2573495805463
+ }, {
+ "x" : 188.37760789108174,
+ "y" : 294.53471719936306
+ }, {
+ "x" : 188.261242747794,
+ "y" : 294.0484465407503
+ } ]
+ },
+ "id" : 25
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 223.62854100579008,
+ "y" : 236.65078827364152
+ }, {
+ "x" : 213.7328236597783,
+ "y" : 239.4160865812076
+ }, {
+ "x" : 214.1884810493256,
+ "y" : 246.799697115433
+ }, {
+ "x" : 210.69399859554673,
+ "y" : 247.264218837464
+ }, {
+ "x" : 208.72271608763106,
+ "y" : 240.24130564141169
+ }, {
+ "x" : 202.7253132101539,
+ "y" : 241.4333823126283
+ }, {
+ "x" : 204.2249019352705,
+ "y" : 260.8671731021297
+ }, {
+ "x" : 205.56309977290982,
+ "y" : 273.75519545602515
+ }, {
+ "x" : 206.0604260668548,
+ "y" : 273.7035567365317
+ }, {
+ "x" : 204.72291120518753,
+ "y" : 260.82211204204134
+ }, {
+ "x" : 203.25796673098375,
+ "y" : 241.837290435237
+ }, {
+ "x" : 208.36636589824403,
+ "y" : 240.82191701461485
+ }, {
+ "x" : 210.32984346818475,
+ "y" : 247.81702425100463
+ }, {
+ "x" : 214.71623033593156,
+ "y" : 247.23394163197565
+ }, {
+ "x" : 214.25677735580024,
+ "y" : 239.78882619678214
+ }, {
+ "x" : 223.7631076490359,
+ "y" : 237.13233974391812
+ }, {
+ "x" : 223.62854100579008,
+ "y" : 236.65078827364152
+ }, {
+ "x" : 223.62854100579008,
+ "y" : 236.65078827364152
+ }, {
+ "x" : 213.7328236597783,
+ "y" : 239.4160865812076
+ }, {
+ "x" : 214.1884810493256,
+ "y" : 246.799697115433
+ }, {
+ "x" : 210.69399859554673,
+ "y" : 247.264218837464
+ }, {
+ "x" : 208.72271608763106,
+ "y" : 240.24130564141169
+ }, {
+ "x" : 202.7253132101539,
+ "y" : 241.4333823126283
+ }, {
+ "x" : 204.2249019352705,
+ "y" : 260.8671731021297
+ }, {
+ "x" : 205.56309977290982,
+ "y" : 273.75519545602515
+ }, {
+ "x" : 206.0604260668548,
+ "y" : 273.7035567365317
+ }, {
+ "x" : 204.72291120518753,
+ "y" : 260.82211204204134
+ }, {
+ "x" : 203.25796673098375,
+ "y" : 241.837290435237
+ }, {
+ "x" : 208.36636589824403,
+ "y" : 240.82191701461485
+ }, {
+ "x" : 210.32984346818475,
+ "y" : 247.81702425100463
+ }, {
+ "x" : 214.71623033593156,
+ "y" : 247.23394163197565
+ }, {
+ "x" : 214.25677735580024,
+ "y" : 239.78882619678214
+ }, {
+ "x" : 223.7631076490359,
+ "y" : 237.13233974391812
+ }, {
+ "x" : 223.62854100579008,
+ "y" : 236.65078827364152
+ } ]
+ },
+ "id" : 26
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 191.14101024044038,
+ "y" : 290.68055406282355
+ }, {
+ "x" : 189.2625605540796,
+ "y" : 281.1477805084606
+ }, {
+ "x" : 186.81866768929717,
+ "y" : 278.874414297216
+ }, {
+ "x" : 186.27408206257633,
+ "y" : 277.1792667869229
+ }, {
+ "x" : 191.4552172729711,
+ "y" : 275.9238098876115
+ }, {
+ "x" : 187.87847354488625,
+ "y" : 260.82178336901484
+ }, {
+ "x" : 191.8301939067407,
+ "y" : 259.9572612753003
+ }, {
+ "x" : 190.40267412892808,
+ "y" : 251.61978285597948
+ }, {
+ "x" : 189.90984566470343,
+ "y" : 251.70416356971177
+ }, {
+ "x" : 191.2567638853128,
+ "y" : 259.57088581865395
+ }, {
+ "x" : 187.27470502311246,
+ "y" : 260.44204509856525
+ }, {
+ "x" : 190.85404019407338,
+ "y" : 275.55501342401516
+ }, {
+ "x" : 185.63350065257745,
+ "y" : 276.8200185086826
+ }, {
+ "x" : 186.38255184101243,
+ "y" : 279.15161191632245
+ }, {
+ "x" : 188.80333116674078,
+ "y" : 281.4034773738045
+ }, {
+ "x" : 190.6504437376064,
+ "y" : 290.77722104941796
+ }, {
+ "x" : 191.14101024044038,
+ "y" : 290.68055406282355
+ }, {
+ "x" : 191.14101024044038,
+ "y" : 290.68055406282355
+ }, {
+ "x" : 189.2625605540796,
+ "y" : 281.1477805084606
+ }, {
+ "x" : 186.81866768929717,
+ "y" : 278.874414297216
+ }, {
+ "x" : 186.27408206257633,
+ "y" : 277.1792667869229
+ }, {
+ "x" : 191.4552172729711,
+ "y" : 275.9238098876115
+ }, {
+ "x" : 187.87847354488625,
+ "y" : 260.82178336901484
+ }, {
+ "x" : 191.8301939067407,
+ "y" : 259.9572612753003
+ }, {
+ "x" : 190.40267412892808,
+ "y" : 251.61978285597948
+ }, {
+ "x" : 189.90984566470343,
+ "y" : 251.70416356971177
+ }, {
+ "x" : 191.2567638853128,
+ "y" : 259.57088581865395
+ }, {
+ "x" : 187.27470502311246,
+ "y" : 260.44204509856525
+ }, {
+ "x" : 190.85404019407338,
+ "y" : 275.55501342401516
+ }, {
+ "x" : 185.63350065257745,
+ "y" : 276.8200185086826
+ }, {
+ "x" : 186.38255184101243,
+ "y" : 279.15161191632245
+ }, {
+ "x" : 188.80333116674078,
+ "y" : 281.4034773738045
+ }, {
+ "x" : 190.6504437376064,
+ "y" : 290.77722104941796
+ }, {
+ "x" : 191.14101024044038,
+ "y" : 290.68055406282355
+ } ]
+ },
+ "id" : 27
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 253.10746822459623,
+ "y" : 109.49587658513337
+ }, {
+ "x" : 247.25828132592142,
+ "y" : 84.02009022049606
+ }, {
+ "x" : 237.88826663477812,
+ "y" : 86.61971308942884
+ }, {
+ "x" : 233.96614258363843,
+ "y" : 87.92296005040407
+ }, {
+ "x" : 241.16180197289214,
+ "y" : 112.32030882965773
+ }, {
+ "x" : 197.9725924783852,
+ "y" : 119.62279816251248
+ }, {
+ "x" : 186.40300052892417,
+ "y" : 76.33056942280382
+ }, {
+ "x" : 185.6906587301055,
+ "y" : 78.25368800759315
+ }, {
+ "x" : 184.95731510897167,
+ "y" : 79.25262115057558
+ }, {
+ "x" : 183.84003816137556,
+ "y" : 79.71569891553372
+ }, {
+ "x" : 182.4172965285834,
+ "y" : 79.52317374199629
+ }, {
+ "x" : 181.45835167332552,
+ "y" : 78.37827474158257
+ }, {
+ "x" : 178.6594244283624,
+ "y" : 68.42621949594468
+ }, {
+ "x" : 178.83487060724292,
+ "y" : 66.75206073001027
+ }, {
+ "x" : 179.69092215038836,
+ "y" : 65.64599409233779
+ }, {
+ "x" : 180.93642902979627,
+ "y" : 65.35412475839257
+ }, {
+ "x" : 182.21640441799536,
+ "y" : 65.58634942304343
+ }, {
+ "x" : 183.4846372572938,
+ "y" : 65.061594276689
+ }, {
+ "x" : 179.81917368178256,
+ "y" : 49.22796857729554
+ }, {
+ "x" : 220.66547932173125,
+ "y" : 45.86302188318223
+ }, {
+ "x" : 229.96712470578495,
+ "y" : 74.92638423852623
+ }, {
+ "x" : 236.62050045945216,
+ "y" : 72.75822418462485
+ }, {
+ "x" : 277.6587907563662,
+ "y" : 61.478258199989796
+ }, {
+ "x" : 280.5443220587913,
+ "y" : 60.674194771796465
+ }, {
+ "x" : 283.9440121684456,
+ "y" : 73.33909497596323
+ }, {
+ "x" : 285.6788162436569,
+ "y" : 72.88570446707308
+ }, {
+ "x" : 286.70718946889974,
+ "y" : 77.71575237438083
+ }, {
+ "x" : 288.1162804366322,
+ "y" : 77.42941472493112
+ }, {
+ "x" : 292.39265175373293,
+ "y" : 94.7857476156205
+ }, {
+ "x" : 291.1333462370094,
+ "y" : 95.26627447456121
+ }, {
+ "x" : 291.67905621160753,
+ "y" : 100.5028681922704
+ }, {
+ "x" : 273.77138191321865,
+ "y" : 105.96366146299988
+ }, {
+ "x" : 272.42098819767125,
+ "y" : 101.4120556525886
+ }, {
+ "x" : 270.499185876688,
+ "y" : 101.89253185782582
+ }, {
+ "x" : 265.0126954622101,
+ "y" : 79.13261679559946
+ }, {
+ "x" : 260.71065174532123,
+ "y" : 80.22278142627329
+ }, {
+ "x" : 266.70502792624757,
+ "y" : 106.24866008479148
+ } ]
+ },
+ "id" : 37
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 189.93112884389086,
+ "y" : 251.82846871064686
+ }, {
+ "x" : 181.91470869188646,
+ "y" : 252.67726613850613
+ }, {
+ "x" : 181.91470869188663,
+ "y" : 252.67726613850613
+ }, {
+ "x" : 181.6824518049997,
+ "y" : 295.6227589882706
+ }, {
+ "x" : 181.6824518049999,
+ "y" : 295.6227589882706
+ }, {
+ "x" : 188.261242747794,
+ "y" : 294.0484465407503
+ }, {
+ "x" : 188.32684776119535,
+ "y" : 294.3225990246783
+ }, {
+ "x" : 188.32684776119527,
+ "y" : 294.3225990246783
+ }, {
+ "x" : 191.5,
+ "y" : 293.6
+ }, {
+ "x" : 190.94251631689755,
+ "y" : 290.719667637304
+ }, {
+ "x" : 190.94251631689735,
+ "y" : 290.719667637304
+ }, {
+ "x" : 190.6504437376064,
+ "y" : 290.77722104941796
+ }, {
+ "x" : 188.80333116674078,
+ "y" : 281.4034773738045
+ }, {
+ "x" : 186.38255184101243,
+ "y" : 279.15161191632245
+ }, {
+ "x" : 185.63350065257745,
+ "y" : 276.8200185086826
+ }, {
+ "x" : 190.85404019407338,
+ "y" : 275.55501342401516
+ }, {
+ "x" : 187.27470502311246,
+ "y" : 260.44204509856525
+ }, {
+ "x" : 191.2567638853128,
+ "y" : 259.57088581865395
+ }, {
+ "x" : 189.93112884389072,
+ "y" : 251.82846871064686
+ } ]
+ },
+ "id" : 29
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 211.40925366880512,
+ "y" : 240.24316304064652
+ }, {
+ "x" : 206.7546340139987,
+ "y" : 219.2040493108693
+ }, {
+ "x" : 202.11836580699853,
+ "y" : 220.28525077121697
+ }, {
+ "x" : 199.64654153149257,
+ "y" : 220.86169453915633
+ }, {
+ "x" : 199.76009744562526,
+ "y" : 221.34862888212822
+ }, {
+ "x" : 202.2319149179628,
+ "y" : 220.77218670144592
+ }, {
+ "x" : 206.37568165232085,
+ "y" : 219.80583910342253
+ }, {
+ "x" : 210.92105844656797,
+ "y" : 240.351169637597
+ }, {
+ "x" : 211.40925366880512,
+ "y" : 240.24316304064652
+ }, {
+ "x" : 211.40925366880512,
+ "y" : 240.24316304064652
+ }, {
+ "x" : 206.7546340139987,
+ "y" : 219.2040493108693
+ }, {
+ "x" : 202.11836580699853,
+ "y" : 220.28525077121697
+ }, {
+ "x" : 199.64654153149257,
+ "y" : 220.86169453915633
+ }, {
+ "x" : 199.76009744562526,
+ "y" : 221.34862888212822
+ }, {
+ "x" : 202.2319149179628,
+ "y" : 220.77218670144592
+ }, {
+ "x" : 206.37568165232085,
+ "y" : 219.80583910342253
+ }, {
+ "x" : 210.92105844656797,
+ "y" : 240.351169637597
+ }, {
+ "x" : 211.40925366880512,
+ "y" : 240.24316304064652
+ } ]
+ },
+ "id" : -111495
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 205.26478867001163,
+ "y" : 234.85693554280522
+ }, {
+ "x" : 202.42038394500298,
+ "y" : 220.48019794820073
+ }, {
+ "x" : 201.92989164298604,
+ "y" : 220.57724073083875
+ }, {
+ "x" : 204.77429636799468,
+ "y" : 234.95397832544325
+ }, {
+ "x" : 205.26478867001163,
+ "y" : 234.85693554280522
+ }, {
+ "x" : 205.26478867001163,
+ "y" : 234.85693554280522
+ }, {
+ "x" : 202.42038394500298,
+ "y" : 220.48019794820073
+ }, {
+ "x" : 201.92989164298604,
+ "y" : 220.57724073083875
+ }, {
+ "x" : 204.77429636799468,
+ "y" : 234.95397832544325
+ }, {
+ "x" : 205.26478867001163,
+ "y" : 234.85693554280522
+ } ]
+ },
+ "id" : -111500
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 208.7,
+ "y" : 240.3
+ }, {
+ "x" : 204.7,
+ "y" : 221.9
+ }, {
+ "x" : 204.0,
+ "y" : 221.9
+ }, {
+ "x" : 208.1,
+ "y" : 240.6
+ } ]
+ },
+ "id" : 28
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 206.8,
+ "y" : 219.7
+ }, {
+ "x" : 213.7,
+ "y" : 218.3
+ }, {
+ "x" : 213.5,
+ "y" : 217.6
+ }, {
+ "x" : 206.7,
+ "y" : 219.2
+ } ]
+ },
+ "id" : 30
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 321.854868881288,
+ "y" : 88.83518527355045
+ }, {
+ "x" : 298.37761748046614,
+ "y" : 97.43507448770106
+ }, {
+ "x" : 293.5620523635298,
+ "y" : 85.70159294549376
+ }, {
+ "x" : 313.6981557297986,
+ "y" : 77.28956364933401
+ }, {
+ "x" : 307.07636212860234,
+ "y" : 61.27838537469506
+ }, {
+ "x" : 313.6925600928953,
+ "y" : 59.33158536348492
+ }, {
+ "x" : 304.0370127824135,
+ "y" : 36.80951383151114
+ }, {
+ "x" : 288.91018132376485,
+ "y" : 43.242897134274244
+ }, {
+ "x" : 298.54421544249635,
+ "y" : 65.74196350947022
+ }, {
+ "x" : 287.30660094344057,
+ "y" : 70.52612006943673
+ }, {
+ "x" : 272.26854399975855,
+ "y" : 35.41708060540259
+ }, {
+ "x" : 291.63630389841273,
+ "y" : 27.05697866808623
+ }, {
+ "x" : 311.2453782290686,
+ "y" : 18.827454746700823
+ }, {
+ "x" : 326.2973781025503,
+ "y" : 53.95932933688164
+ }, {
+ "x" : 320.5729502077447,
+ "y" : 56.392326892353594
+ }, {
+ "x" : 333.522137411288,
+ "y" : 84.5551242409274
+ } ]
+ },
+ "id" : 38
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 183.36223962920806,
+ "y" : 99.17525606485874
+ }, {
+ "x" : 185.74794754937636,
+ "y" : 108.28736282386804
+ }, {
+ "x" : 192.16039841298857,
+ "y" : 106.5412362408522
+ }, {
+ "x" : 189.64268185690656,
+ "y" : 97.31639342306377
+ }, {
+ "x" : 189.16032451480947,
+ "y" : 97.4480421774256
+ }, {
+ "x" : 191.54631566579525,
+ "y" : 106.19024680697599
+ }, {
+ "x" : 186.10375833658165,
+ "y" : 107.67226892835474
+ }, {
+ "x" : 183.84593609842383,
+ "y" : 99.04861592245429
+ }, {
+ "x" : 183.36223962920806,
+ "y" : 99.17525606485874
+ }, {
+ "x" : 183.36223962920806,
+ "y" : 99.17525606485874
+ }, {
+ "x" : 185.74794754937636,
+ "y" : 108.28736282386804
+ }, {
+ "x" : 192.16039841298857,
+ "y" : 106.5412362408522
+ }, {
+ "x" : 189.64268185690656,
+ "y" : 97.31639342306377
+ }, {
+ "x" : 189.16032451480947,
+ "y" : 97.4480421774256
+ }, {
+ "x" : 191.54631566579525,
+ "y" : 106.19024680697599
+ }, {
+ "x" : 186.10375833658165,
+ "y" : 107.67226892835474
+ }, {
+ "x" : 183.84593609842383,
+ "y" : 99.04861592245429
+ }, {
+ "x" : 183.36223962920806,
+ "y" : 99.17525606485874
+ } ]
+ },
+ "id" : 258139205
+ } ],
+ "measurementAreas" : [ {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 189.62873353653288,
+ "y" : 146.83098199201368
+ }, {
+ "x" : 192.1613478736064,
+ "y" : 158.15051429667483
+ }, {
+ "x" : 191.67341151847072,
+ "y" : 158.25968440859606
+ }, {
+ "x" : 189.2497066635849,
+ "y" : 147.42692357318728
+ }, {
+ "x" : 186.33297799111978,
+ "y" : 148.07219112430533
+ }, {
+ "x" : 188.7041750979025,
+ "y" : 158.69070027838583
+ }, {
+ "x" : 188.21619402101524,
+ "y" : 158.79967031371658
+ }, {
+ "x" : 185.73581088284294,
+ "y" : 147.6922128261164
+ }, {
+ "x" : 189.62873353653288,
+ "y" : 146.83098199201368
+ }, {
+ "x" : 185.81761501636356,
+ "y" : 140.83198922965676
+ }, {
+ "x" : 175.79074987163767,
+ "y" : 143.7100076181814
+ }, {
+ "x" : 174.8172851598356,
+ "y" : 144.5450926925987
+ }, {
+ "x" : 174.2315358541673,
+ "y" : 145.5823727948591
+ }, {
+ "x" : 174.26170542137697,
+ "y" : 209.04751699510962
+ }, {
+ "x" : 174.61771361227147,
+ "y" : 209.74932632502168
+ }, {
+ "x" : 175.113541209721,
+ "y" : 210.27782144676894
+ }, {
+ "x" : 182.6607723016059,
+ "y" : 213.83633342478424
+ }, {
+ "x" : 184.10732813342474,
+ "y" : 213.76263221725821
+ }, {
+ "x" : 185.31904005026445,
+ "y" : 213.14696692116559
+ }, {
+ "x" : 204.5742070877459,
+ "y" : 174.49715985544026
+ }, {
+ "x" : 204.74994148151018,
+ "y" : 173.2569348597899
+ }, {
+ "x" : 204.50031978392508,
+ "y" : 172.26942209340632
+ }, {
+ "x" : 187.9517537734937,
+ "y" : 141.78279261570424
+ }, {
+ "x" : 186.9525607401738,
+ "y" : 141.17059722729027
+ }, {
+ "x" : 185.81761501636356,
+ "y" : 140.83198922965676
+ } ]
+ },
+ "id" : 169
+ } ],
+ "stairs" : [ ],
+ "targets" : [ {
+ "id" : 53,
+ "absorbing" : true,
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 21.4,
+ "y" : 178.2
+ }, {
+ "x" : 25.6,
+ "y" : 177.4
+ }, {
+ "x" : 21.2,
+ "y" : 160.6
+ }, {
+ "x" : 17.0,
+ "y" : 161.6
+ }, {
+ "x" : 21.2,
+ "y" : 178.0
+ } ]
+ },
+ "waitingTime" : 0.0,
+ "waitingTimeYellowPhase" : 0.0,
+ "parallelWaiters" : 0,
+ "individualWaiting" : true,
+ "deletionDistance" : 0.1,
+ "startingWithRedLight" : false,
+ "nextSpeed" : -1.0
+ } ],
+ "absorbingAreas" : [ ],
+ "sources" : [ {
+ "id" : 23,
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 147.9524496438901,
+ "y" : 158.453088570111
+ }, {
+ "x" : 143.8295708812843,
+ "y" : 158.46319241869656
+ }, {
+ "x" : 143.85764593174972,
+ "y" : 161.60000000000002
+ }, {
+ "x" : 147.97979386886047,
+ "y" : 161.60000000000002
+ }, {
+ "x" : 147.9524496438901,
+ "y" : 158.453088570111
+ } ]
+ },
+ "interSpawnTimeDistribution" : "org.vadere.state.scenario.ConstantDistribution",
+ "distributionParameters" : [ 1.0 ],
+ "spawnNumber" : 30,
+ "maxSpawnNumberTotal" : -1,
+ "startTime" : 0.0,
+ "endTime" : 0.0,
+ "spawnAtRandomPositions" : false,
+ "useFreeSpaceOnly" : true,
+ "targetIds" : [ 53 ],
+ "groupSizeDistribution" : [ 1.0 ],
+ "dynamicElementType" : "PEDESTRIAN"
+ } ],
+ "dynamicElements" : [ ],
+ "attributesPedestrian" : {
+ "radius" : 0.195,
+ "densityDependentSpeed" : false,
+ "speedDistributionMean" : 1.34,
+ "speedDistributionStandardDeviation" : 0.26,
+ "minimumSpeed" : 0.5,
+ "maximumSpeed" : 2.2,
+ "acceleration" : 2.0,
+ "footStepsToStore" : 4,
+ "searchRadius" : 1.0,
+ "angleCalculationType" : "USE_CENTER",
+ "targetOrientationAngleThreshold" : 45.0
+ },
+ "teleporter" : null,
+ "attributesCar" : null
+ },
+ "eventInfos" : [ ]
+ }
+}
\ No newline at end of file
diff --git a/VadereManager/testResources/test005/scenarios/s004.scenario b/VadereManager/testResources/test005/scenarios/s004.scenario
new file mode 100644
index 0000000000000000000000000000000000000000..f38e7daf8f210da008d8f52f4cc9631295bb86fb
--- /dev/null
+++ b/VadereManager/testResources/test005/scenarios/s004.scenario
@@ -0,0 +1,199 @@
+{
+ "name" : "s004",
+ "description" : "",
+ "release" : "1.2",
+ "processWriters" : {
+ "files" : [ {
+ "type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
+ "filename" : "postvis.trajectories",
+ "processors" : [ 1, 2 ]
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOverlapOutputFile",
+ "filename" : "overlaps.csv",
+ "processors" : [ 3 ]
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.outputfile.NoDataKeyOutputFile",
+ "filename" : "overlapCount.txt",
+ "processors" : [ 4 ]
+ } ],
+ "processors" : [ {
+ "type" : "org.vadere.simulator.projects.dataprocessing.processor.PedestrianPositionProcessor",
+ "id" : 1
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.processor.PedestrianTargetIdProcessor",
+ "id" : 2
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.processor.PedestrianOverlapProcessor",
+ "id" : 3
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.processor.NumberOverlapsProcessor",
+ "id" : 4,
+ "attributesType" : "org.vadere.state.attributes.processor.AttributesNumberOverlapsProcessor",
+ "attributes" : {
+ "pedestrianOverlapProcessorId" : 3
+ }
+ } ],
+ "isTimestamped" : true,
+ "isWriteMetaData" : false
+ },
+ "scenario" : {
+ "mainModel" : "org.vadere.simulator.models.osm.OptimalStepsModel",
+ "attributesModel" : {
+ "org.vadere.state.attributes.models.AttributesOSM" : {
+ "stepCircleResolution" : 4,
+ "numberOfCircles" : 1,
+ "optimizationType" : "NELDER_MEAD",
+ "varyStepDirection" : true,
+ "movementType" : "ARBITRARY",
+ "stepLengthIntercept" : 0.4625,
+ "stepLengthSlopeSpeed" : 0.2345,
+ "stepLengthSD" : 0.036,
+ "movementThreshold" : 0.0,
+ "minStepLength" : 0.1,
+ "minimumStepLength" : true,
+ "maxStepDuration" : 1.7976931348623157E308,
+ "dynamicStepLength" : true,
+ "updateType" : "EVENT_DRIVEN",
+ "seeSmallWalls" : false,
+ "targetPotentialModel" : "org.vadere.simulator.models.potential.fields.PotentialFieldTargetGrid",
+ "pedestrianPotentialModel" : "org.vadere.simulator.models.potential.PotentialFieldPedestrianCompactSoftshell",
+ "obstaclePotentialModel" : "org.vadere.simulator.models.potential.PotentialFieldObstacleCompactSoftshell",
+ "submodels" : [ ]
+ },
+ "org.vadere.state.attributes.models.AttributesPotentialCompactSoftshell" : {
+ "pedPotentialIntimateSpaceWidth" : 0.45,
+ "pedPotentialPersonalSpaceWidth" : 1.2,
+ "pedPotentialHeight" : 50.0,
+ "obstPotentialWidth" : 0.8,
+ "obstPotentialHeight" : 6.0,
+ "intimateSpaceFactor" : 1.2,
+ "personalSpacePower" : 1,
+ "intimateSpacePower" : 1
+ },
+ "org.vadere.state.attributes.models.AttributesFloorField" : {
+ "createMethod" : "HIGH_ACCURACY_FAST_MARCHING",
+ "potentialFieldResolution" : 0.1,
+ "obstacleGridPenalty" : 0.1,
+ "targetAttractionStrength" : 1.0,
+ "cacheType" : "TXT_CACHE",
+ "cacheDir" : "s004",
+ "timeCostAttributes" : {
+ "standardDeviation" : 0.7,
+ "type" : "UNIT",
+ "obstacleDensityWeight" : 3.5,
+ "pedestrianSameTargetDensityWeight" : 3.5,
+ "pedestrianOtherTargetDensityWeight" : 3.5,
+ "pedestrianWeight" : 3.5,
+ "queueWidthLoading" : 1.0,
+ "pedestrianDynamicWeight" : 6.0,
+ "loadingType" : "CONSTANT",
+ "width" : 0.2,
+ "height" : 1.0
+ }
+ }
+ },
+ "attributesSimulation" : {
+ "finishTime" : 30.0,
+ "simTimeStepLength" : 0.4,
+ "realTimeSimTimeRatio" : 0.1,
+ "writeSimulationData" : true,
+ "visualizationEnabled" : true,
+ "printFPS" : false,
+ "digitsPerCoordinate" : 2,
+ "useFixedSeed" : true,
+ "fixedSeed" : 7483362306614214514,
+ "simulationSeed" : 0,
+ "useSalientBehavior" : false
+ },
+ "topography" : {
+ "attributes" : {
+ "bounds" : {
+ "x" : 0.0,
+ "y" : 0.0,
+ "width" : 10.0,
+ "height" : 10.0
+ },
+ "boundingBoxWidth" : 0.5,
+ "bounded" : true
+ },
+ "obstacles" : [ {
+ "shape" : {
+ "x" : 0.5,
+ "y" : 2.9,
+ "width" : 8.1,
+ "height" : 1.0,
+ "type" : "RECTANGLE"
+ },
+ "id" : 3
+ }, {
+ "shape" : {
+ "x" : 1.5,
+ "y" : 5.4,
+ "width" : 8.0,
+ "height" : 0.8,
+ "type" : "RECTANGLE"
+ },
+ "id" : 4
+ } ],
+ "measurementAreas" : [ ],
+ "stairs" : [ ],
+ "targets" : [ {
+ "id" : 2,
+ "absorbing" : true,
+ "shape" : {
+ "x" : 7.2,
+ "y" : 0.9,
+ "width" : 1.7,
+ "height" : 1.3,
+ "type" : "RECTANGLE"
+ },
+ "waitingTime" : 0.0,
+ "waitingTimeYellowPhase" : 0.0,
+ "parallelWaiters" : 0,
+ "individualWaiting" : true,
+ "deletionDistance" : 0.1,
+ "startingWithRedLight" : false,
+ "nextSpeed" : -1.0
+ } ],
+ "absorbingAreas" : [ ],
+ "sources" : [ {
+ "id" : 1,
+ "shape" : {
+ "x" : 1.3,
+ "y" : 7.009523809523809,
+ "width" : 1.0,
+ "height" : 1.6904761904761907,
+ "type" : "RECTANGLE"
+ },
+ "interSpawnTimeDistribution" : "org.vadere.state.scenario.ConstantDistribution",
+ "distributionParameters" : [ 1.0 ],
+ "spawnNumber" : 1,
+ "maxSpawnNumberTotal" : -1,
+ "startTime" : 0.0,
+ "endTime" : 0.0,
+ "spawnAtRandomPositions" : false,
+ "useFreeSpaceOnly" : true,
+ "targetIds" : [ 2 ],
+ "groupSizeDistribution" : [ 1.0 ],
+ "dynamicElementType" : "PEDESTRIAN"
+ } ],
+ "dynamicElements" : [ ],
+ "attributesPedestrian" : {
+ "radius" : 0.2,
+ "densityDependentSpeed" : false,
+ "speedDistributionMean" : 1.34,
+ "speedDistributionStandardDeviation" : 0.26,
+ "minimumSpeed" : 0.5,
+ "maximumSpeed" : 2.2,
+ "acceleration" : 2.0,
+ "footStepsToStore" : 4,
+ "searchRadius" : 1.0,
+ "angleCalculationType" : "USE_CENTER",
+ "targetOrientationAngleThreshold" : 45.0
+ },
+ "teleporter" : null,
+ "attributesCar" : null
+ },
+ "eventInfos" : [ ]
+ }
+}
\ No newline at end of file
diff --git a/VadereManager/testResources/test005/vadere.project b/VadereManager/testResources/test005/vadere.project
new file mode 100644
index 0000000000000000000000000000000000000000..437400887f3c8026f5f51b633f1971fb7085f560
--- /dev/null
+++ b/VadereManager/testResources/test005/vadere.project
@@ -0,0 +1 @@
+ssss
\ No newline at end of file
diff --git a/VadereManager/testResources/testProject001/scenarios/mf_001.scenario b/VadereManager/testResources/testProject001/scenarios/mf_001.scenario
new file mode 100644
index 0000000000000000000000000000000000000000..e8ba6b2cc514062a142d16f1a38d7a3d18324240
--- /dev/null
+++ b/VadereManager/testResources/testProject001/scenarios/mf_001.scenario
@@ -0,0 +1,10802 @@
+{
+ "name" : "mf_001",
+ "description" : "",
+ "release" : "1.0",
+ "processWriters" : {
+ "files" : [ {
+ "type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
+ "filename" : "postvis.trajectories",
+ "processors" : [ 1, 2 ]
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOverlapOutputFile",
+ "filename" : "overlaps.csv",
+ "processors" : [ 3 ]
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.outputfile.NoDataKeyOutputFile",
+ "filename" : "overlapCount.txt",
+ "processors" : [ 4 ]
+ } ],
+ "processors" : [ {
+ "type" : "org.vadere.simulator.projects.dataprocessing.processor.PedestrianPositionProcessor",
+ "id" : 1
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.processor.PedestrianTargetIdProcessor",
+ "id" : 2
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.processor.PedestrianOverlapProcessor",
+ "id" : 3
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.processor.NumberOverlapsProcessor",
+ "id" : 4,
+ "attributesType" : "org.vadere.state.attributes.processor.AttributesNumberOverlapsProcessor",
+ "attributes" : {
+ "pedestrianOverlapProcessorId" : 3
+ }
+ } ],
+ "isTimestamped" : true,
+ "isWriteMetaData" : false
+ },
+ "scenario" : {
+ "mainModel" : "org.vadere.simulator.models.osm.OptimalStepsModel",
+ "attributesModel" : {
+ "org.vadere.state.attributes.models.AttributesOSM" : {
+ "stepCircleResolution" : 4,
+ "numberOfCircles" : 1,
+ "optimizationType" : "NELDER_MEAD",
+ "varyStepDirection" : true,
+ "movementType" : "ARBITRARY",
+ "stepLengthIntercept" : 0.4625,
+ "stepLengthSlopeSpeed" : 0.2345,
+ "stepLengthSD" : 0.036,
+ "movementThreshold" : 0.0,
+ "minStepLength" : 0.1,
+ "minimumStepLength" : true,
+ "maxStepDuration" : 1.7976931348623157E308,
+ "dynamicStepLength" : true,
+ "updateType" : "EVENT_DRIVEN",
+ "seeSmallWalls" : false,
+ "targetPotentialModel" : "org.vadere.simulator.models.potential.fields.PotentialFieldTargetGrid",
+ "pedestrianPotentialModel" : "org.vadere.simulator.models.potential.PotentialFieldPedestrianCompactSoftshell",
+ "obstaclePotentialModel" : "org.vadere.simulator.models.potential.PotentialFieldObstacleCompactSoftshell",
+ "submodels" : [ ]
+ },
+ "org.vadere.state.attributes.models.AttributesPotentialCompactSoftshell" : {
+ "pedPotentialIntimateSpaceWidth" : 0.45,
+ "pedPotentialPersonalSpaceWidth" : 1.2,
+ "pedPotentialHeight" : 50.0,
+ "obstPotentialWidth" : 0.8,
+ "obstPotentialHeight" : 6.0,
+ "intimateSpaceFactor" : 1.2,
+ "personalSpacePower" : 1,
+ "intimateSpacePower" : 1
+ },
+ "org.vadere.state.attributes.models.AttributesFloorField" : {
+ "createMethod" : "HIGH_ACCURACY_FAST_MARCHING",
+ "potentialFieldResolution" : 0.1,
+ "obstacleGridPenalty" : 0.1,
+ "targetAttractionStrength" : 1.0,
+ "timeCostAttributes" : {
+ "standardDeviation" : 0.7,
+ "type" : "UNIT",
+ "obstacleDensityWeight" : 3.5,
+ "pedestrianSameTargetDensityWeight" : 3.5,
+ "pedestrianOtherTargetDensityWeight" : 3.5,
+ "pedestrianWeight" : 3.5,
+ "queueWidthLoading" : 1.0,
+ "pedestrianDynamicWeight" : 6.0,
+ "loadingType" : "CONSTANT",
+ "width" : 0.2,
+ "height" : 1.0
+ }
+ }
+ },
+ "attributesSimulation" : {
+ "finishTime" : 500.0,
+ "simTimeStepLength" : 0.4,
+ "realTimeSimTimeRatio" : 0.1,
+ "writeSimulationData" : true,
+ "visualizationEnabled" : true,
+ "printFPS" : false,
+ "digitsPerCoordinate" : 2,
+ "useFixedSeed" : true,
+ "fixedSeed" : -3418930040050646469,
+ "simulationSeed" : 0,
+ "useSalientBehavior" : false
+ },
+ "topography" : {
+ "attributes" : {
+ "bounds" : {
+ "x" : 0.0,
+ "y" : 0.0,
+ "width" : 941.0,
+ "height" : 567.0
+ },
+ "boundingBoxWidth" : 0.5,
+ "bounded" : true
+ },
+ "obstacles" : [ {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 200.17115500371438,
+ "y" : 419.16770100872964
+ }, {
+ "x" : 204.72888702829368,
+ "y" : 447.8930185697973
+ }, {
+ "x" : 207.44373947184067,
+ "y" : 465.0073846913874
+ }, {
+ "x" : 187.9625182376476,
+ "y" : 468.14667160250247
+ }, {
+ "x" : 180.85478666506242,
+ "y" : 422.7131054094061
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 783.2257610735251,
+ "y" : 516.4217375833541
+ }, {
+ "x" : 819.1372128550429,
+ "y" : 506.6063557229936
+ }, {
+ "x" : 823.421927895397,
+ "y" : 521.2595198480412
+ }, {
+ "x" : 814.0714120093035,
+ "y" : 523.9483319111168
+ }, {
+ "x" : 797.3096603301819,
+ "y" : 528.7683104928583
+ }, {
+ "x" : 782.9009912204929,
+ "y" : 532.8999503804371
+ }, {
+ "x" : 777.7520936842775,
+ "y" : 534.3841873668134
+ }, {
+ "x" : 770.1794668799266,
+ "y" : 518.1181775378063
+ }, {
+ "x" : 781.8068074096227,
+ "y" : 511.92338558100164
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 204.51424903352745,
+ "y" : 0.0
+ }, {
+ "x" : 195.3543094060151,
+ "y" : 0.5488989176228642
+ }, {
+ "x" : 195.92800634773448,
+ "y" : 10.281358697451651
+ }, {
+ "x" : 196.09526594425552,
+ "y" : 13.057405629195273
+ }, {
+ "x" : 198.28475805127528,
+ "y" : 49.80297287926078
+ }, {
+ "x" : 186.63388900784776,
+ "y" : 50.49069754593074
+ }, {
+ "x" : 187.75683525623754,
+ "y" : 69.35397952143103
+ }, {
+ "x" : 210.14835497969761,
+ "y" : 68.03698235750198
+ }, {
+ "x" : 209.44228248181753,
+ "y" : 56.26397260185331
+ }, {
+ "x" : 209.00544940971304,
+ "y" : 48.88373931217939
+ }, {
+ "x" : 207.43165007338393,
+ "y" : 48.97548953909427
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 269.81405702477787,
+ "y" : 2.4618513491004705
+ }, {
+ "x" : 259.4881938943872,
+ "y" : 5.141065296716988
+ }, {
+ "x" : 269.3805943839252,
+ "y" : 43.03572568669915
+ }, {
+ "x" : 279.70639662689064,
+ "y" : 40.35653116740286
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 935.0906363677932,
+ "y" : 518.4058738695458
+ }, {
+ "x" : 932.6699356575264,
+ "y" : 512.4940173178911
+ }, {
+ "x" : 910.7371388771571,
+ "y" : 521.4339643465355
+ }, {
+ "x" : 907.7101087471237,
+ "y" : 514.0774984750897
+ }, {
+ "x" : 933.7026750396471,
+ "y" : 503.505425340496
+ }, {
+ "x" : 940.2758410559036,
+ "y" : 516.2888004183769
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 700.3536650112364,
+ "y" : 58.753017290495336
+ }, {
+ "x" : 707.9017627866706,
+ "y" : 55.6694595804438
+ }, {
+ "x" : 717.7068669376895,
+ "y" : 51.66059859097004
+ }, {
+ "x" : 725.4360644414555,
+ "y" : 48.5052813179791
+ }, {
+ "x" : 723.5782047116663,
+ "y" : 43.99216762650758
+ }, {
+ "x" : 731.5264241506811,
+ "y" : 40.744101707823575
+ }, {
+ "x" : 739.9044853686355,
+ "y" : 37.33251144737005
+ }, {
+ "x" : 746.3582662488334,
+ "y" : 53.0266548730433
+ }, {
+ "x" : 704.9567193906987,
+ "y" : 69.94537084270269
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 235.40731459786184,
+ "y" : 431.4115430386737
+ }, {
+ "x" : 236.78039540036116,
+ "y" : 439.50196011550725
+ }, {
+ "x" : 251.9859202457592,
+ "y" : 437.34283583052456
+ }, {
+ "x" : 248.0224143215455,
+ "y" : 411.31886405684054
+ }, {
+ "x" : 206.86681148293428,
+ "y" : 418.1688579218462
+ }, {
+ "x" : 209.828165179817,
+ "y" : 430.60736996214837
+ }, {
+ "x" : 212.10402928781696,
+ "y" : 431.1066614156589
+ }, {
+ "x" : 213.64599918050226,
+ "y" : 441.0385741041973
+ }, {
+ "x" : 224.80934861442074,
+ "y" : 438.66563074383885
+ }, {
+ "x" : 223.46542542008683,
+ "y" : 429.48582790698856
+ }, {
+ "x" : 236.93145503266715,
+ "y" : 427.47959023714066
+ }, {
+ "x" : 237.37627318594605,
+ "y" : 430.854662806727
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 228.39950135862455,
+ "y" : 22.68799404706806
+ }, {
+ "x" : 230.13504630036186,
+ "y" : 48.57027000747621
+ }, {
+ "x" : 245.3625994361937,
+ "y" : 47.55780795402825
+ }, {
+ "x" : 243.6271222392097,
+ "y" : 21.67552557401359
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 906.8940985708032,
+ "y" : 293.3263950077817
+ }, {
+ "x" : 923.9514196481323,
+ "y" : 292.56663651484996
+ }, {
+ "x" : 924.5506682198029,
+ "y" : 305.9161614123732
+ }, {
+ "x" : 907.5004470743006,
+ "y" : 306.6872815322131
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 748.637657164596,
+ "y" : 409.02202906180173
+ }, {
+ "x" : 725.7481415199582,
+ "y" : 415.42702941969037
+ }, {
+ "x" : 729.2920287242159,
+ "y" : 427.9967729691416
+ }, {
+ "x" : 752.1736904359423,
+ "y" : 421.60265097301453
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 755.4184532153886,
+ "y" : 447.9032940240577
+ }, {
+ "x" : 740.8997220858,
+ "y" : 454.4123641801998
+ }, {
+ "x" : 750.9463142433669,
+ "y" : 474.80055231042206
+ }, {
+ "x" : 764.8960707336664,
+ "y" : 468.82864469010383
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 906.5710990445223,
+ "y" : 326.29385229572654
+ }, {
+ "x" : 907.7272715388099,
+ "y" : 321.1479964926839
+ }, {
+ "x" : 912.6683289504144,
+ "y" : 321.85985974688083
+ }, {
+ "x" : 913.6105677559972,
+ "y" : 313.34664535615593
+ }, {
+ "x" : 897.196249051136,
+ "y" : 310.93487166054547
+ }, {
+ "x" : 897.3950587855652,
+ "y" : 307.2476463820785
+ }, {
+ "x" : 888.6219207436079,
+ "y" : 305.82797760982066
+ }, {
+ "x" : 886.8653359480668,
+ "y" : 317.7406268231571
+ }, {
+ "x" : 889.6538162956713,
+ "y" : 319.81515964865685
+ }, {
+ "x" : 888.9990270956187,
+ "y" : 326.86939987074584
+ }, {
+ "x" : 886.3176006663125,
+ "y" : 328.9040817823261
+ }, {
+ "x" : 880.245949918055,
+ "y" : 332.3598493086174
+ }, {
+ "x" : 877.8227869140683,
+ "y" : 337.5519874934107
+ }, {
+ "x" : 880.0778061529854,
+ "y" : 343.5249807247892
+ }, {
+ "x" : 880.2848929550964,
+ "y" : 347.53743234369904
+ }, {
+ "x" : 885.9854177706875,
+ "y" : 352.43612441886216
+ }, {
+ "x" : 896.1178359196056,
+ "y" : 349.3064808519557
+ }, {
+ "x" : 900.9408377013169,
+ "y" : 348.0004930580035
+ }, {
+ "x" : 906.4582705860958,
+ "y" : 348.17547920066863
+ }, {
+ "x" : 913.0570257005747,
+ "y" : 341.0102094290778
+ }, {
+ "x" : 916.1970756764058,
+ "y" : 340.8268506070599
+ }, {
+ "x" : 915.9179135013837,
+ "y" : 331.44908757600933
+ }, {
+ "x" : 912.1473481825087,
+ "y" : 331.56667243968695
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 171.89821365394164,
+ "y" : 495.1998267099261
+ }, {
+ "x" : 180.66272521717474,
+ "y" : 493.54727914649993
+ }, {
+ "x" : 181.03603869723156,
+ "y" : 495.5069132754579
+ }, {
+ "x" : 187.627918644459,
+ "y" : 494.2709149355069
+ }, {
+ "x" : 187.26092192472424,
+ "y" : 492.3448712024838
+ }, {
+ "x" : 199.6431551554706,
+ "y" : 490.02397577278316
+ }, {
+ "x" : 202.1017628974514,
+ "y" : 503.0241529578343
+ }, {
+ "x" : 198.64875318668783,
+ "y" : 503.6646791025996
+ }, {
+ "x" : 193.70494190021418,
+ "y" : 504.5888890484348
+ }, {
+ "x" : 187.04578194848727,
+ "y" : 505.83374484907836
+ }, {
+ "x" : 179.85237986058928,
+ "y" : 507.24979974143207
+ }, {
+ "x" : 172.09428366017528,
+ "y" : 508.63576040044427
+ }, {
+ "x" : 170.43945204850752,
+ "y" : 499.8460685154423
+ }, {
+ "x" : 168.67029056488536,
+ "y" : 499.55296541098505
+ }, {
+ "x" : 168.60765364265535,
+ "y" : 498.3158504059538
+ }, {
+ "x" : 167.6228161629988,
+ "y" : 498.60541557054967
+ }, {
+ "x" : 167.43235569656827,
+ "y" : 496.9634613301605
+ }, {
+ "x" : 166.38470969209448,
+ "y" : 497.1285276832059
+ }, {
+ "x" : 166.0395721854875,
+ "y" : 493.2227536961436
+ }, {
+ "x" : 171.45815230510198,
+ "y" : 492.12532855477184
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 147.56542171922047,
+ "y" : 534.4031635811552
+ }, {
+ "x" : 146.40342750935815,
+ "y" : 528.6674967939034
+ }, {
+ "x" : 142.10725130338687,
+ "y" : 529.5912584140897
+ }, {
+ "x" : 141.81344051251654,
+ "y" : 527.9235802637413
+ }, {
+ "x" : 139.1597471847199,
+ "y" : 528.4797362247482
+ }, {
+ "x" : 140.41259695461486,
+ "y" : 533.2838518358767
+ }, {
+ "x" : 135.76582142186817,
+ "y" : 534.4517406821251
+ }, {
+ "x" : 135.25119603285566,
+ "y" : 532.7098864363506
+ }, {
+ "x" : 128.9808858500328,
+ "y" : 534.3461633957922
+ }, {
+ "x" : 125.91042273549829,
+ "y" : 522.4937214814126
+ }, {
+ "x" : 132.41045394877438,
+ "y" : 521.1099354764447
+ }, {
+ "x" : 131.95941451657563,
+ "y" : 519.2478297622874
+ }, {
+ "x" : 141.36448366811965,
+ "y" : 517.1383195417002
+ }, {
+ "x" : 146.56184833566658,
+ "y" : 515.9778085071594
+ }, {
+ "x" : 148.25075047416613,
+ "y" : 518.4378201672807
+ }, {
+ "x" : 149.41606957640033,
+ "y" : 521.8593461131677
+ }, {
+ "x" : 149.76909063116182,
+ "y" : 525.3092087972909
+ }, {
+ "x" : 149.9495052099228,
+ "y" : 527.0287082409486
+ }, {
+ "x" : 148.2296826785896,
+ "y" : 527.4827252971008
+ }, {
+ "x" : 149.71946661989205,
+ "y" : 533.8747273674235
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 266.45475347549655,
+ "y" : 443.14761396776885
+ }, {
+ "x" : 284.1608078579884,
+ "y" : 440.78336449246854
+ }, {
+ "x" : 286.45905823167413,
+ "y" : 457.8837739126757
+ }, {
+ "x" : 268.7604898556601,
+ "y" : 460.24826492369175
+ }, {
+ "x" : 267.8786682743812,
+ "y" : 453.70977318286896
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 418.11484248237684,
+ "y" : 545.4809020357206
+ }, {
+ "x" : 417.63856080477126,
+ "y" : 532.6474388772622
+ }, {
+ "x" : 434.46710327267647,
+ "y" : 532.0232130214572
+ }, {
+ "x" : 434.94297353865113,
+ "y" : 544.8677922412753
+ }, {
+ "x" : 426.78244904906023,
+ "y" : 545.1606202404946
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 39.75198650290258,
+ "y" : 165.8199200676754
+ }, {
+ "x" : 49.57156398589723,
+ "y" : 165.12604700308293
+ }, {
+ "x" : 50.386534206336364,
+ "y" : 176.54663908388466
+ }, {
+ "x" : 35.060485896421596,
+ "y" : 177.62304665893316
+ }, {
+ "x" : 35.18592104292475,
+ "y" : 179.42970205657184
+ }, {
+ "x" : 28.07518737099599,
+ "y" : 179.92527083028108
+ }, {
+ "x" : 26.661176425870508,
+ "y" : 159.9619067069143
+ }, {
+ "x" : 39.2713792999275,
+ "y" : 159.07243407238275
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 233.73275688569993,
+ "y" : 334.4124767361209
+ }, {
+ "x" : 228.0036688161781,
+ "y" : 334.99873520992696
+ }, {
+ "x" : 227.2449003700167,
+ "y" : 337.198474583216
+ }, {
+ "x" : 217.81771183107048,
+ "y" : 338.40589558985084
+ }, {
+ "x" : 218.60897293081507,
+ "y" : 344.5407858360559
+ }, {
+ "x" : 219.41629450849723,
+ "y" : 350.197788733989
+ }, {
+ "x" : 233.70189021271653,
+ "y" : 348.1745750773698
+ }, {
+ "x" : 233.04572360403836,
+ "y" : 343.55738891940564
+ }, {
+ "x" : 234.61506915092468,
+ "y" : 342.931442188099
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 754.5544652759563,
+ "y" : 482.8107074769214
+ }, {
+ "x" : 768.3495663620997,
+ "y" : 476.78909100964665
+ }, {
+ "x" : 775.5170747400261,
+ "y" : 492.93017372395843
+ }, {
+ "x" : 761.3362937186612,
+ "y" : 498.24894077144563
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 147.10419688094407,
+ "y" : 94.17913966439664
+ }, {
+ "x" : 185.27549916971475,
+ "y" : 91.8011739384383
+ }, {
+ "x" : 184.81256708083674,
+ "y" : 84.7538529979065
+ }, {
+ "x" : 146.64121851313394,
+ "y" : 87.13182304147631
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 623.5235417356016,
+ "y" : 527.2398729845881
+ }, {
+ "x" : 621.3125882721506,
+ "y" : 521.2796010170132
+ }, {
+ "x" : 636.6677542717662,
+ "y" : 515.1210841033608
+ }, {
+ "x" : 639.3964298629435,
+ "y" : 521.6217382280156
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 819.9107426761184,
+ "y" : 215.64655738789588
+ }, {
+ "x" : 820.2157645525876,
+ "y" : 217.85984635911882
+ }, {
+ "x" : 832.0841902378015,
+ "y" : 216.2350266641006
+ }, {
+ "x" : 829.7549651798327,
+ "y" : 199.43367911409587
+ }, {
+ "x" : 817.886131410487,
+ "y" : 201.06961817853153
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 742.5909033669159,
+ "y" : 262.4408713327721
+ }, {
+ "x" : 741.122535998933,
+ "y" : 255.8713840506971
+ }, {
+ "x" : 726.5866908191238,
+ "y" : 259.11994043085724
+ }, {
+ "x" : 728.0554479681887,
+ "y" : 265.6783099286258
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 718.8993093058234,
+ "y" : 236.96437052544206
+ }, {
+ "x" : 732.3832694691373,
+ "y" : 232.9015030246228
+ }, {
+ "x" : 722.8359025351238,
+ "y" : 201.43731266912073
+ }, {
+ "x" : 709.3518785969354,
+ "y" : 205.5002043163404
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 377.5347809152445,
+ "y" : 534.1353329904377
+ }, {
+ "x" : 394.0038470769068,
+ "y" : 533.3542542606592
+ }, {
+ "x" : 394.2743694030214,
+ "y" : 551.1987259183079
+ }, {
+ "x" : 387.0967889901949,
+ "y" : 551.4801758183166
+ }, {
+ "x" : 386.7568955477327,
+ "y" : 544.3256920892745
+ }, {
+ "x" : 377.6773713056464,
+ "y" : 544.7211866499856
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 363.8147395296255,
+ "y" : 565.1610468924046
+ }, {
+ "x" : 362.70307104173116,
+ "y" : 534.2594583118334
+ }, {
+ "x" : 374.50723091501277,
+ "y" : 533.8554620919749
+ }, {
+ "x" : 374.546865017619,
+ "y" : 542.4128756579012
+ }, {
+ "x" : 371.41776022384875,
+ "y" : 542.4967556893826
+ }, {
+ "x" : 371.79524273087736,
+ "y" : 555.3936427999288
+ }, {
+ "x" : 374.7979438214097,
+ "y" : 555.3055109959096
+ }, {
+ "x" : 375.08122405014,
+ "y" : 565.0282508321106
+ }, {
+ "x" : 372.6149759172695,
+ "y" : 565.1010503126308
+ }, {
+ "x" : 372.6497383257374,
+ "y" : 566.0590766184032
+ }, {
+ "x" : 368.95408452209085,
+ "y" : 566.1684028534219
+ }, {
+ "x" : 368.9186160567915,
+ "y" : 565.0100804977119
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 394.59606007754337,
+ "y" : 558.2302096569911
+ }, {
+ "x" : 394.0038470769068,
+ "y" : 533.3542542606592
+ }, {
+ "x" : 411.1807099779835,
+ "y" : 532.7750581158325
+ }, {
+ "x" : 411.59688788617495,
+ "y" : 546.9527733577415
+ }, {
+ "x" : 401.3942879680544,
+ "y" : 547.3215675605461
+ }, {
+ "x" : 401.57625076302793,
+ "y" : 557.8419920215383
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 434.6235060329782,
+ "y" : 486.2328369896859
+ }, {
+ "x" : 434.5002782745287,
+ "y" : 475.95916334632784
+ }, {
+ "x" : 434.24950611556415,
+ "y" : 454.6550866784528
+ }, {
+ "x" : 434.10465055238456,
+ "y" : 442.8118851147592
+ }, {
+ "x" : 432.5669862839859,
+ "y" : 441.1690887026489
+ }, {
+ "x" : 430.3735874069389,
+ "y" : 441.0952805848792
+ }, {
+ "x" : 425.8261177454842,
+ "y" : 441.2983002830297
+ }, {
+ "x" : 425.8274373966269,
+ "y" : 442.14393939450383
+ }, {
+ "x" : 420.0189245013753,
+ "y" : 442.43804571032524
+ }, {
+ "x" : 420.0662646226119,
+ "y" : 443.68577810935676
+ }, {
+ "x" : 411.40739360207226,
+ "y" : 444.1843930920586
+ }, {
+ "x" : 411.74048914317973,
+ "y" : 457.5137155102566
+ }, {
+ "x" : 418.85800399282016,
+ "y" : 457.02999583259225
+ }, {
+ "x" : 420.41548697697,
+ "y" : 458.0837644729763
+ }, {
+ "x" : 420.3421914894134,
+ "y" : 460.26204238738865
+ }, {
+ "x" : 418.71739748772234,
+ "y" : 461.2087330641225
+ }, {
+ "x" : 418.1625125078717,
+ "y" : 471.72661699540913
+ }, {
+ "x" : 420.1551488239784,
+ "y" : 471.7936657872051
+ }, {
+ "x" : 420.0347344367765,
+ "y" : 475.37226528301835
+ }, {
+ "x" : 418.0017123413272,
+ "y" : 476.5054921125993
+ }, {
+ "x" : 415.70816902746446,
+ "y" : 473.43535904586315
+ }, {
+ "x" : 412.10092775861267,
+ "y" : 473.56988845951855
+ }, {
+ "x" : 412.42250862682704,
+ "y" : 486.79868822637945
+ }, {
+ "x" : 423.50070055632386,
+ "y" : 486.51500128302723
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 394.7261489457451,
+ "y" : 131.97719054762274
+ }, {
+ "x" : 388.0293962324504,
+ "y" : 108.87637427262962
+ }, {
+ "x" : 373.8144659951795,
+ "y" : 113.20474872365594
+ }, {
+ "x" : 374.0362105843378,
+ "y" : 114.35820945166051
+ }, {
+ "x" : 358.0779556171037,
+ "y" : 118.95064291264862
+ }, {
+ "x" : 359.7395871808985,
+ "y" : 124.43613120727241
+ }, {
+ "x" : 351.999372284743,
+ "y" : 126.6013187598437
+ }, {
+ "x" : 356.18722515844274,
+ "y" : 140.63883277960122
+ }, {
+ "x" : 378.5750057906844,
+ "y" : 134.33782947435975
+ }, {
+ "x" : 379.1093369673472,
+ "y" : 135.93572835810483
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 26.12237106251996,
+ "y" : 507.64859605394304
+ }, {
+ "x" : 23.53157635498792,
+ "y" : 493.25330448988825
+ }, {
+ "x" : 37.916393608087674,
+ "y" : 490.921425963752
+ }, {
+ "x" : 40.462199362460524,
+ "y" : 505.10381740517914
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 63.2297516950639,
+ "y" : 311.9053570050746
+ }, {
+ "x" : 62.9656231419649,
+ "y" : 307.5795205431059
+ }, {
+ "x" : 62.91888908087276,
+ "y" : 306.75461216270924
+ }, {
+ "x" : 66.17080663214438,
+ "y" : 306.56341881584376
+ }, {
+ "x" : 66.00499934470281,
+ "y" : 303.74292136356235
+ }, {
+ "x" : 62.93933885812294,
+ "y" : 303.9292439920828
+ }, {
+ "x" : 62.574678390985355,
+ "y" : 297.94222750142217
+ }, {
+ "x" : 64.67075092205778,
+ "y" : 297.81235093902797
+ }, {
+ "x" : 67.71373524866067,
+ "y" : 297.63639365974814
+ }, {
+ "x" : 70.18269912526011,
+ "y" : 297.48566405661404
+ }, {
+ "x" : 70.54066284804139,
+ "y" : 303.4502041861415
+ }, {
+ "x" : 70.83334850054234,
+ "y" : 308.25542707554996
+ }, {
+ "x" : 71.0240125276614,
+ "y" : 311.4439243329689
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 117.90700204484165,
+ "y" : 225.18844235036522
+ }, {
+ "x" : 117.2063892383594,
+ "y" : 215.90790400840342
+ }, {
+ "x" : 130.06448213756084,
+ "y" : 214.94908154197037
+ }, {
+ "x" : 131.92319020268042,
+ "y" : 239.6115689361468
+ }, {
+ "x" : 123.0573318474926,
+ "y" : 240.28170204162598
+ }, {
+ "x" : 108.73151753947604,
+ "y" : 241.2802431890741
+ }, {
+ "x" : 97.92609097226523,
+ "y" : 242.07440754026175
+ }, {
+ "x" : 96.09772779606283,
+ "y" : 217.3907066937536
+ }, {
+ "x" : 109.79863932507578,
+ "y" : 216.38226529862732
+ }, {
+ "x" : 110.48921513441019,
+ "y" : 225.74034829623997
+ }, {
+ "x" : 115.13834387867246,
+ "y" : 225.39584306720644
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 303.2097389565315,
+ "y" : 268.3220198089257
+ }, {
+ "x" : 317.20071520633064,
+ "y" : 264.4421396078542
+ }, {
+ "x" : 312.7826990754111,
+ "y" : 248.61671465821564
+ }, {
+ "x" : 318.17781944782473,
+ "y" : 247.1180799761787
+ }, {
+ "x" : 313.8329831805313,
+ "y" : 231.55101954285055
+ }, {
+ "x" : 301.23951128229965,
+ "y" : 235.0439807055518
+ }, {
+ "x" : 287.2336073028855,
+ "y" : 238.92340143304318
+ }, {
+ "x" : 291.4986232961528,
+ "y" : 254.2095983820036
+ }, {
+ "x" : 300.50794650334865,
+ "y" : 251.70872252155095
+ }, {
+ "x" : 302.2348904579412,
+ "y" : 257.9084692578763
+ }, {
+ "x" : 300.44656019157264,
+ "y" : 258.4046472944319
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 276.35128358448856,
+ "y" : 318.16565869469196
+ }, {
+ "x" : 291.7571943484945,
+ "y" : 315.81308532413095
+ }, {
+ "x" : 289.8034904494416,
+ "y" : 303.0746207162738
+ }, {
+ "x" : 274.3975470585283,
+ "y" : 305.4272002065554
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 359.96214316540863,
+ "y" : 198.82248020544648
+ }, {
+ "x" : 378.4922670144588,
+ "y" : 193.67125552054495
+ }, {
+ "x" : 383.9097654046491,
+ "y" : 192.1734314803034
+ }, {
+ "x" : 381.97061338368803,
+ "y" : 183.87478608638048
+ }, {
+ "x" : 364.38564290385693,
+ "y" : 188.3679658723995
+ }, {
+ "x" : 362.05473975709174,
+ "y" : 179.32182091195136
+ }, {
+ "x" : 355.61258037376683,
+ "y" : 180.96322205942124
+ }, {
+ "x" : 357.65370760147925,
+ "y" : 188.8869940964505
+ }, {
+ "x" : 355.1607994575752,
+ "y" : 189.52635196596384
+ }, {
+ "x" : 356.6223537083715,
+ "y" : 195.20538393128663
+ }, {
+ "x" : 357.538464265177,
+ "y" : 194.96916725672781
+ }, {
+ "x" : 358.8375269585522,
+ "y" : 194.63456889986992
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 380.99677564541344,
+ "y" : 467.07155137043446
+ }, {
+ "x" : 401.88180548720993,
+ "y" : 466.46129780076444
+ }, {
+ "x" : 401.4277409429196,
+ "y" : 457.61178323067725
+ }, {
+ "x" : 405.1974014933221,
+ "y" : 457.7386148283258
+ }, {
+ "x" : 405.2474839403294,
+ "y" : 448.72804228495806
+ }, {
+ "x" : 403.9213656944921,
+ "y" : 446.9922353476286
+ }, {
+ "x" : 401.77511195791885,
+ "y" : 447.28719031251967
+ }, {
+ "x" : 400.6700228275731,
+ "y" : 450.26522165257484
+ }, {
+ "x" : 387.97952534409706,
+ "y" : 450.0162861049175
+ }, {
+ "x" : 387.53083094535396,
+ "y" : 459.59201139677316
+ }, {
+ "x" : 380.4731375760166,
+ "y" : 460.28918070252985
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 855.211483521387,
+ "y" : 29.069588200189173
+ }, {
+ "x" : 836.641489730915,
+ "y" : 36.25409376807511
+ }, {
+ "x" : 840.5348290398251,
+ "y" : 46.410149440169334
+ }, {
+ "x" : 844.770337326685,
+ "y" : 57.456722820177674
+ }, {
+ "x" : 863.562975198729,
+ "y" : 50.29088102839887
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 879.5710923904553,
+ "y" : 184.8469147151336
+ }, {
+ "x" : 855.4035110534169,
+ "y" : 193.8007796658203
+ }, {
+ "x" : 858.0119189507095,
+ "y" : 200.7759145507589
+ }, {
+ "x" : 875.4249842120335,
+ "y" : 194.33132951986045
+ }, {
+ "x" : 876.8110951380804,
+ "y" : 198.03862713929266
+ }, {
+ "x" : 883.5577736609848,
+ "y" : 195.54022343736142
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 900.4887346578762,
+ "y" : 270.7019697390497
+ }, {
+ "x" : 910.0491476077586,
+ "y" : 270.1899811271578
+ }, {
+ "x" : 909.3186387633905,
+ "y" : 256.7581492094323
+ }, {
+ "x" : 899.7507681553252,
+ "y" : 257.2698888350278
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 859.520650497172,
+ "y" : 206.1451599895954
+ }, {
+ "x" : 860.3578163873171,
+ "y" : 224.36487931665033
+ }, {
+ "x" : 869.0955158192664,
+ "y" : 223.96971561480314
+ }, {
+ "x" : 868.8264696189435,
+ "y" : 218.04145410098135
+ }, {
+ "x" : 876.7890080178622,
+ "y" : 217.67579133436084
+ }, {
+ "x" : 877.0462342577521,
+ "y" : 223.2921188334003
+ }, {
+ "x" : 885.3441160446964,
+ "y" : 222.91552547831088
+ }, {
+ "x" : 885.123517630971,
+ "y" : 217.9791364800185
+ }, {
+ "x" : 891.408559957752,
+ "y" : 217.69043272454292
+ }, {
+ "x" : 890.8808224400273,
+ "y" : 206.1902958098799
+ }, {
+ "x" : 866.4418018029537,
+ "y" : 207.30204483680427
+ }, {
+ "x" : 866.3793661631644,
+ "y" : 205.84239491261542
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 700.1218756863382,
+ "y" : 163.06512681674212
+ }, {
+ "x" : 688.4273587192874,
+ "y" : 166.37615035381168
+ }, {
+ "x" : 691.1840525114676,
+ "y" : 176.0264971172437
+ }, {
+ "x" : 702.8711166417925,
+ "y" : 172.71522911917418
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 624.4348757620901,
+ "y" : 43.367006045766175
+ }, {
+ "x" : 626.4033981888788,
+ "y" : 48.79616339318454
+ }, {
+ "x" : 632.0249705133028,
+ "y" : 46.77137479651719
+ }, {
+ "x" : 630.0490166391246,
+ "y" : 41.34196496382356
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 748.5848563914187,
+ "y" : 96.73894889466465
+ }, {
+ "x" : 751.8733972834889,
+ "y" : 105.40588705893606
+ }, {
+ "x" : 775.7076667476213,
+ "y" : 96.40696052089334
+ }, {
+ "x" : 768.7605672106147,
+ "y" : 78.12597707659006
+ }, {
+ "x" : 759.6746509402292,
+ "y" : 81.55817058309913
+ }, {
+ "x" : 763.3254401930608,
+ "y" : 91.1830583550036
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 661.2404497821117,
+ "y" : 157.79423174075782
+ }, {
+ "x" : 664.4307666145032,
+ "y" : 168.716438411735
+ }, {
+ "x" : 667.6084446462337,
+ "y" : 179.57146442867815
+ }, {
+ "x" : 677.9149781084852,
+ "y" : 176.5808057030663
+ }, {
+ "x" : 671.5470173081849,
+ "y" : 154.80356066394597
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 661.6993229183136,
+ "y" : 49.15057060588151
+ }, {
+ "x" : 662.2831437990535,
+ "y" : 53.47610210441053
+ }, {
+ "x" : 662.4791059454437,
+ "y" : 54.95137041993439
+ }, {
+ "x" : 676.094133595936,
+ "y" : 53.19590087141842
+ }, {
+ "x" : 675.3377943518572,
+ "y" : 47.36250939127058
+ }, {
+ "x" : 668.5639207321219,
+ "y" : 48.23581160325557
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 689.5646756474162,
+ "y" : 155.37720818724483
+ }, {
+ "x" : 683.1527592284838,
+ "y" : 157.44206553604454
+ }, {
+ "x" : 685.7414412933867,
+ "y" : 165.45118639990687
+ }, {
+ "x" : 692.1529756850796,
+ "y" : 163.39744580257684
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 873.0879001340363,
+ "y" : 62.76199308689684
+ }, {
+ "x" : 866.1842952510342,
+ "y" : 64.83232676517218
+ }, {
+ "x" : 871.779936799081,
+ "y" : 83.44616379961371
+ }, {
+ "x" : 878.6909580663778,
+ "y" : 81.37608813866973
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 654.6063013756648,
+ "y" : 37.841004868038
+ }, {
+ "x" : 651.7942230447661,
+ "y" : 30.714482326060534
+ }, {
+ "x" : 636.4493431810988,
+ "y" : 36.750990063883364
+ }, {
+ "x" : 639.2692465677392,
+ "y" : 43.866641487926245
+ }, {
+ "x" : 643.0336031133775,
+ "y" : 42.391252774745226
+ }, {
+ "x" : 650.004587511532,
+ "y" : 39.64422111213207
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 643.2099540940253,
+ "y" : 90.41814650036395
+ }, {
+ "x" : 645.432611416094,
+ "y" : 98.02549466583878
+ }, {
+ "x" : 646.761077563162,
+ "y" : 102.56525368150324
+ }, {
+ "x" : 660.7364142967854,
+ "y" : 98.50762793142349
+ }, {
+ "x" : 657.1856909629423,
+ "y" : 86.3493977561593
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 709.5357907500584,
+ "y" : 117.19716919958591
+ }, {
+ "x" : 697.9836303699994,
+ "y" : 118.7105197571218
+ }, {
+ "x" : 699.6031627858756,
+ "y" : 130.9594809198752
+ }, {
+ "x" : 701.4253194853663,
+ "y" : 144.70619096141309
+ }, {
+ "x" : 712.9703682910185,
+ "y" : 143.18148447480053
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 760.3923349927645,
+ "y" : 48.337042516097426
+ }, {
+ "x" : 763.210431205458,
+ "y" : 54.61823303438723
+ }, {
+ "x" : 770.5645498875529,
+ "y" : 51.32794463727623
+ }, {
+ "x" : 767.7460849717027,
+ "y" : 45.05786400381476
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 796.5010675765807,
+ "y" : 44.23578356206417
+ }, {
+ "x" : 784.6125211061444,
+ "y" : 49.09776658937335
+ }, {
+ "x" : 789.5189965136815,
+ "y" : 61.001380709931254
+ }, {
+ "x" : 801.4075240333332,
+ "y" : 56.13940835557878
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 591.926793108345,
+ "y" : 77.60923197492957
+ }, {
+ "x" : 596.8140969586093,
+ "y" : 92.08217915706336
+ }, {
+ "x" : 605.9767614799784,
+ "y" : 89.01948547177017
+ }, {
+ "x" : 601.0898512091953,
+ "y" : 74.53541631251574
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 451.714181375457,
+ "y" : 55.98863100167364
+ }, {
+ "x" : 456.10847697558347,
+ "y" : 66.76205947622657
+ }, {
+ "x" : 460.6308994060382,
+ "y" : 78.15174751449376
+ }, {
+ "x" : 479.6047836164944,
+ "y" : 70.668117496185
+ }, {
+ "x" : 472.2485482657794,
+ "y" : 52.1290069334209
+ }, {
+ "x" : 470.9170466788346,
+ "y" : 49.002228597179055
+ }, {
+ "x" : 458.39907554513775,
+ "y" : 53.55440693348646
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 659.772920507472,
+ "y" : 520.416737401858
+ }, {
+ "x" : 689.4410740106832,
+ "y" : 507.6642803894356
+ }, {
+ "x" : 686.361282836413,
+ "y" : 500.53982331603765
+ }, {
+ "x" : 656.6860410346417,
+ "y" : 513.2809328399599
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 549.5484421865549,
+ "y" : 262.4135804763064
+ }, {
+ "x" : 548.0742811721284,
+ "y" : 257.557404496707
+ }, {
+ "x" : 539.4410519329831,
+ "y" : 260.1595691172406
+ }, {
+ "x" : 540.9152192490874,
+ "y" : 265.01574270706624
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 379.30641693540383,
+ "y" : 486.3409666484222
+ }, {
+ "x" : 379.2223123549484,
+ "y" : 473.1312886271626
+ }, {
+ "x" : 374.99130572157446,
+ "y" : 473.00007981434464
+ }, {
+ "x" : 375.0188513635658,
+ "y" : 470.85364198777825
+ }, {
+ "x" : 366.7251858894015,
+ "y" : 470.8973054634407
+ }, {
+ "x" : 366.4915272142971,
+ "y" : 477.84334531147033
+ }, {
+ "x" : 351.9197423851583,
+ "y" : 480.8579466920346
+ }, {
+ "x" : 348.0045589234214,
+ "y" : 485.7219353001565
+ }, {
+ "x" : 351.0649510012008,
+ "y" : 487.46043246239424
+ }, {
+ "x" : 362.9708057111129,
+ "y" : 486.47013669647276
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 412.4379326525377,
+ "y" : 269.97097987961024
+ }, {
+ "x" : 428.52585151803214,
+ "y" : 269.7000643303618
+ }, {
+ "x" : 429.04124008188955,
+ "y" : 299.51348513551056
+ }, {
+ "x" : 412.95340465940535,
+ "y" : 299.78439700230956
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 423.79829335969407,
+ "y" : 227.90659785456955
+ }, {
+ "x" : 428.85173571528867,
+ "y" : 259.12997283414006
+ }, {
+ "x" : 382.6001737783663,
+ "y" : 264.7391973119229
+ }, {
+ "x" : 377.3282479661284,
+ "y" : 243.5443932125345
+ }, {
+ "x" : 388.68164602620527,
+ "y" : 241.28939802665263
+ }, {
+ "x" : 400.67132666159887,
+ "y" : 234.28267452307045
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 905.567084206501,
+ "y" : 484.4871218726039
+ }, {
+ "x" : 910.2039978452958,
+ "y" : 497.9617290571332
+ }, {
+ "x" : 925.9585780813359,
+ "y" : 492.77430146560073
+ }, {
+ "x" : 928.4144472293556,
+ "y" : 457.70915560238063
+ }, {
+ "x" : 914.2341849686345,
+ "y" : 456.3851718036458
+ }, {
+ "x" : 912.2876459264662,
+ "y" : 482.5330781927332
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 438.7909818539629,
+ "y" : 484.270217852667
+ }, {
+ "x" : 440.9747298459988,
+ "y" : 484.18793794792145
+ }, {
+ "x" : 440.7446550091263,
+ "y" : 478.41679858230054
+ }, {
+ "x" : 440.42727480549365,
+ "y" : 477.89431063551456
+ }, {
+ "x" : 439.9302829336375,
+ "y" : 477.62168213445693
+ }, {
+ "x" : 439.19307582709007,
+ "y" : 477.63025244977325
+ }, {
+ "x" : 438.72643862629775,
+ "y" : 478.00396795850247
+ }, {
+ "x" : 438.5605308403028,
+ "y" : 478.5101922964677
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 321.10119284514803,
+ "y" : 261.34670049045235
+ }, {
+ "x" : 333.85749617766123,
+ "y" : 257.6589895952493
+ }, {
+ "x" : 338.39594835345633,
+ "y" : 273.22145594563335
+ }, {
+ "x" : 325.639675177983,
+ "y" : 276.90915594249964
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 301.68727367674,
+ "y" : 279.28579150047153
+ }, {
+ "x" : 291.30265396786854,
+ "y" : 282.6193919684738
+ }, {
+ "x" : 294.25205391750205,
+ "y" : 292.7544202050194
+ }, {
+ "x" : 310.5020850554574,
+ "y" : 291.86555957142264
+ }, {
+ "x" : 322.40323067153804,
+ "y" : 319.5806735176593
+ }, {
+ "x" : 323.25237895105965,
+ "y" : 321.55632073432207
+ }, {
+ "x" : 332.5832472369075,
+ "y" : 318.78815826494247
+ }, {
+ "x" : 320.1619241577573,
+ "y" : 279.0948296012357
+ }, {
+ "x" : 302.9575117502827,
+ "y" : 284.2351709520444
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 712.3435951166321,
+ "y" : 175.03713885322213
+ }, {
+ "x" : 714.1041999650188,
+ "y" : 183.31878192722797
+ }, {
+ "x" : 691.0045335073955,
+ "y" : 188.20371615234762
+ }, {
+ "x" : 689.2360878372565,
+ "y" : 179.93294412177056
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 241.65679635840934,
+ "y" : 394.74932128284127
+ }, {
+ "x" : 241.4675816334784,
+ "y" : 392.4064536355436
+ }, {
+ "x" : 244.42470272490755,
+ "y" : 391.90504598338157
+ }, {
+ "x" : 244.74663094815332,
+ "y" : 394.28575388900936
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 712.4168880205834,
+ "y" : 112.1094062468037
+ }, {
+ "x" : 723.1102720091585,
+ "y" : 110.45588225778192
+ }, {
+ "x" : 722.4740278221434,
+ "y" : 106.36222617141902
+ }, {
+ "x" : 711.7806365638971,
+ "y" : 108.01575154066086
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 863.1655832487158,
+ "y" : 61.19237012043595
+ }, {
+ "x" : 861.2778355712071,
+ "y" : 56.24427171610296
+ }, {
+ "x" : 870.2756963842548,
+ "y" : 52.998410820029676
+ }, {
+ "x" : 872.1849955294747,
+ "y" : 57.9694919269532
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 640.6294564803829,
+ "y" : 81.94202426169068
+ }, {
+ "x" : 654.6167649949202,
+ "y" : 77.75126902665943
+ }, {
+ "x" : 652.2603173729731,
+ "y" : 69.91688534151763
+ }, {
+ "x" : 648.8912954407278,
+ "y" : 70.92715427093208
+ }, {
+ "x" : 645.0016282628058,
+ "y" : 58.000931924209
+ }, {
+ "x" : 634.4134218408726,
+ "y" : 61.17132030054927
+ }, {
+ "x" : 637.2721776610706,
+ "y" : 70.6693005412817
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 770.1794668799266,
+ "y" : 518.1181775378063
+ }, {
+ "x" : 761.3362937186612,
+ "y" : 498.24894077144563
+ }, {
+ "x" : 775.6743377905805,
+ "y" : 492.90209633111954
+ }, {
+ "x" : 783.6532687437721,
+ "y" : 510.8062473293394
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 454.71073680452537,
+ "y" : 120.46590039692819
+ }, {
+ "x" : 453.82318693969864,
+ "y" : 124.71963711362332
+ }, {
+ "x" : 455.4973752241349,
+ "y" : 132.0414115106687
+ }, {
+ "x" : 465.64440590376034,
+ "y" : 130.69168948102742
+ }, {
+ "x" : 465.12789807550143,
+ "y" : 127.45882304664701
+ }, {
+ "x" : 463.80299986712635,
+ "y" : 119.26982641592622
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 231.39829734468367,
+ "y" : 442.16935096215457
+ }, {
+ "x" : 225.86887452669907,
+ "y" : 443.24074452370405
+ }, {
+ "x" : 230.35416777990758,
+ "y" : 466.144642714411
+ }, {
+ "x" : 231.37082906800788,
+ "y" : 471.33025974035263
+ }, {
+ "x" : 236.90022663143463,
+ "y" : 470.25887215696275
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 465.5643593892455,
+ "y" : 427.2479911390692
+ }, {
+ "x" : 465.92036758014,
+ "y" : 427.94980046898127
+ }, {
+ "x" : 466.41619517758954,
+ "y" : 428.4782955907285
+ }, {
+ "x" : 473.96342626947444,
+ "y" : 432.0368075687438
+ }, {
+ "x" : 475.4099821012933,
+ "y" : 431.9631063612178
+ }, {
+ "x" : 476.621694018133,
+ "y" : 431.34744106512517
+ }, {
+ "x" : 495.8768610556144,
+ "y" : 392.69763399939984
+ }, {
+ "x" : 496.0525954493787,
+ "y" : 391.4574090037495
+ }, {
+ "x" : 495.8029737517936,
+ "y" : 390.4698962373659
+ }, {
+ "x" : 479.25440774136223,
+ "y" : 359.9832667596638
+ }, {
+ "x" : 478.25521470804233,
+ "y" : 359.37107137124985
+ }, {
+ "x" : 477.1202689842321,
+ "y" : 359.03246337361634
+ }, {
+ "x" : 467.0934038395062,
+ "y" : 361.910481762141
+ }, {
+ "x" : 466.11993912770413,
+ "y" : 362.7455668365583
+ }, {
+ "x" : 465.53418982203584,
+ "y" : 363.7828469388187
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 225.5672408506507,
+ "y" : 466.82932415697724
+ }, {
+ "x" : 220.55539119290188,
+ "y" : 467.56208019703627
+ }, {
+ "x" : 221.3749736767495,
+ "y" : 473.07485711108893
+ }, {
+ "x" : 226.38681872817688,
+ "y" : 472.3421019082889
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 163.1319223814644,
+ "y" : 525.4800833836198
+ }, {
+ "x" : 166.00422665977385,
+ "y" : 524.8422748874873
+ }, {
+ "x" : 163.76218724029604,
+ "y" : 514.9202304631472
+ }, {
+ "x" : 161.24381169793196,
+ "y" : 515.4364190371707
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 240.11816851072945,
+ "y" : 360.1395498337224
+ }, {
+ "x" : 236.6152990772389,
+ "y" : 360.48910052515566
+ }, {
+ "x" : 236.85693907178938,
+ "y" : 362.82260374818
+ }, {
+ "x" : 229.8132807770744,
+ "y" : 363.54268883448094
+ }, {
+ "x" : 229.1941338388715,
+ "y" : 357.6027271132916
+ }, {
+ "x" : 228.95955210539978,
+ "y" : 355.2805879134685
+ }, {
+ "x" : 233.7800124908099,
+ "y" : 354.7082932321355
+ }, {
+ "x" : 233.76849314419087,
+ "y" : 352.3936519017443
+ }, {
+ "x" : 239.00940984720364,
+ "y" : 351.9356309296563
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 483.5322797038825,
+ "y" : 338.82048078719527
+ }, {
+ "x" : 483.12215852434747,
+ "y" : 337.29350680392236
+ }, {
+ "x" : 483.8012527585961,
+ "y" : 336.13698125630617
+ }, {
+ "x" : 486.07474942773115,
+ "y" : 335.6015595989302
+ }, {
+ "x" : 487.1750489639817,
+ "y" : 336.30616924446076
+ }, {
+ "x" : 487.63347615581006,
+ "y" : 337.94603201095015
+ }, {
+ "x" : 486.8938220506534,
+ "y" : 338.91137250699103
+ }, {
+ "x" : 484.8010202058358,
+ "y" : 339.3861181512475
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 480.32989714457653,
+ "y" : 437.5026813996956
+ }, {
+ "x" : 485.6263226461597,
+ "y" : 436.27904633712023
+ }, {
+ "x" : 486.8156447663205,
+ "y" : 441.4149024616927
+ }, {
+ "x" : 481.51959766005166,
+ "y" : 442.6274226466194
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 492.9659217672888,
+ "y" : 58.97906254418194
+ }, {
+ "x" : 497.0265970581677,
+ "y" : 68.16137166321278
+ }, {
+ "x" : 508.09614518878516,
+ "y" : 63.29349432885647
+ }, {
+ "x" : 504.03548296750523,
+ "y" : 54.11117702815682
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 506.4674599398859,
+ "y" : 91.55497441999614
+ }, {
+ "x" : 514.9414473117795,
+ "y" : 88.82499753311276
+ }, {
+ "x" : 512.6285461001098,
+ "y" : 81.68197560124099
+ }, {
+ "x" : 504.15454979927745,
+ "y" : 84.41195614542812
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 506.1157256345032,
+ "y" : 100.67778494395316
+ }, {
+ "x" : 517.5898391592782,
+ "y" : 97.05856015440077
+ }, {
+ "x" : 515.0588760931278,
+ "y" : 89.09598027728498
+ }, {
+ "x" : 503.58437493548263,
+ "y" : 92.72632414568216
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 520.7818945412291,
+ "y" : 88.69893439114094
+ }, {
+ "x" : 516.0218278628308,
+ "y" : 90.78620539605618
+ }, {
+ "x" : 518.5809422341408,
+ "y" : 99.23928845766932
+ }, {
+ "x" : 524.3073635253822,
+ "y" : 96.75062617100775
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 485.8443967240164,
+ "y" : 71.2897836426273
+ }, {
+ "x" : 489.34467216208577,
+ "y" : 79.20708716660738
+ }, {
+ "x" : 497.5656607293058,
+ "y" : 75.58959553204477
+ }, {
+ "x" : 494.06539365963545,
+ "y" : 67.6722867693752
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 517.6892798789777,
+ "y" : 106.9308908963576
+ }, {
+ "x" : 521.2976919541834,
+ "y" : 105.8841008450836
+ }, {
+ "x" : 520.3640645642299,
+ "y" : 102.6594391670078
+ }, {
+ "x" : 516.7482150280848,
+ "y" : 103.70597955584526
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 484.9392423524987,
+ "y" : 70.53611418418586
+ }, {
+ "x" : 495.4116253852844,
+ "y" : 65.93739777617157
+ }, {
+ "x" : 490.5207468010485,
+ "y" : 54.88019167073071
+ }, {
+ "x" : 480.04834887268953,
+ "y" : 59.4789174022153
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 480.81277082534507,
+ "y" : 85.20626889076084
+ }, {
+ "x" : 488.85225019115023,
+ "y" : 81.89419176522642
+ }, {
+ "x" : 485.9329050008673,
+ "y" : 74.85316093731672
+ }, {
+ "x" : 477.89341808017343,
+ "y" : 78.16524235345423
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 503.60543674684595,
+ "y" : 107.80309901479632
+ }, {
+ "x" : 519.3988743195077,
+ "y" : 102.80496895033866
+ }, {
+ "x" : 517.6214061260689,
+ "y" : 97.22651648987085
+ }, {
+ "x" : 501.8283295626752,
+ "y" : 102.21353813726455
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 491.38394426368177,
+ "y" : 88.28798144403845
+ }, {
+ "x" : 488.91534085560124,
+ "y" : 82.45262745581567
+ }, {
+ "x" : 477.16620470187627,
+ "y" : 87.38667762745172
+ }, {
+ "x" : 479.6344431352336,
+ "y" : 93.23313997499645
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 495.64058704755735,
+ "y" : 80.80976922996342
+ }, {
+ "x" : 494.1949971385766,
+ "y" : 77.53450301010162
+ }, {
+ "x" : 489.4498040431645,
+ "y" : 79.62229662109166
+ }, {
+ "x" : 492.57145917380694,
+ "y" : 88.17218212224543
+ }, {
+ "x" : 511.4585192636587,
+ "y" : 81.72047578543425
+ }, {
+ "x" : 509.1050187498331,
+ "y" : 74.89875042438507
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 98.90295124670956,
+ "y" : 485.55973585508764
+ }, {
+ "x" : 98.82029151741881,
+ "y" : 486.46930823102593
+ }, {
+ "x" : 101.63499714084901,
+ "y" : 496.1880326094106
+ }, {
+ "x" : 89.18199272803031,
+ "y" : 499.95316643547267
+ }, {
+ "x" : 83.23113964800723,
+ "y" : 479.2254233462736
+ }, {
+ "x" : 84.78664919012226,
+ "y" : 478.78811941482127
+ }, {
+ "x" : 84.14124771859497,
+ "y" : 476.28529637586325
+ }, {
+ "x" : 76.55779172934126,
+ "y" : 478.23356386832893
+ }, {
+ "x" : 73.61946047586389,
+ "y" : 466.87515074107796
+ }, {
+ "x" : 92.30711723316927,
+ "y" : 462.0955217797309
+ }, {
+ "x" : 96.0525828646496,
+ "y" : 475.57278664037585
+ }, {
+ "x" : 98.64433927950449,
+ "y" : 484.61644693277776
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 259.98500939190853,
+ "y" : 389.82461933698505
+ }, {
+ "x" : 257.3339959536679,
+ "y" : 369.48576446808875
+ }, {
+ "x" : 273.0320557988016,
+ "y" : 366.6311646318063
+ }, {
+ "x" : 274.1938213814283,
+ "y" : 373.25695144291967
+ }, {
+ "x" : 283.79026821581647,
+ "y" : 371.220849824138
+ }, {
+ "x" : 288.16800503677223,
+ "y" : 370.31105482019484
+ }, {
+ "x" : 287.05590630613733,
+ "y" : 364.64378989767283
+ }, {
+ "x" : 299.80769323161803,
+ "y" : 361.9683527154848
+ }, {
+ "x" : 303.6668397190515,
+ "y" : 380.02247959561646
+ }, {
+ "x" : 286.480044440832,
+ "y" : 383.984064405784
+ }, {
+ "x" : 265.4669277551584,
+ "y" : 388.61814347375184
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 56.05306409089826,
+ "y" : 266.49196728970855
+ }, {
+ "x" : 63.933654182823375,
+ "y" : 265.89990608021617
+ }, {
+ "x" : 65.64643416041508,
+ "y" : 288.2654600040987
+ }, {
+ "x" : 59.847825502743945,
+ "y" : 288.70491289626807
+ }, {
+ "x" : 59.89938317972701,
+ "y" : 289.6078665787354
+ }, {
+ "x" : 58.226118143997155,
+ "y" : 291.7769126435742
+ }, {
+ "x" : 55.78502803307492,
+ "y" : 291.9842146076262
+ }, {
+ "x" : 54.05616406071931,
+ "y" : 290.0458270488307
+ }, {
+ "x" : 53.965188955073245,
+ "y" : 289.20830693282187
+ }, {
+ "x" : 49.76224435609765,
+ "y" : 289.5678421193734
+ }, {
+ "x" : 49.349136473611,
+ "y" : 284.35803447756916
+ }, {
+ "x" : 31.60938493919093,
+ "y" : 285.94306694343686
+ }, {
+ "x" : 31.67248754214961,
+ "y" : 286.7240195982158
+ }, {
+ "x" : 33.244366060127504,
+ "y" : 309.9637957951054
+ }, {
+ "x" : 37.185562002588995,
+ "y" : 309.63996476959437
+ }, {
+ "x" : 37.742362238350324,
+ "y" : 316.33438072633
+ }, {
+ "x" : 38.29169647721574,
+ "y" : 323.2510701576248
+ }, {
+ "x" : 34.09733328106813,
+ "y" : 323.5775248641148
+ }, {
+ "x" : 34.48245941288769,
+ "y" : 329.62085635587573
+ }, {
+ "x" : 44.29768044967204,
+ "y" : 328.82670892961323
+ }, {
+ "x" : 45.055250162025914,
+ "y" : 338.1870301729068
+ }, {
+ "x" : 43.00268578727264,
+ "y" : 338.35175265185535
+ }, {
+ "x" : 42.947192889405414,
+ "y" : 339.1175968721509
+ }, {
+ "x" : 42.80991094256751,
+ "y" : 339.8806945281103
+ }, {
+ "x" : 42.49716586701106,
+ "y" : 340.5488903624937
+ }, {
+ "x" : 41.878077990259044,
+ "y" : 341.2513037249446
+ }, {
+ "x" : 41.17352667963132,
+ "y" : 341.61706124804914
+ }, {
+ "x" : 40.29055540030822,
+ "y" : 341.75430341716856
+ }, {
+ "x" : 39.409852066775784,
+ "y" : 341.60234071314335
+ }, {
+ "x" : 38.62250694888644,
+ "y" : 341.1086009927094
+ }, {
+ "x" : 38.219561604899354,
+ "y" : 340.6945268167183
+ }, {
+ "x" : 37.94488345226273,
+ "y" : 340.22912891954184
+ }, {
+ "x" : 37.6687410636805,
+ "y" : 339.5856626937166
+ }, {
+ "x" : 37.4941099898424,
+ "y" : 338.8009646711871
+ }, {
+ "x" : 34.35187715233769,
+ "y" : 339.051487297751
+ }, {
+ "x" : 34.06680291099474,
+ "y" : 335.57054087519646
+ }, {
+ "x" : 29.05343848466873,
+ "y" : 335.90287572704256
+ }, {
+ "x" : 29.330984248197637,
+ "y" : 334.28777052555233
+ }, {
+ "x" : 28.486455977661535,
+ "y" : 336.1619921978563
+ }, {
+ "x" : 27.75730341230519,
+ "y" : 337.038730350323
+ }, {
+ "x" : 26.94748152012471,
+ "y" : 337.879381256178
+ }, {
+ "x" : 25.5721986037679,
+ "y" : 338.712171359919
+ }, {
+ "x" : 24.53862605721224,
+ "y" : 339.12251398712397
+ }, {
+ "x" : 23.442240233998746,
+ "y" : 339.40835950523615
+ }, {
+ "x" : 21.93099458538927,
+ "y" : 339.4132465738803
+ }, {
+ "x" : 20.75956486305222,
+ "y" : 339.273777349852
+ }, {
+ "x" : 19.530545864487067,
+ "y" : 338.8542197877541
+ }, {
+ "x" : 18.5789022030076,
+ "y" : 338.1546947741881
+ }, {
+ "x" : 17.806826690677553,
+ "y" : 337.42782064247876
+ }, {
+ "x" : 17.082348477793857,
+ "y" : 336.61353521142155
+ }, {
+ "x" : 16.561983539024368,
+ "y" : 335.70596751663834
+ }, {
+ "x" : 16.146059067337774,
+ "y" : 335.0133043266833
+ }, {
+ "x" : 15.878123414819129,
+ "y" : 334.1253385664895
+ }, {
+ "x" : 10.131988458102569,
+ "y" : 334.55547446012497
+ }, {
+ "x" : 9.750058444449678,
+ "y" : 329.5247371234
+ }, {
+ "x" : 7.257312762434594,
+ "y" : 329.71919816266745
+ }, {
+ "x" : 6.952208542497829,
+ "y" : 325.7257767217234
+ }, {
+ "x" : 5.846920694457367,
+ "y" : 325.8333077086136
+ }, {
+ "x" : 4.761924664489925,
+ "y" : 312.03377754148096
+ }, {
+ "x" : 4.5381162979174405,
+ "y" : 312.04851576685905
+ }, {
+ "x" : 4.090499569778331,
+ "y" : 312.0779922408983
+ }, {
+ "x" : 3.1796490700216964,
+ "y" : 312.1586733562872
+ }, {
+ "x" : 0.5969252043869346,
+ "y" : 312.37236920092255
+ }, {
+ "x" : 0.3949744353303686,
+ "y" : 309.96233125030994
+ }, {
+ "x" : 0.31590500846505165,
+ "y" : 308.99169780127704
+ }, {
+ "x" : 0.28435185039415956,
+ "y" : 308.6012216899544
+ }, {
+ "x" : 0.19526213395874947,
+ "y" : 307.48561132047325
+ }, {
+ "x" : 0.0,
+ "y" : 305.09805037174374
+ }, {
+ "x" : 2.597597905085422,
+ "y" : 304.8848534403369
+ }, {
+ "x" : 3.4857701705768704,
+ "y" : 304.81453696265817
+ }, {
+ "x" : 3.9486314113019034,
+ "y" : 304.7744460301474
+ }, {
+ "x" : 4.807062071166001,
+ "y" : 304.70313121471554
+ }, {
+ "x" : 7.4344021182041615,
+ "y" : 304.4909350182861
+ }, {
+ "x" : 7.630034351488575,
+ "y" : 306.86738263536245
+ }, {
+ "x" : 7.707610061974265,
+ "y" : 307.8824708806351
+ }, {
+ "x" : 7.746224996866658,
+ "y" : 308.28431035391986
+ }, {
+ "x" : 7.83048977679573,
+ "y" : 309.3218755777925
+ }, {
+ "x" : 8.03131806931924,
+ "y" : 311.76525487098843
+ }, {
+ "x" : 8.926897409954108,
+ "y" : 311.9177118735388
+ }, {
+ "x" : 8.301387721090578,
+ "y" : 304.3865293674171
+ }, {
+ "x" : 7.01880768139381,
+ "y" : 288.93368877563626
+ }, {
+ "x" : 6.3045738090295345,
+ "y" : 280.2757827369496
+ }, {
+ "x" : 11.716540371533483,
+ "y" : 279.8232938805595
+ }, {
+ "x" : 17.03965588938445,
+ "y" : 279.3567006327212
+ }, {
+ "x" : 18.88367425953038,
+ "y" : 279.1960916444659
+ }, {
+ "x" : 20.608352458453737,
+ "y" : 279.04260240495205
+ }, {
+ "x" : 25.865297227166593,
+ "y" : 278.5515430951491
+ }, {
+ "x" : 30.98467332473956,
+ "y" : 278.1671311883256
+ }, {
+ "x" : 31.24004194769077,
+ "y" : 281.42455539200455
+ }, {
+ "x" : 44.22996346873697,
+ "y" : 280.30308355763555
+ }, {
+ "x" : 49.01549155858811,
+ "y" : 279.88522454723716
+ }, {
+ "x" : 48.0226473773364,
+ "y" : 267.1123864715919
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 151.73384146334138,
+ "y" : 326.82794589176774
+ }, {
+ "x" : 149.96765326405875,
+ "y" : 313.59516827296466
+ }, {
+ "x" : 179.97135319304653,
+ "y" : 309.89696857333183
+ }, {
+ "x" : 179.75155067420565,
+ "y" : 308.0203781519085
+ }, {
+ "x" : 193.93642663571518,
+ "y" : 306.3385880542919
+ }, {
+ "x" : 194.0871686200844,
+ "y" : 307.6120426924899
+ }, {
+ "x" : 219.93107262498233,
+ "y" : 304.5419604089111
+ }, {
+ "x" : 222.45351937739179,
+ "y" : 325.6107946727425
+ }, {
+ "x" : 196.16877831495367,
+ "y" : 328.73280178103596
+ }, {
+ "x" : 199.24895839521196,
+ "y" : 354.4711254648864
+ }, {
+ "x" : 179.36189285223372,
+ "y" : 356.829114664346
+ }, {
+ "x" : 175.9529416388832,
+ "y" : 331.3467878969386
+ }, {
+ "x" : 174.93544629774988,
+ "y" : 323.74677012488246
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 801.0866349062417,
+ "y" : 402.3897269302979
+ }, {
+ "x" : 793.4789193924516,
+ "y" : 404.60327892564237
+ }, {
+ "x" : 794.2199366041459,
+ "y" : 407.13167585711926
+ }, {
+ "x" : 783.2597430746537,
+ "y" : 410.3114689635113
+ }, {
+ "x" : 782.5190963121131,
+ "y" : 407.77195990271866
+ }, {
+ "x" : 774.7991175923962,
+ "y" : 410.00400390755385
+ }, {
+ "x" : 775.2593291911762,
+ "y" : 411.5883239777759
+ }, {
+ "x" : 757.6689260513522,
+ "y" : 416.69203762803227
+ }, {
+ "x" : 754.8329556937097,
+ "y" : 406.9722107844427
+ }, {
+ "x" : 772.4304454701487,
+ "y" : 401.87985204160213
+ }, {
+ "x" : 798.7179952161387,
+ "y" : 394.265563338995
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 843.005055577145,
+ "y" : 409.3774063521996
+ }, {
+ "x" : 839.0903064094018,
+ "y" : 395.6713170213625
+ }, {
+ "x" : 830.2742354519432,
+ "y" : 398.1778635960072
+ }, {
+ "x" : 826.7260444369167,
+ "y" : 385.74141639564186
+ }, {
+ "x" : 840.2394378961762,
+ "y" : 381.9023364391178
+ }, {
+ "x" : 841.7173163796542,
+ "y" : 387.08139355666935
+ }, {
+ "x" : 848.3836668001022,
+ "y" : 385.1921993792057
+ }, {
+ "x" : 846.7925098802662,
+ "y" : 379.61989993974566
+ }, {
+ "x" : 901.8973971427185,
+ "y" : 363.9989999020472
+ }, {
+ "x" : 928.2798608355224,
+ "y" : 356.01019250415266
+ }, {
+ "x" : 930.8982568931533,
+ "y" : 382.10069984570146
+ }, {
+ "x" : 915.7993792181369,
+ "y" : 383.9501076983288
+ }, {
+ "x" : 914.9898144043982,
+ "y" : 375.5113131990656
+ }, {
+ "x" : 905.7589178760536,
+ "y" : 377.5141964573413
+ }, {
+ "x" : 906.7899319704156,
+ "y" : 381.1538967387751
+ }, {
+ "x" : 892.8782861309592,
+ "y" : 385.1017786869779
+ }, {
+ "x" : 891.6526316500967,
+ "y" : 380.8324433816597
+ }, {
+ "x" : 885.0316207235446,
+ "y" : 382.7008650228381
+ }, {
+ "x" : 892.7602466589306,
+ "y" : 409.78705700766295
+ }, {
+ "x" : 868.8079175625462,
+ "y" : 416.5784456022084
+ }, {
+ "x" : 864.9274136521854,
+ "y" : 402.9624997265637
+ }, {
+ "x" : 876.1631573358318,
+ "y" : 399.7810265868902
+ }, {
+ "x" : 872.328330752207,
+ "y" : 386.35576340090483
+ }, {
+ "x" : 856.267358666053,
+ "y" : 390.9099468998611
+ }, {
+ "x" : 860.148268478224,
+ "y" : 404.5147722447291
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 818.6098158422392,
+ "y" : 335.69985633250326
+ }, {
+ "x" : 820.2598883666797,
+ "y" : 342.17536105029285
+ }, {
+ "x" : 847.6840791301802,
+ "y" : 333.9765292266384
+ }, {
+ "x" : 850.7467192392796,
+ "y" : 346.4633727641776
+ }, {
+ "x" : 841.6019723142963,
+ "y" : 348.78080212604254
+ }, {
+ "x" : 840.3215828847606,
+ "y" : 343.2634903937578
+ }, {
+ "x" : 821.4675215805182,
+ "y" : 348.7472115661949
+ }, {
+ "x" : 823.3521452571731,
+ "y" : 355.3307628398761
+ }, {
+ "x" : 821.3364693277981,
+ "y" : 359.2571375621483
+ }, {
+ "x" : 823.0056409675162,
+ "y" : 360.97123534139246
+ }, {
+ "x" : 827.3597503658384,
+ "y" : 359.88302934449166
+ }, {
+ "x" : 835.5801783906063,
+ "y" : 357.8236942132935
+ }, {
+ "x" : 834.4225764553994,
+ "y" : 353.30076431762427
+ }, {
+ "x" : 841.8611774640158,
+ "y" : 351.24845351465046
+ }, {
+ "x" : 845.8742079873336,
+ "y" : 367.33888323418796
+ }, {
+ "x" : 838.03218264319,
+ "y" : 369.65574137307703
+ }, {
+ "x" : 830.2727025880013,
+ "y" : 371.9531406397
+ }, {
+ "x" : 812.8821268356405,
+ "y" : 377.0856853276491
+ }, {
+ "x" : 806.214762553107,
+ "y" : 353.17302181199193
+ }, {
+ "x" : 802.4897656028625,
+ "y" : 339.796026407741
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 31.37113816232886,
+ "y" : 459.7374119721353
+ }, {
+ "x" : 18.263294100761414,
+ "y" : 461.7227725451812
+ }, {
+ "x" : 16.674316581571475,
+ "y" : 450.5209671324119
+ }, {
+ "x" : 53.49787989712786,
+ "y" : 444.3141057891771
+ }, {
+ "x" : 55.6838977803709,
+ "y" : 443.942473414354
+ }, {
+ "x" : 57.413753966917284,
+ "y" : 443.63340519554913
+ }, {
+ "x" : 70.08447190828156,
+ "y" : 441.58894439134747
+ }, {
+ "x" : 87.15620880597271,
+ "y" : 439.0470191054046
+ }, {
+ "x" : 91.20701741508674,
+ "y" : 454.5149999111891
+ }, {
+ "x" : 79.54853478795849,
+ "y" : 457.2276061233133
+ }, {
+ "x" : 78.69469076185487,
+ "y" : 453.8388125235215
+ }, {
+ "x" : 72.08397153473925,
+ "y" : 454.08407248649746
+ }, {
+ "x" : 62.44475910044275,
+ "y" : 455.1844786647707
+ }, {
+ "x" : 59.080247757257894,
+ "y" : 455.62779028341174
+ }, {
+ "x" : 57.212111870991066,
+ "y" : 455.8432040689513
+ }, {
+ "x" : 55.09488150977995,
+ "y" : 456.16151477675885
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 308.79423950985074,
+ "y" : 424.3326620692387
+ }, {
+ "x" : 296.9047780846013,
+ "y" : 426.6031453059986
+ }, {
+ "x" : 294.8652716106735,
+ "y" : 415.97577179409564
+ }, {
+ "x" : 291.55384058423806,
+ "y" : 416.60988012421876
+ }, {
+ "x" : 281.23030250915326,
+ "y" : 418.5770121086389
+ }, {
+ "x" : 281.5033090596553,
+ "y" : 419.9769701650366
+ }, {
+ "x" : 275.76491798856296,
+ "y" : 421.0635435683653
+ }, {
+ "x" : 278.8121547255432,
+ "y" : 436.92074030358344
+ }, {
+ "x" : 266.2338343455922,
+ "y" : 439.31276417244226
+ }, {
+ "x" : 260.3610251559876,
+ "y" : 408.7518446929753
+ }, {
+ "x" : 278.67112505156547,
+ "y" : 405.2507523559034
+ }, {
+ "x" : 288.99468554125633,
+ "y" : 403.2836151672527
+ }, {
+ "x" : 304.1956315760035,
+ "y" : 400.3790111616254
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 137.70828626304865,
+ "y" : 279.0146840326488
+ }, {
+ "x" : 136.33273320551962,
+ "y" : 258.36273166164756
+ }, {
+ "x" : 153.01039894588757,
+ "y" : 257.1540007805452
+ }, {
+ "x" : 158.7707544779405,
+ "y" : 256.7467331485823
+ }, {
+ "x" : 172.06783592840657,
+ "y" : 255.7916340008378
+ }, {
+ "x" : 173.3196047397796,
+ "y" : 273.03482188191265
+ }, {
+ "x" : 154.26185073948,
+ "y" : 274.4082966595888
+ }, {
+ "x" : 154.51789683417883,
+ "y" : 277.6435008943081
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 207.53360147448257,
+ "y" : 292.464998325333
+ }, {
+ "x" : 206.0004271187354,
+ "y" : 280.4972910946235
+ }, {
+ "x" : 214.31347342696972,
+ "y" : 279.44154398702085
+ }, {
+ "x" : 213.6291361169424,
+ "y" : 274.1113373255357
+ }, {
+ "x" : 211.83715508761816,
+ "y" : 274.27363303955644
+ }, {
+ "x" : 211.13591280323453,
+ "y" : 267.67446996830404
+ }, {
+ "x" : 201.48409296572208,
+ "y" : 268.69635513518006
+ }, {
+ "x" : 201.32520298217423,
+ "y" : 267.22235463466495
+ }, {
+ "x" : 193.34867495507933,
+ "y" : 267.78875104524195
+ }, {
+ "x" : 193.994149037404,
+ "y" : 276.9339398294687
+ }, {
+ "x" : 183.354215030442,
+ "y" : 277.6778704021126
+ }, {
+ "x" : 181.8356490273727,
+ "y" : 254.86260591074824
+ }, {
+ "x" : 193.81998799345456,
+ "y" : 253.98583124484867
+ }, {
+ "x" : 200.0658997159917,
+ "y" : 253.52816536463797
+ }, {
+ "x" : 221.80201308522373,
+ "y" : 252.200356150046
+ }, {
+ "x" : 224.96914018597454,
+ "y" : 254.7545768050477
+ }, {
+ "x" : 226.10676731704734,
+ "y" : 264.09433376509696
+ }, {
+ "x" : 227.16797194164246,
+ "y" : 272.38565798010677
+ }, {
+ "x" : 229.3850539238192,
+ "y" : 289.69469448924065
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 272.85372224252205,
+ "y" : 346.25304833892733
+ }, {
+ "x" : 274.4942232547328,
+ "y" : 357.9017324130982
+ }, {
+ "x" : 262.60288846155163,
+ "y" : 359.5602886714041
+ }, {
+ "x" : 256.3354492234066,
+ "y" : 360.439952599816
+ }, {
+ "x" : 254.39237559202593,
+ "y" : 346.0551790362224
+ }, {
+ "x" : 252.49464837973937,
+ "y" : 331.64967911317945
+ }, {
+ "x" : 258.55093796073925,
+ "y" : 330.8519203765318
+ }, {
+ "x" : 271.2386639341712,
+ "y" : 329.197875155136
+ }, {
+ "x" : 272.5500797360437,
+ "y" : 339.1220548246056
+ }, {
+ "x" : 265.74652188248,
+ "y" : 340.0059373676777
+ }, {
+ "x" : 266.3402284423355,
+ "y" : 344.4875141819939
+ }, {
+ "x" : 266.68367345118895,
+ "y" : 347.11372385080904
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 59.061824632808566,
+ "y" : 53.87124821357429
+ }, {
+ "x" : 58.77877097227611,
+ "y" : 48.99959594197571
+ }, {
+ "x" : 58.421873737475835,
+ "y" : 43.001718398183584
+ }, {
+ "x" : 64.80628767365124,
+ "y" : 42.63755259569734
+ }, {
+ "x" : 63.86919550911989,
+ "y" : 26.65111991018057
+ }, {
+ "x" : 63.288796360604465,
+ "y" : 21.1019105669111
+ }, {
+ "x" : 57.48544126399793,
+ "y" : 21.674736858345568
+ }, {
+ "x" : 55.761431000195444,
+ "y" : 21.80598969850689
+ }, {
+ "x" : 56.94955417653546,
+ "y" : 37.41143239848316
+ }, {
+ "x" : 45.93406497850083,
+ "y" : 38.24316804856062
+ }, {
+ "x" : 44.73327982169576,
+ "y" : 22.57054708711803
+ }, {
+ "x" : 39.26270100707188,
+ "y" : 22.987672746181488
+ }, {
+ "x" : 38.31208496238105,
+ "y" : 10.505545538850129
+ }, {
+ "x" : 45.84020785137545,
+ "y" : 9.77921578567475
+ }, {
+ "x" : 56.587689351057634,
+ "y" : 8.949603195302188
+ }, {
+ "x" : 65.73461184068583,
+ "y" : 8.121892059221864
+ }, {
+ "x" : 74.77666131732985,
+ "y" : 7.535449703224003
+ }, {
+ "x" : 75.76583679579198,
+ "y" : 25.960271320305765
+ }, {
+ "x" : 77.35062183381524,
+ "y" : 52.805375658906996
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 106.26619674637914,
+ "y" : 44.0856310762465
+ }, {
+ "x" : 90.02110294194426,
+ "y" : 45.03090782649815
+ }, {
+ "x" : 89.12857865809929,
+ "y" : 29.93605934921652
+ }, {
+ "x" : 87.41088555660099,
+ "y" : 30.100893321447074
+ }, {
+ "x" : 86.25027972762473,
+ "y" : 6.585637681186199
+ }, {
+ "x" : 94.95103518746328,
+ "y" : 5.965512098744512
+ }, {
+ "x" : 103.08517891564406,
+ "y" : 5.370872991159558
+ }, {
+ "x" : 128.2557527506724,
+ "y" : 3.5460708690807223
+ }, {
+ "x" : 128.81982471817173,
+ "y" : 13.789999093860388
+ }, {
+ "x" : 128.99756989930756,
+ "y" : 16.25486070662737
+ }, {
+ "x" : 129.11265433346853,
+ "y" : 17.482608947902918
+ }, {
+ "x" : 129.59673113084864,
+ "y" : 25.454105127602816
+ }, {
+ "x" : 130.21965918142814,
+ "y" : 42.809654952026904
+ }, {
+ "x" : 117.714800467249,
+ "y" : 43.43545331247151
+ }, {
+ "x" : 116.95357212913223,
+ "y" : 25.763727873563766
+ }, {
+ "x" : 116.85313630499877,
+ "y" : 23.434978167526424
+ }, {
+ "x" : 104.17086982587352,
+ "y" : 24.243994670920074
+ }, {
+ "x" : 99.56768806581385,
+ "y" : 24.54555692989379
+ }, {
+ "x" : 99.91392937907949,
+ "y" : 29.308073348365724
+ }, {
+ "x" : 105.37408800353296,
+ "y" : 28.979665282182395
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 550.8282980757067,
+ "y" : 558.2260448858142
+ }, {
+ "x" : 546.1936010954669,
+ "y" : 541.3472135365009
+ }, {
+ "x" : 556.8276935828617,
+ "y" : 538.3340286547318
+ }, {
+ "x" : 558.6185184938367,
+ "y" : 543.0673623187467
+ }, {
+ "x" : 562.5229959952412,
+ "y" : 531.8945563538
+ }, {
+ "x" : 570.722803336801,
+ "y" : 533.9731374718249
+ }, {
+ "x" : 566.9206305551343,
+ "y" : 548.0755915539339
+ }, {
+ "x" : 565.1082847272046,
+ "y" : 554.8127090232447
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 556.8276935828617,
+ "y" : 538.3340286547318
+ }, {
+ "x" : 546.1936010954669,
+ "y" : 541.3472135365009
+ }, {
+ "x" : 540.5949878338724,
+ "y" : 522.3664483055472
+ }, {
+ "x" : 557.4160268204287,
+ "y" : 517.3252018047497
+ }, {
+ "x" : 570.8835898053367,
+ "y" : 513.2836992917582
+ }, {
+ "x" : 574.8922347873449,
+ "y" : 518.4700172720477
+ }, {
+ "x" : 570.722803336801,
+ "y" : 533.9731374718249
+ }, {
+ "x" : 562.5229959952412,
+ "y" : 531.8945563538
+ }, {
+ "x" : 564.8040820988826,
+ "y" : 525.3846216248348
+ }, {
+ "x" : 559.7145515601151,
+ "y" : 525.9920758400112
+ }, {
+ "x" : 553.9314361992292,
+ "y" : 527.744437392801
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 388.5223238073522,
+ "y" : 275.8977641938254
+ }, {
+ "x" : 395.90956955053844,
+ "y" : 273.5983734410256
+ }, {
+ "x" : 402.3162666873541,
+ "y" : 295.57683730777353
+ }, {
+ "x" : 394.87404853629414,
+ "y" : 297.7408540742472
+ }, {
+ "x" : 393.7219429629622,
+ "y" : 293.70777495391667
+ }, {
+ "x" : 378.72153981076553,
+ "y" : 297.9429290825501
+ }, {
+ "x" : 380.65831779676955,
+ "y" : 304.7617077482864
+ }, {
+ "x" : 367.86714591272175,
+ "y" : 308.3813799545169
+ }, {
+ "x" : 365.6836548971478,
+ "y" : 300.70871375035495
+ }, {
+ "x" : 342.62343688774854,
+ "y" : 307.9884740905836
+ }, {
+ "x" : 341.02100307354704,
+ "y" : 308.49089106637985
+ }, {
+ "x" : 336.09532453352585,
+ "y" : 292.2700748266652
+ }, {
+ "x" : 337.8966502721887,
+ "y" : 291.82997656427324
+ }, {
+ "x" : 367.6128986286931,
+ "y" : 284.07312790397555
+ }, {
+ "x" : 368.21405145479366,
+ "y" : 286.1183240329847
+ }, {
+ "x" : 389.5822212342173,
+ "y" : 280.01674961671233
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 254.30452275881544,
+ "y" : 84.27449463959783
+ }, {
+ "x" : 259.84550054976717,
+ "y" : 82.86970988381654
+ }, {
+ "x" : 253.0111693663057,
+ "y" : 56.09281325340271
+ }, {
+ "x" : 261.70582244568504,
+ "y" : 53.881689875386655
+ }, {
+ "x" : 272.2176937952172,
+ "y" : 95.04604572523385
+ }, {
+ "x" : 262.1117366985418,
+ "y" : 97.61024994030595
+ }, {
+ "x" : 255.56467629084364,
+ "y" : 99.270493125543
+ }, {
+ "x" : 254.90398457064293,
+ "y" : 99.43742925394326
+ }, {
+ "x" : 244.97385027667042,
+ "y" : 102.30798105336726
+ }, {
+ "x" : 232.7794737307122,
+ "y" : 105.6587545843795
+ }, {
+ "x" : 231.2673868908314,
+ "y" : 87.08278135862201
+ }, {
+ "x" : 230.4592366637662,
+ "y" : 74.58313086815178
+ }, {
+ "x" : 229.56949745758902,
+ "y" : 60.745592939667404
+ }, {
+ "x" : 240.49871590500697,
+ "y" : 60.04482607264072
+ }, {
+ "x" : 242.203991531278,
+ "y" : 86.38226898945868
+ }, {
+ "x" : 242.41846942156553,
+ "y" : 91.29614000581205
+ }, {
+ "x" : 252.15488284197636,
+ "y" : 88.65272141154855
+ }, {
+ "x" : 255.22559906286187,
+ "y" : 87.87697314098477
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 831.3256847724551,
+ "y" : 247.34080896619707
+ }, {
+ "x" : 818.7333965572761,
+ "y" : 249.24163054674864
+ }, {
+ "x" : 818.2872778399615,
+ "y" : 246.3560069911182
+ }, {
+ "x" : 815.3545694132335,
+ "y" : 246.79119126591831
+ }, {
+ "x" : 812.8727423446253,
+ "y" : 230.5410211859271
+ }, {
+ "x" : 810.922012324445,
+ "y" : 217.7467814963311
+ }, {
+ "x" : 809.5090748028597,
+ "y" : 208.43094926793128
+ }, {
+ "x" : 812.4421766446903,
+ "y" : 207.98464784864336
+ }, {
+ "x" : 813.7586222721729,
+ "y" : 216.62965067569166
+ }, {
+ "x" : 816.9593513144646,
+ "y" : 237.61047812737525
+ }, {
+ "x" : 829.5516638926929,
+ "y" : 235.7096520010382
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 837.8116170098074,
+ "y" : 324.3197881402448
+ }, {
+ "x" : 801.0159575326834,
+ "y" : 334.4947308283299
+ }, {
+ "x" : 796.8723322781734,
+ "y" : 319.6238314472139
+ }, {
+ "x" : 793.1799658932723,
+ "y" : 306.38146109785885
+ }, {
+ "x" : 820.282876705518,
+ "y" : 298.88374224863946
+ }, {
+ "x" : 823.9677525719162,
+ "y" : 312.1258808095008
+ }, {
+ "x" : 833.6680757493014,
+ "y" : 309.44885993376374
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 759.7760036576074,
+ "y" : 370.5222234101966
+ }, {
+ "x" : 769.6408957322128,
+ "y" : 367.8172698710114
+ }, {
+ "x" : 771.6904168127803,
+ "y" : 375.2519573075697
+ }, {
+ "x" : 774.5904319784604,
+ "y" : 374.4596115471795
+ }, {
+ "x" : 782.3516974342056,
+ "y" : 372.32909290492535
+ }, {
+ "x" : 779.002207177924,
+ "y" : 360.17753862030804
+ }, {
+ "x" : 777.9934144077124,
+ "y" : 356.5386157054454
+ }, {
+ "x" : 770.1871432618937,
+ "y" : 358.6787505960092
+ }, {
+ "x" : 768.1903521772474,
+ "y" : 351.4461149573326
+ }, {
+ "x" : 789.1597974593751,
+ "y" : 345.6997461747378
+ }, {
+ "x" : 792.1653506208677,
+ "y" : 356.5713151646778
+ }, {
+ "x" : 798.9972355345963,
+ "y" : 381.3462300086394
+ }, {
+ "x" : 778.0728918735404,
+ "y" : 387.08294997457415
+ }, {
+ "x" : 765.3080207038438,
+ "y" : 390.58023703377694
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 746.5212994567119,
+ "y" : 261.1157946754247
+ }, {
+ "x" : 744.2244221516885,
+ "y" : 250.85783701669425
+ }, {
+ "x" : 754.1771215259796,
+ "y" : 248.64536113943905
+ }, {
+ "x" : 769.3194101856789,
+ "y" : 245.29492458608001
+ }, {
+ "x" : 771.3520421629073,
+ "y" : 244.84050383139402
+ }, {
+ "x" : 770.8276844962966,
+ "y" : 242.50856234598905
+ }, {
+ "x" : 775.6424972098321,
+ "y" : 241.44696782901883
+ }, {
+ "x" : 776.159792185179,
+ "y" : 243.76754551008344
+ }, {
+ "x" : 782.8272881146986,
+ "y" : 242.2899779053405
+ }, {
+ "x" : 781.857692061807,
+ "y" : 237.9291691109538
+ }, {
+ "x" : 786.5977812188212,
+ "y" : 236.8761908635497
+ }, {
+ "x" : 787.6004304965027,
+ "y" : 241.3605040209368
+ }, {
+ "x" : 792.7152916775085,
+ "y" : 240.2311543310061
+ }, {
+ "x" : 791.7252692168113,
+ "y" : 235.8140234304592
+ }, {
+ "x" : 796.8100194915896,
+ "y" : 234.6947882771492
+ }, {
+ "x" : 797.8182236377615,
+ "y" : 239.23492235783488
+ }, {
+ "x" : 804.3507683083881,
+ "y" : 237.78620853368193
+ }, {
+ "x" : 803.3548172537703,
+ "y" : 233.3243701113388
+ }, {
+ "x" : 808.0573628097773,
+ "y" : 232.28126973845065
+ }, {
+ "x" : 809.0722449312452,
+ "y" : 236.84388400334865
+ }, {
+ "x" : 811.8845487436047,
+ "y" : 236.22661627084017
+ }, {
+ "x" : 814.3220398153644,
+ "y" : 247.16805207636207
+ }, {
+ "x" : 803.8294552916195,
+ "y" : 249.4957391982898
+ }, {
+ "x" : 781.9743036380969,
+ "y" : 254.34436856210232
+ }, {
+ "x" : 771.8420243747532,
+ "y" : 256.5841218549758
+ }, {
+ "x" : 771.6088108572876,
+ "y" : 255.55264275800437
+ }, {
+ "x" : 766.8765504370676,
+ "y" : 256.5947699416429
+ }, {
+ "x" : 756.4661724375328,
+ "y" : 258.9141862625256
+ }, {
+ "x" : 752.3938607000746,
+ "y" : 259.811674490571
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 394.0742543609813,
+ "y" : 225.7049315078184
+ }, {
+ "x" : 384.56217504199594,
+ "y" : 228.32226734049618
+ }, {
+ "x" : 379.6312920721248,
+ "y" : 210.26540892384946
+ }, {
+ "x" : 391.6377565913135,
+ "y" : 207.18678994011134
+ }, {
+ "x" : 396.0379870623583,
+ "y" : 206.05530098453164
+ }, {
+ "x" : 415.9697953556897,
+ "y" : 200.61756444629282
+ }, {
+ "x" : 421.1073624060955,
+ "y" : 218.28086962923408
+ }, {
+ "x" : 412.47044855332933,
+ "y" : 220.77183907758445
+ }, {
+ "x" : 411.48486507928465,
+ "y" : 216.87787458766252
+ }, {
+ "x" : 400.04458743636496,
+ "y" : 220.16464529093355
+ }, {
+ "x" : 393.2045953137567,
+ "y" : 222.12640532385558
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 159.03466127766296,
+ "y" : 211.8947202982381
+ }, {
+ "x" : 172.5891025310848,
+ "y" : 211.0372731499374
+ }, {
+ "x" : 173.587572075543,
+ "y" : 226.7365303579718
+ }, {
+ "x" : 174.1232889040839,
+ "y" : 236.71249175723642
+ }, {
+ "x" : 157.34444618818816,
+ "y" : 237.82875576801598
+ }, {
+ "x" : 149.52216415759176,
+ "y" : 238.45602908357978
+ }, {
+ "x" : 140.4967942731455,
+ "y" : 239.22091194055974
+ }, {
+ "x" : 138.78322783391923,
+ "y" : 213.78446128685027
+ }, {
+ "x" : 150.55496416555252,
+ "y" : 213.03396321460605
+ }, {
+ "x" : 151.14548475050833,
+ "y" : 222.26630502101034
+ }, {
+ "x" : 156.2329433587147,
+ "y" : 221.94768638908863
+ }, {
+ "x" : 159.66448798507918,
+ "y" : 221.72919982206076
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 131.15306640719064,
+ "y" : 282.25470268167555
+ }, {
+ "x" : 120.94553333660588,
+ "y" : 282.9798963610083
+ }, {
+ "x" : 120.19899302779231,
+ "y" : 272.62969716638327
+ }, {
+ "x" : 117.50508539751172,
+ "y" : 272.8284803368151
+ }, {
+ "x" : 104.43336360296234,
+ "y" : 273.724516059272
+ }, {
+ "x" : 104.52312220772728,
+ "y" : 280.5812733788043
+ }, {
+ "x" : 104.02697194193024,
+ "y" : 284.71468155272305
+ }, {
+ "x" : 103.22313560871407,
+ "y" : 285.15498039871454
+ }, {
+ "x" : 103.38457007263787,
+ "y" : 287.21875107381493
+ }, {
+ "x" : 105.44680000748485,
+ "y" : 287.210140587762
+ }, {
+ "x" : 105.70797400851734,
+ "y" : 288.5206798259169
+ }, {
+ "x" : 111.64885735407006,
+ "y" : 288.9427703525871
+ }, {
+ "x" : 111.9743329482153,
+ "y" : 292.99251672811806
+ }, {
+ "x" : 112.6098586252192,
+ "y" : 294.4602725720033
+ }, {
+ "x" : 112.47694989398587,
+ "y" : 298.4167372249067
+ }, {
+ "x" : 113.94443256757222,
+ "y" : 300.379741798155
+ }, {
+ "x" : 113.98595216416288,
+ "y" : 309.1152087561786
+ }, {
+ "x" : 108.98073794646189,
+ "y" : 309.4254967113957
+ }, {
+ "x" : 109.00655864097644,
+ "y" : 310.87277088686824
+ }, {
+ "x" : 103.8756911936216,
+ "y" : 311.1565897986293
+ }, {
+ "x" : 103.76282210787758,
+ "y" : 310.0846826341003
+ }, {
+ "x" : 93.79287377244327,
+ "y" : 311.051552628167
+ }, {
+ "x" : 92.7141155730933,
+ "y" : 310.14747365843505
+ }, {
+ "x" : 91.92720982420724,
+ "y" : 298.33839191123843
+ }, {
+ "x" : 91.28458685358055,
+ "y" : 297.08179812319577
+ }, {
+ "x" : 91.99265941372141,
+ "y" : 295.50340832583606
+ }, {
+ "x" : 91.28423092141747,
+ "y" : 280.6928882524371
+ }, {
+ "x" : 90.37011071294546,
+ "y" : 272.00599790457636
+ }, {
+ "x" : 89.48350685602054,
+ "y" : 268.70511445216835
+ }, {
+ "x" : 88.68442202941515,
+ "y" : 267.00934403948486
+ }, {
+ "x" : 88.16001509712078,
+ "y" : 265.77897401712835
+ }, {
+ "x" : 88.7111377803376,
+ "y" : 264.6626125825569
+ }, {
+ "x" : 90.05782554042526,
+ "y" : 263.7954970514402
+ }, {
+ "x" : 90.49402669107076,
+ "y" : 262.99793560337275
+ }, {
+ "x" : 92.0124471152667,
+ "y" : 262.33686040714383
+ }, {
+ "x" : 99.7654959007632,
+ "y" : 261.99646664597094
+ }, {
+ "x" : 103.51670692220796,
+ "y" : 262.01120976824313
+ }, {
+ "x" : 103.82209166069515,
+ "y" : 263.5568841341883
+ }, {
+ "x" : 105.3326120423153,
+ "y" : 263.57424550224096
+ }, {
+ "x" : 105.7287443705136,
+ "y" : 262.196776480414
+ }, {
+ "x" : 107.40545879327692,
+ "y" : 262.1418376052752
+ }, {
+ "x" : 108.08821588451974,
+ "y" : 263.5332957236096
+ }, {
+ "x" : 110.83790887135547,
+ "y" : 263.22511978354305
+ }, {
+ "x" : 117.10314955411013,
+ "y" : 262.63449929561466
+ }, {
+ "x" : 129.81432760180905,
+ "y" : 261.3925919830799
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 319.805164435762,
+ "y" : 27.16278929915279
+ }, {
+ "x" : 338.3941889166599,
+ "y" : 21.824240031652153
+ }, {
+ "x" : 338.6225299946964,
+ "y" : 17.24791355058551
+ }, {
+ "x" : 345.7679789738031,
+ "y" : 15.285221950151026
+ }, {
+ "x" : 350.0641837741714,
+ "y" : 31.19557297695428
+ }, {
+ "x" : 365.7783688524505,
+ "y" : 26.784040399827063
+ }, {
+ "x" : 369.46903770044446,
+ "y" : 39.669961052946746
+ }, {
+ "x" : 353.47153716813773,
+ "y" : 44.31673015002161
+ }, {
+ "x" : 328.4863064250676,
+ "y" : 51.69875626079738
+ }, {
+ "x" : 324.71454996301327,
+ "y" : 38.56536309141666
+ }, {
+ "x" : 323.1827812140109,
+ "y" : 38.513854248449206
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 258.9436254322063,
+ "y" : 222.8517490979284
+ }, {
+ "x" : 259.7995799072087,
+ "y" : 226.61893490608782
+ }, {
+ "x" : 249.77822558651678,
+ "y" : 229.3306322079152
+ }, {
+ "x" : 239.25160415261053,
+ "y" : 232.23676044028252
+ }, {
+ "x" : 238.90812135417946,
+ "y" : 227.39643519744277
+ }, {
+ "x" : 238.32167245645542,
+ "y" : 219.15444607008249
+ }, {
+ "x" : 246.58559948112816,
+ "y" : 216.68405910395086
+ }, {
+ "x" : 256.73595629388,
+ "y" : 214.12133261188865
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 263.45534473867156,
+ "y" : 221.72390859294683
+ }, {
+ "x" : 261.2995832541492,
+ "y" : 213.88533277902752
+ }, {
+ "x" : 274.58237192837987,
+ "y" : 210.2596904542297
+ }, {
+ "x" : 274.02279991446994,
+ "y" : 208.30491468403488
+ }, {
+ "x" : 286.8379185136873,
+ "y" : 204.6413240097463
+ }, {
+ "x" : 290.5095519134775,
+ "y" : 218.0939918961376
+ }, {
+ "x" : 285.565403431654,
+ "y" : 219.46317550633103
+ }, {
+ "x" : 277.6680804735515,
+ "y" : 221.6565507594496
+ }, {
+ "x" : 264.4507403699681,
+ "y" : 225.3288897126913
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 251.66600997839123,
+ "y" : 198.19616932608187
+ }, {
+ "x" : 240.67461359954905,
+ "y" : 198.76129455678165
+ }, {
+ "x" : 236.89432515017688,
+ "y" : 198.94575866311789
+ }, {
+ "x" : 236.1546922182897,
+ "y" : 188.3954943008721
+ }, {
+ "x" : 235.3530454179272,
+ "y" : 175.03933898266405
+ }, {
+ "x" : 240.27659835130908,
+ "y" : 174.7264090469107
+ }, {
+ "x" : 245.65521746315062,
+ "y" : 174.38427536655217
+ }, {
+ "x" : 246.30663475976326,
+ "y" : 187.77988846134394
+ }, {
+ "x" : 251.10896722215693,
+ "y" : 187.52965094149113
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 295.6816270293202,
+ "y" : 216.58783527370542
+ }, {
+ "x" : 291.58199719840195,
+ "y" : 201.47409150842577
+ }, {
+ "x" : 302.6109993162099,
+ "y" : 198.46255860850215
+ }, {
+ "x" : 315.5770762838656,
+ "y" : 194.95987300481647
+ }, {
+ "x" : 319.7833639482269,
+ "y" : 209.99934039171785
+ }, {
+ "x" : 313.1345139895566,
+ "y" : 211.81185561046004
+ }, {
+ "x" : 306.7633996566292,
+ "y" : 213.5558338034898
+ }, {
+ "x" : 301.0685883788392,
+ "y" : 215.11116113699973
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 328.1195781601127,
+ "y" : 202.72496784385294
+ }, {
+ "x" : 326.4290697937831,
+ "y" : 196.54869103431702
+ }, {
+ "x" : 336.3832304838579,
+ "y" : 193.845988759771
+ }, {
+ "x" : 348.01870884303935,
+ "y" : 190.51002414524555
+ }, {
+ "x" : 350.7605042110663,
+ "y" : 201.28342197742313
+ }, {
+ "x" : 342.7697882485809,
+ "y" : 203.59595786221325
+ }, {
+ "x" : 339.4790015122853,
+ "y" : 204.49776982236654
+ }, {
+ "x" : 329.259754018276,
+ "y" : 207.33619192242622
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 296.38999208202586,
+ "y" : 470.4676902871579
+ }, {
+ "x" : 299.1495339591056,
+ "y" : 466.5439158240333
+ }, {
+ "x" : 296.9943828044925,
+ "y" : 464.66899494081736
+ }, {
+ "x" : 295.50324593752157,
+ "y" : 462.5271214256063
+ }, {
+ "x" : 294.73157282173634,
+ "y" : 459.79749859590083
+ }, {
+ "x" : 294.81827410159167,
+ "y" : 457.219128430821
+ }, {
+ "x" : 295.28645328839775,
+ "y" : 454.3643039986491
+ }, {
+ "x" : 296.7848057167139,
+ "y" : 451.4217322487384
+ }, {
+ "x" : 298.74622994533274,
+ "y" : 449.3180736210197
+ }, {
+ "x" : 300.7621614355594,
+ "y" : 448.0284634260461
+ }, {
+ "x" : 303.5014757182216,
+ "y" : 447.1414714884013
+ }, {
+ "x" : 306.3109533826355,
+ "y" : 446.82427812740207
+ }, {
+ "x" : 309.28792010014877,
+ "y" : 447.50295327883214
+ }, {
+ "x" : 311.781810936518,
+ "y" : 449.0443569133058
+ }, {
+ "x" : 313.84521173359826,
+ "y" : 446.34331589285284
+ }, {
+ "x" : 313.1092485655099,
+ "y" : 441.4452757705003
+ }, {
+ "x" : 315.87710834282916,
+ "y" : 441.0376774519682
+ }, {
+ "x" : 329.4003283295315,
+ "y" : 427.15076148416847
+ }, {
+ "x" : 340.3257488908712,
+ "y" : 413.04298436641693
+ }, {
+ "x" : 342.4085869085975,
+ "y" : 413.9697588086128
+ }, {
+ "x" : 347.2976212359499,
+ "y" : 408.25954715628177
+ }, {
+ "x" : 351.67560263350606,
+ "y" : 411.9894506558776
+ }, {
+ "x" : 352.9826726852916,
+ "y" : 410.30884849186987
+ }, {
+ "x" : 357.63604565057904,
+ "y" : 414.4819432469085
+ }, {
+ "x" : 340.51936215814203,
+ "y" : 435.83602712862194
+ }, {
+ "x" : 325.98854066757485,
+ "y" : 454.45105839613825
+ }, {
+ "x" : 307.9447476922069,
+ "y" : 478.81150802318007
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 305.4723304559011,
+ "y" : 513.3754539340734
+ }, {
+ "x" : 320.4925789887784,
+ "y" : 492.59609957318753
+ }, {
+ "x" : 328.9130492093973,
+ "y" : 498.2977736033499
+ }, {
+ "x" : 322.4007233370794,
+ "y" : 507.56942838523537
+ }, {
+ "x" : 324.3376027250197,
+ "y" : 507.52330698631704
+ }, {
+ "x" : 324.358716711984,
+ "y" : 509.99404140748084
+ }, {
+ "x" : 331.78797437855974,
+ "y" : 509.9768781764433
+ }, {
+ "x" : 331.7650272262981,
+ "y" : 505.3475920036435
+ }, {
+ "x" : 340.38578673335724,
+ "y" : 505.31488270126283
+ }, {
+ "x" : 340.72056645923294,
+ "y" : 518.3772197300568
+ }, {
+ "x" : 324.62630229699425,
+ "y" : 518.6369998622686
+ }, {
+ "x" : 305.50593835732434,
+ "y" : 518.795059889555
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 286.4893133523874,
+ "y" : 489.08274142351
+ }, {
+ "x" : 292.26205468468834,
+ "y" : 482.5454843081534
+ }, {
+ "x" : 298.0144936982542,
+ "y" : 483.6957758544013
+ }, {
+ "x" : 302.7349137603305,
+ "y" : 486.9809837928042
+ }, {
+ "x" : 290.8218239448033,
+ "y" : 503.9039241746068
+ }, {
+ "x" : 275.60864360560663,
+ "y" : 506.0738047072664
+ }, {
+ "x" : 272.68189047218766,
+ "y" : 485.970437345095
+ }, {
+ "x" : 270.1812207819894,
+ "y" : 469.7978317318484
+ }, {
+ "x" : 281.72736239421647,
+ "y" : 467.9941829210147
+ }, {
+ "x" : 284.2213132759789,
+ "y" : 484.1443170597777
+ }, {
+ "x" : 284.9076041292865,
+ "y" : 488.3063512649387
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 819.921143260086,
+ "y" : 159.03635992575437
+ }, {
+ "x" : 821.5141398403794,
+ "y" : 163.67409818526357
+ }, {
+ "x" : 810.1862751777517,
+ "y" : 167.8094580778852
+ }, {
+ "x" : 813.186675036326,
+ "y" : 175.966043619439
+ }, {
+ "x" : 800.7679974925704,
+ "y" : 180.22041271720082
+ }, {
+ "x" : 796.2956162760966,
+ "y" : 168.03100270684808
+ }, {
+ "x" : 794.4205368536059,
+ "y" : 162.9275857647881
+ }, {
+ "x" : 779.7340751740849,
+ "y" : 168.20705503877252
+ }, {
+ "x" : 776.0563671574928,
+ "y" : 158.0583081645891
+ }, {
+ "x" : 796.5149777515326,
+ "y" : 150.70364772714674
+ }, {
+ "x" : 800.1922816366423,
+ "y" : 160.86352215707302
+ }, {
+ "x" : 798.1878040073207,
+ "y" : 161.58591448236257
+ }, {
+ "x" : 799.9183471103897,
+ "y" : 166.33954545482993
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 823.9380603393074,
+ "y" : 43.42504279408604
+ }, {
+ "x" : 828.347564625321,
+ "y" : 54.610983536578715
+ }, {
+ "x" : 833.2609134516679,
+ "y" : 68.2950785215944
+ }, {
+ "x" : 820.7490168374497,
+ "y" : 72.65753830038011
+ }, {
+ "x" : 819.6259072152898,
+ "y" : 69.53769279643893
+ }, {
+ "x" : 812.6939737750217,
+ "y" : 72.00768041796982
+ }, {
+ "x" : 798.1213687891141,
+ "y" : 77.43559688329697
+ }, {
+ "x" : 795.3930980756413,
+ "y" : 70.47871074546129
+ }, {
+ "x" : 810.0353191521717,
+ "y" : 64.75272377487272
+ }, {
+ "x" : 821.4482291885652,
+ "y" : 60.30868334788829
+ }, {
+ "x" : 820.3851784818107,
+ "y" : 57.8361872183159
+ }, {
+ "x" : 816.1481836939929,
+ "y" : 46.61156403645873
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 662.9481081280392,
+ "y" : 127.43254286237061
+ }, {
+ "x" : 652.8720037040766,
+ "y" : 130.43099522218108
+ }, {
+ "x" : 649.2242520034779,
+ "y" : 118.28062687255442
+ }, {
+ "x" : 653.029008804122,
+ "y" : 117.15152243431658
+ }, {
+ "x" : 652.3138798527652,
+ "y" : 114.73528592661023
+ }, {
+ "x" : 650.5697088772431,
+ "y" : 115.24397287238389
+ }, {
+ "x" : 648.4908113373676,
+ "y" : 108.23115617409348
+ }, {
+ "x" : 650.0695271336008,
+ "y" : 107.77252648677677
+ }, {
+ "x" : 648.5920797599247,
+ "y" : 102.79382373206317
+ }, {
+ "x" : 651.5721808572998,
+ "y" : 101.8372124824673
+ }, {
+ "x" : 653.0700612596702,
+ "y" : 106.87223575729877
+ }, {
+ "x" : 664.3252166078892,
+ "y" : 103.56858595926315
+ }, {
+ "x" : 666.4445931608789,
+ "y" : 110.70516199339181
+ }, {
+ "x" : 655.2340640663169,
+ "y" : 114.01031017117202
+ }, {
+ "x" : 655.9161316334503,
+ "y" : 116.30304447561502
+ }, {
+ "x" : 659.3074361890322,
+ "y" : 115.29353175032884
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 864.29019855347,
+ "y" : 118.13014158234
+ }, {
+ "x" : 880.9107118838001,
+ "y" : 112.23739919066429
+ }, {
+ "x" : 886.5089099975303,
+ "y" : 127.90287644322962
+ }, {
+ "x" : 891.9911630550632,
+ "y" : 143.2529147081077
+ }, {
+ "x" : 895.2971451183548,
+ "y" : 152.49910631030798
+ }, {
+ "x" : 878.6763524677372,
+ "y" : 158.40291812364012
+ }, {
+ "x" : 869.8880590299377,
+ "y" : 133.80671527516097
+ }, {
+ "x" : 868.1939890739741,
+ "y" : 129.07654312066734
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 816.8555351030082,
+ "y" : 77.29944964498281
+ }, {
+ "x" : 832.4704064729158,
+ "y" : 71.42829071730375
+ }, {
+ "x" : 839.6592868487351,
+ "y" : 91.36420579813421
+ }, {
+ "x" : 825.1153766661882,
+ "y" : 96.6038730526343
+ }, {
+ "x" : 822.620854388224,
+ "y" : 90.22229258716106
+ }, {
+ "x" : 818.9851300339215,
+ "y" : 91.63514337223023
+ }, {
+ "x" : 800.9809299467597,
+ "y" : 98.60517373029143
+ }, {
+ "x" : 796.897666598903,
+ "y" : 88.12008143216372
+ }, {
+ "x" : 814.9018926656572,
+ "y" : 81.15003756806254
+ }, {
+ "x" : 817.9036534707993,
+ "y" : 79.99396759923548
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 533.111270887428,
+ "y" : 240.55340563692153
+ }, {
+ "x" : 554.1486845286563,
+ "y" : 233.8961028708145
+ }, {
+ "x" : 559.7881450776476,
+ "y" : 232.43929662648588
+ }, {
+ "x" : 579.6376818923745,
+ "y" : 224.58495686482638
+ }, {
+ "x" : 593.39102677966,
+ "y" : 219.15118140354753
+ }, {
+ "x" : 596.93915437127,
+ "y" : 228.07154238503426
+ }, {
+ "x" : 583.1928874864243,
+ "y" : 233.5166729381308
+ }, {
+ "x" : 563.3433748247335,
+ "y" : 241.37099975533783
+ }, {
+ "x" : 557.1587872607633,
+ "y" : 243.3212554389611
+ }, {
+ "x" : 536.1210288535804,
+ "y" : 249.98966004047543
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 770.6690694661811,
+ "y" : 140.98702549375594
+ }, {
+ "x" : 766.9859856222756,
+ "y" : 129.89237204845995
+ }, {
+ "x" : 779.8285725167952,
+ "y" : 125.65221404377371
+ }, {
+ "x" : 777.3098011023831,
+ "y" : 118.00144187826663
+ }, {
+ "x" : 787.7196010143962,
+ "y" : 114.60277923569083
+ }, {
+ "x" : 790.5013783958275,
+ "y" : 123.06351478770375
+ }, {
+ "x" : 782.2894057487138,
+ "y" : 125.74628983810544
+ }, {
+ "x" : 785.7020108632278,
+ "y" : 136.0307448450476
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 833.8524935813621,
+ "y" : 298.23977688886225
+ }, {
+ "x" : 827.6120403856039,
+ "y" : 298.97509335540235
+ }, {
+ "x" : 823.5860269749537,
+ "y" : 294.9673973005265
+ }, {
+ "x" : 822.2623878665036,
+ "y" : 286.9785974537954
+ }, {
+ "x" : 839.0682400682708,
+ "y" : 283.96259624231607
+ }, {
+ "x" : 856.2311496322509,
+ "y" : 281.83766136225313
+ }, {
+ "x" : 857.1226035219152,
+ "y" : 288.95517259743065
+ }, {
+ "x" : 877.7823656176915,
+ "y" : 287.10399603750557
+ }, {
+ "x" : 877.2571058711037,
+ "y" : 282.81378328055143
+ }, {
+ "x" : 877.1678713272559,
+ "y" : 281.486744530499
+ }, {
+ "x" : 882.6483740030089,
+ "y" : 280.9928804952651
+ }, {
+ "x" : 882.0105507106055,
+ "y" : 270.9910807888955
+ }, {
+ "x" : 875.9316951076034,
+ "y" : 270.68592522107065
+ }, {
+ "x" : 875.8696998129599,
+ "y" : 268.99263747781515
+ }, {
+ "x" : 872.0761006034445,
+ "y" : 268.90920098591596
+ }, {
+ "x" : 872.2462231726386,
+ "y" : 258.56748429406434
+ }, {
+ "x" : 893.3390568175819,
+ "y" : 258.6669381586835
+ }, {
+ "x" : 893.8928243033588,
+ "y" : 268.7326626544818
+ }, {
+ "x" : 895.2436065925285,
+ "y" : 292.4661116488278
+ }, {
+ "x" : 878.416549115791,
+ "y" : 294.12382510956377
+ }, {
+ "x" : 857.9954958797898,
+ "y" : 295.96079531125724
+ }, {
+ "x" : 845.2353430743096,
+ "y" : 297.5443557817489
+ }, {
+ "x" : 846.1498022099258,
+ "y" : 304.86291387304664
+ }, {
+ "x" : 841.7541523837717,
+ "y" : 305.4156454447657
+ }, {
+ "x" : 834.9206844314467,
+ "y" : 306.2978512374684
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 847.5478298417293,
+ "y" : 70.67939519882202
+ }, {
+ "x" : 859.6812211768702,
+ "y" : 66.50450206361711
+ }, {
+ "x" : 866.6078481578734,
+ "y" : 88.03379842732102
+ }, {
+ "x" : 869.7669502040371,
+ "y" : 97.66443691588938
+ }, {
+ "x" : 878.9044728836743,
+ "y" : 94.69033379573375
+ }, {
+ "x" : 882.4216603059322,
+ "y" : 105.40118130575866
+ }, {
+ "x" : 869.0312614403665,
+ "y" : 109.7672843914479
+ }, {
+ "x" : 861.2709899104666,
+ "y" : 112.29828800819814
+ }, {
+ "x" : 854.5872144491877,
+ "y" : 91.956572198309
+ }, {
+ "x" : 851.1353287807433,
+ "y" : 81.51497857738286
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 556.9545968747698,
+ "y" : 139.06136025954038
+ }, {
+ "x" : 558.0850348488893,
+ "y" : 141.5249445475638
+ }, {
+ "x" : 567.0519476045156,
+ "y" : 161.075282943435
+ }, {
+ "x" : 555.8770243185572,
+ "y" : 165.53894584067166
+ }, {
+ "x" : 549.9191991644911,
+ "y" : 151.68644086364657
+ }, {
+ "x" : 545.7351290569641,
+ "y" : 153.4704160997644
+ }, {
+ "x" : 530.2456293397117,
+ "y" : 159.83610166236758
+ }, {
+ "x" : 525.8150272730272,
+ "y" : 161.8676951872185
+ }, {
+ "x" : 526.5701841355767,
+ "y" : 165.08635088987648
+ }, {
+ "x" : 527.6266447608359,
+ "y" : 169.30538630206138
+ }, {
+ "x" : 516.6811988299014,
+ "y" : 171.81862785108387
+ }, {
+ "x" : 512.7453549804632,
+ "y" : 156.49880846682936
+ }, {
+ "x" : 514.5930327414535,
+ "y" : 153.35664389375597
+ }, {
+ "x" : 525.7166875028051,
+ "y" : 148.6463976847008
+ }, {
+ "x" : 531.788471560576,
+ "y" : 146.0692352829501
+ }, {
+ "x" : 541.1449020251166,
+ "y" : 142.11174145713449
+ }, {
+ "x" : 552.744532148703,
+ "y" : 137.19504432938993
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 615.3322587204166,
+ "y" : 131.06916320789605
+ }, {
+ "x" : 617.624702752335,
+ "y" : 135.94178976863623
+ }, {
+ "x" : 607.6390163314063,
+ "y" : 140.45653609838337
+ }, {
+ "x" : 595.6916357463924,
+ "y" : 145.75083292741328
+ }, {
+ "x" : 590.6594257534016,
+ "y" : 134.47736549004912
+ }, {
+ "x" : 602.6071978367399,
+ "y" : 129.17194406874478
+ }, {
+ "x" : 603.4031638423912,
+ "y" : 130.95669877994806
+ }, {
+ "x" : 613.1572337860707,
+ "y" : 126.46752262301743
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 563.1647741070483,
+ "y" : 86.38736221473664
+ }, {
+ "x" : 562.061544757802,
+ "y" : 83.55752740614116
+ }, {
+ "x" : 579.6651934650727,
+ "y" : 75.87231970950961
+ }, {
+ "x" : 581.6201896141283,
+ "y" : 80.3775253565982
+ }, {
+ "x" : 590.6494717299938,
+ "y" : 100.50856301747262
+ }, {
+ "x" : 599.3990464992821,
+ "y" : 119.21716510225087
+ }, {
+ "x" : 585.8445829807315,
+ "y" : 125.36971754860133
+ }, {
+ "x" : 584.1667779638665,
+ "y" : 121.69718598481268
+ }, {
+ "x" : 576.6299206345575,
+ "y" : 125.11506398394704
+ }, {
+ "x" : 572.6986729957862,
+ "y" : 116.51561062596738
+ }, {
+ "x" : 583.4132120371796,
+ "y" : 111.35777004528791
+ }, {
+ "x" : 580.3558931055013,
+ "y" : 105.1020010234788
+ }, {
+ "x" : 569.4655573859345,
+ "y" : 109.9535196851939
+ }, {
+ "x" : 567.0486219152808,
+ "y" : 104.57604258786887
+ }, {
+ "x" : 577.2362184389494,
+ "y" : 100.03464392479509
+ }, {
+ "x" : 570.61640088493,
+ "y" : 85.28085553087294
+ }, {
+ "x" : 563.8915926874615,
+ "y" : 88.23653956595808
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 432.2321386471158,
+ "y" : 18.616515981033444
+ }, {
+ "x" : 439.63173634244595,
+ "y" : 15.739012806676328
+ }, {
+ "x" : 442.16833838028833,
+ "y" : 22.210823650471866
+ }, {
+ "x" : 445.48683281370904,
+ "y" : 20.931703847832978
+ }, {
+ "x" : 450.2877927236259,
+ "y" : 34.22221239283681
+ }, {
+ "x" : 436.42712788737845,
+ "y" : 39.51922219991684
+ }, {
+ "x" : 425.74144390877336,
+ "y" : 43.59906280692667
+ }, {
+ "x" : 414.41438890597783,
+ "y" : 47.935500712133944
+ }, {
+ "x" : 410.25238498824183,
+ "y" : 33.131101476959884
+ }, {
+ "x" : 421.8763949451968,
+ "y" : 29.483345098793507
+ }, {
+ "x" : 423.4346050733002,
+ "y" : 35.165645787492394
+ }, {
+ "x" : 431.52271343627945,
+ "y" : 32.40030806325376
+ }, {
+ "x" : 431.53246828285046,
+ "y" : 26.13656430877745
+ }, {
+ "x" : 434.70037226739805,
+ "y" : 24.908003002405167
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 592.4259900675388,
+ "y" : 156.95626684557647
+ }, {
+ "x" : 597.3938224015292,
+ "y" : 168.37221111543477
+ }, {
+ "x" : 593.1788818899076,
+ "y" : 170.18849110417068
+ }, {
+ "x" : 594.3534870843869,
+ "y" : 172.88722282648087
+ }, {
+ "x" : 599.3354215017753,
+ "y" : 184.32589762099087
+ }, {
+ "x" : 603.695666047628,
+ "y" : 194.33060589060187
+ }, {
+ "x" : 593.5428139200667,
+ "y" : 198.72847812529653
+ }, {
+ "x" : 589.1829304470448,
+ "y" : 188.71266426425427
+ }, {
+ "x" : 584.2006067055045,
+ "y" : 177.2851123455912
+ }, {
+ "x" : 578.0507087017177,
+ "y" : 163.17020115535706
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 419.2684179956559,
+ "y" : 354.79361775983125
+ }, {
+ "x" : 415.27171574893873,
+ "y" : 355.66050374601036
+ }, {
+ "x" : 401.7743974972982,
+ "y" : 358.58876133244485
+ }, {
+ "x" : 400.03443850704934,
+ "y" : 358.9752719961107
+ }, {
+ "x" : 390.10772946395446,
+ "y" : 361.31160663161427
+ }, {
+ "x" : 385.90439983131364,
+ "y" : 342.21108751837164
+ }, {
+ "x" : 398.182342857006,
+ "y" : 339.2417669733986
+ }, {
+ "x" : 399.56188576179557,
+ "y" : 345.5856317449361
+ }, {
+ "x" : 413.7960828379728,
+ "y" : 342.6599077126011
+ }, {
+ "x" : 413.5782863481436,
+ "y" : 338.5136175258085
+ }, {
+ "x" : 413.42750872671604,
+ "y" : 331.93293523136526
+ }, {
+ "x" : 400.9946574808564,
+ "y" : 332.20446251519024
+ }, {
+ "x" : 400.79373889090493,
+ "y" : 323.35234150104225
+ }, {
+ "x" : 400.5537387179211,
+ "y" : 312.7854648241773
+ }, {
+ "x" : 410.9905748292804,
+ "y" : 312.54691361635923
+ }, {
+ "x" : 410.884016489028,
+ "y" : 307.9704431667924
+ }, {
+ "x" : 428.76268749544397,
+ "y" : 307.5706388922408
+ }, {
+ "x" : 429.10174438834656,
+ "y" : 322.71373912040144
+ }, {
+ "x" : 429.45263097889256,
+ "y" : 338.16877281386405
+ }, {
+ "x" : 429.41148269735277,
+ "y" : 352.6648847833276
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 868.3004326262744,
+ "y" : 509.7552069593221
+ }, {
+ "x" : 858.6034183700103,
+ "y" : 512.3432518802583
+ }, {
+ "x" : 835.7391439494677,
+ "y" : 518.448237830773
+ }, {
+ "x" : 833.2192752098199,
+ "y" : 509.07280751131475
+ }, {
+ "x" : 830.7300648837117,
+ "y" : 510.04586719349027
+ }, {
+ "x" : 824.5604996869806,
+ "y" : 489.9217619821429
+ }, {
+ "x" : 832.9236323479563,
+ "y" : 487.37768882047385
+ }, {
+ "x" : 839.0931723120157,
+ "y" : 507.5018037026748
+ }, {
+ "x" : 856.0835827909177,
+ "y" : 502.9678106280044
+ }, {
+ "x" : 865.7806111116661,
+ "y" : 500.379761072807
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 932.2088557098759,
+ "y" : 399.9581290418282
+ }, {
+ "x" : 931.2208286622772,
+ "y" : 413.7992978747934
+ }, {
+ "x" : 930.570226249285,
+ "y" : 422.93429736886173
+ }, {
+ "x" : 929.9599276602967,
+ "y" : 431.53659406118095
+ }, {
+ "x" : 928.9386615261901,
+ "y" : 445.92183103598654
+ }, {
+ "x" : 915.6162982933456,
+ "y" : 444.9828304583207
+ }, {
+ "x" : 917.2552445502952,
+ "y" : 421.995545277372
+ }, {
+ "x" : 918.8941952276509,
+ "y" : 399.00826093554497
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 381.4124056660803,
+ "y" : 144.70278789568692
+ }, {
+ "x" : 380.0272516128607,
+ "y" : 140.07218541484326
+ }, {
+ "x" : 395.7951348127099,
+ "y" : 135.3844012701884
+ }, {
+ "x" : 399.60004391730763,
+ "y" : 148.85275977663696
+ }, {
+ "x" : 401.4544091853313,
+ "y" : 155.2459724713117
+ }, {
+ "x" : 380.67767100431956,
+ "y" : 161.23390991427004
+ }, {
+ "x" : 378.8236593782203,
+ "y" : 154.82959081605077
+ }, {
+ "x" : 376.21643801103346,
+ "y" : 146.2525734640658
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 401.5162074394757,
+ "y" : 160.711033933796
+ }, {
+ "x" : 404.7194249094464,
+ "y" : 172.81288143992424
+ }, {
+ "x" : 407.78234493057244,
+ "y" : 185.54420736525208
+ }, {
+ "x" : 396.1278727767058,
+ "y" : 188.7792781908065
+ }, {
+ "x" : 394.02112475875765,
+ "y" : 180.15232878364623
+ }, {
+ "x" : 389.4096880289726,
+ "y" : 181.36572531890124
+ }, {
+ "x" : 388.29364553070627,
+ "y" : 177.1447169901803
+ }, {
+ "x" : 385.08333546703216,
+ "y" : 165.03151569329202
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 281.72934197075665,
+ "y" : 324.69955598935485
+ }, {
+ "x" : 293.3608908036258,
+ "y" : 323.02117337007076
+ }, {
+ "x" : 295.86140578624327,
+ "y" : 340.3064022762701
+ }, {
+ "x" : 293.78203902195673,
+ "y" : 340.6036488097161
+ }, {
+ "x" : 295.32922993355896,
+ "y" : 354.1406625472009
+ }, {
+ "x" : 287.5320391614223,
+ "y" : 354.46817446220666
+ }, {
+ "x" : 286.80335396167357,
+ "y" : 341.604006302543
+ }, {
+ "x" : 284.2302641936112,
+ "y" : 341.9736652635038
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 76.9594212200027,
+ "y" : 56.252484804950655
+ }, {
+ "x" : 77.17542574566323,
+ "y" : 59.13029793649912
+ }, {
+ "x" : 72.51873148907907,
+ "y" : 59.474587785080075
+ }, {
+ "x" : 72.66135238541756,
+ "y" : 66.3108621686697
+ }, {
+ "x" : 59.28055061399937,
+ "y" : 67.53043445572257
+ }, {
+ "x" : 59.31157667154912,
+ "y" : 60.3995853215456
+ }, {
+ "x" : 62.11636935034767,
+ "y" : 60.226745042949915
+ }, {
+ "x" : 61.9081663407851,
+ "y" : 57.338068715296686
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 84.05306109308731,
+ "y" : 99.04843050520867
+ }, {
+ "x" : 83.17446183087304,
+ "y" : 85.53396966308355
+ }, {
+ "x" : 64.1343587541487,
+ "y" : 86.80823709070683
+ }, {
+ "x" : 63.28309716237709,
+ "y" : 74.25155345071107
+ }, {
+ "x" : 82.36079316854011,
+ "y" : 72.96741708461195
+ }, {
+ "x" : 81.85840113775339,
+ "y" : 65.31797250453383
+ }, {
+ "x" : 96.63710325642023,
+ "y" : 64.36792821902782
+ }, {
+ "x" : 96.23305044672452,
+ "y" : 58.223821266554296
+ }, {
+ "x" : 107.53552206861787,
+ "y" : 57.490833315998316
+ }, {
+ "x" : 108.45859787729569,
+ "y" : 71.67436638195068
+ }, {
+ "x" : 111.50245099095628,
+ "y" : 71.47620188631117
+ }, {
+ "x" : 112.07714012661017,
+ "y" : 80.29633122961968
+ }, {
+ "x" : 91.41972647118382,
+ "y" : 81.62744547240436
+ }, {
+ "x" : 88.72647804196458,
+ "y" : 81.80401720199734
+ }, {
+ "x" : 89.81988123734482,
+ "y" : 98.67468009982258
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 738.1757181116845,
+ "y" : 244.35650832671672
+ }, {
+ "x" : 732.1814450233942,
+ "y" : 246.1794771021232
+ }, {
+ "x" : 730.7644031639211,
+ "y" : 240.95800294633955
+ }, {
+ "x" : 726.3625640531536,
+ "y" : 242.35621374752373
+ }, {
+ "x" : 725.0033370689489,
+ "y" : 237.848771488294
+ }, {
+ "x" : 734.053894160781,
+ "y" : 235.01616560388356
+ }, {
+ "x" : 734.9922690216918,
+ "y" : 235.00328458845615
+ }, {
+ "x" : 735.8725471682847,
+ "y" : 235.3889918141067
+ }, {
+ "x" : 736.5162757496582,
+ "y" : 236.16727316845208
+ }, {
+ "x" : 747.9140157130314,
+ "y" : 232.8240993609652
+ }, {
+ "x" : 747.9220489710569,
+ "y" : 231.92314147017896
+ }, {
+ "x" : 748.2263799190987,
+ "y" : 231.06554861273617
+ }, {
+ "x" : 748.7938954354031,
+ "y" : 230.35034132469445
+ }, {
+ "x" : 749.5621147401398,
+ "y" : 229.86442409083247
+ }, {
+ "x" : 750.4477486129617,
+ "y" : 229.6494949646294
+ }, {
+ "x" : 751.3604467880214,
+ "y" : 229.73588769417256
+ }, {
+ "x" : 752.1886760744965,
+ "y" : 230.11984319612384
+ }, {
+ "x" : 752.8525183396414,
+ "y" : 230.74303646665066
+ }, {
+ "x" : 753.2720555465203,
+ "y" : 231.547142483294
+ }, {
+ "x" : 753.4131066958653,
+ "y" : 232.44199890550226
+ }, {
+ "x" : 753.248926391243,
+ "y" : 233.33769403025508
+ }, {
+ "x" : 752.8055671285838,
+ "y" : 234.12384315393865
+ }, {
+ "x" : 752.1298896350199,
+ "y" : 234.73526804614812
+ }, {
+ "x" : 751.2918102848344,
+ "y" : 235.08531500026584
+ }, {
+ "x" : 750.3076983460924,
+ "y" : 235.1300306795165
+ }, {
+ "x" : 737.2435436634114,
+ "y" : 238.8843424320221
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 141.53064552647993,
+ "y" : 293.30676980223507
+ }, {
+ "x" : 141.1777218063362,
+ "y" : 288.966816842556
+ }, {
+ "x" : 155.7473371080123,
+ "y" : 287.7985359765589
+ }, {
+ "x" : 156.0739021039335,
+ "y" : 291.81494469568133
+ }, {
+ "x" : 156.9692791561829,
+ "y" : 300.83500862680376
+ }, {
+ "x" : 137.64795925095677,
+ "y" : 302.7448612013832
+ }, {
+ "x" : 120.69447893975303,
+ "y" : 304.63418775238097
+ }, {
+ "x" : 120.04533915524371,
+ "y" : 299.5833347020671
+ }, {
+ "x" : 137.18960593803786,
+ "y" : 297.3332503307611
+ }, {
+ "x" : 136.89531930640806,
+ "y" : 293.68509278073907
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 379.6282489033183,
+ "y" : 158.57281790021807
+ }, {
+ "x" : 361.3145151727367,
+ "y" : 163.04149731714278
+ }, {
+ "x" : 358.1597238575341,
+ "y" : 151.93154359515756
+ }, {
+ "x" : 361.7922490509227,
+ "y" : 150.82983634714037
+ }, {
+ "x" : 359.99919250723906,
+ "y" : 144.383070230484
+ }, {
+ "x" : 367.90185027127154,
+ "y" : 142.2567372759804
+ }, {
+ "x" : 368.5720640695654,
+ "y" : 144.90507149882615
+ }, {
+ "x" : 369.4027073037578,
+ "y" : 148.5379105946049
+ }, {
+ "x" : 376.1479809466982,
+ "y" : 146.51730036828667
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 551.0739786901977,
+ "y" : 83.99981242418289
+ }, {
+ "x" : 560.5770389985992,
+ "y" : 79.89151292759925
+ }, {
+ "x" : 563.1647741070483,
+ "y" : 86.38736221473664
+ }, {
+ "x" : 559.3803591438336,
+ "y" : 88.01789274439216
+ }, {
+ "x" : 567.0486219152808,
+ "y" : 104.57604258786887
+ }, {
+ "x" : 569.4655573859345,
+ "y" : 109.9535196851939
+ }, {
+ "x" : 572.6986729957862,
+ "y" : 116.51561062596738
+ }, {
+ "x" : 576.6299206345575,
+ "y" : 125.11506398394704
+ }, {
+ "x" : 582.091466112528,
+ "y" : 136.90365542657673
+ }, {
+ "x" : 585.2857720371103,
+ "y" : 135.55367905739695
+ }, {
+ "x" : 590.8249634939712,
+ "y" : 147.46728423517197
+ }, {
+ "x" : 573.099870251026,
+ "y" : 155.4487659931183
+ }, {
+ "x" : 569.3158585127676,
+ "y" : 146.89877623319626
+ }, {
+ "x" : 560.9793166820891,
+ "y" : 128.08174023404717
+ }, {
+ "x" : 555.7697835559957,
+ "y" : 116.32390960678458
+ }, {
+ "x" : 545.7515640998026,
+ "y" : 93.94551381934434
+ }, {
+ "x" : 549.1299526626244,
+ "y" : 92.43482007924467
+ }, {
+ "x" : 546.3075824658154,
+ "y" : 86.05346729978919
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 856.8722089485964,
+ "y" : 216.69258360099047
+ }, {
+ "x" : 859.0949577068677,
+ "y" : 224.06638758350164
+ }, {
+ "x" : 857.796795061673,
+ "y" : 223.71107414271683
+ }, {
+ "x" : 856.3978168596514,
+ "y" : 231.86397477146238
+ }, {
+ "x" : 860.2471766959643,
+ "y" : 232.0605427119881
+ }, {
+ "x" : 873.5167341013439,
+ "y" : 232.15200436394662
+ }, {
+ "x" : 893.2007102374919,
+ "y" : 229.22209051717073
+ }, {
+ "x" : 895.1597504960373,
+ "y" : 242.20579721406102
+ }, {
+ "x" : 875.4754420947284,
+ "y" : 245.1468168515712
+ }, {
+ "x" : 860.2982985826675,
+ "y" : 245.1134081715718
+ }, {
+ "x" : 844.0984283501748,
+ "y" : 244.94541644863784
+ }, {
+ "x" : 841.9964067728724,
+ "y" : 243.48374992236495
+ }, {
+ "x" : 841.3603660498047,
+ "y" : 241.8156117675826
+ }, {
+ "x" : 842.4218848735327,
+ "y" : 231.7487339982763
+ }, {
+ "x" : 844.477717266418,
+ "y" : 222.4385934593156
+ }, {
+ "x" : 846.3057208657265,
+ "y" : 221.20958432834595
+ }, {
+ "x" : 850.7293796025915,
+ "y" : 221.81493118871003
+ }, {
+ "x" : 851.1099071498029,
+ "y" : 216.93219482526183
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 544.4101221924648,
+ "y" : 327.69635072909296
+ }, {
+ "x" : 538.56093529379,
+ "y" : 302.22056436445564
+ }, {
+ "x" : 529.1909206026467,
+ "y" : 304.8201872333884
+ }, {
+ "x" : 525.268796551507,
+ "y" : 306.12343419436365
+ }, {
+ "x" : 532.4644559407607,
+ "y" : 330.5207829736173
+ }, {
+ "x" : 489.27524644625373,
+ "y" : 337.82327230647206
+ }, {
+ "x" : 477.7056544967927,
+ "y" : 294.5310435667634
+ }, {
+ "x" : 476.99331269797403,
+ "y" : 296.45416215155274
+ }, {
+ "x" : 476.2599690768402,
+ "y" : 297.45309529453516
+ }, {
+ "x" : 475.1426921292441,
+ "y" : 297.9161730594933
+ }, {
+ "x" : 473.71995049645193,
+ "y" : 297.72364788595587
+ }, {
+ "x" : 472.76100564119406,
+ "y" : 296.57874888554215
+ }, {
+ "x" : 469.96207839623094,
+ "y" : 286.62669363990426
+ }, {
+ "x" : 470.13752457511146,
+ "y" : 284.95253487396985
+ }, {
+ "x" : 470.9935761182569,
+ "y" : 283.84646823629737
+ }, {
+ "x" : 472.2390829976648,
+ "y" : 283.55459890235215
+ }, {
+ "x" : 473.5190583858639,
+ "y" : 283.786823567003
+ }, {
+ "x" : 474.78729122516233,
+ "y" : 283.2620684206486
+ }, {
+ "x" : 471.1218276496511,
+ "y" : 267.4284427212551
+ }, {
+ "x" : 511.9681332895998,
+ "y" : 264.0634960271418
+ }, {
+ "x" : 521.2697786736535,
+ "y" : 293.1268583824858
+ }, {
+ "x" : 527.9231544273207,
+ "y" : 290.95869832858443
+ }, {
+ "x" : 568.9614447242348,
+ "y" : 279.6787323439494
+ }, {
+ "x" : 571.8469760266598,
+ "y" : 278.87466891575605
+ }, {
+ "x" : 575.2466661363142,
+ "y" : 291.5395691199228
+ }, {
+ "x" : 576.9814702115254,
+ "y" : 291.08617861103266
+ }, {
+ "x" : 578.0098434367683,
+ "y" : 295.9162265183404
+ }, {
+ "x" : 579.4189344045008,
+ "y" : 295.6298888688907
+ }, {
+ "x" : 583.6953057216015,
+ "y" : 312.9862217595801
+ }, {
+ "x" : 582.4360002048779,
+ "y" : 313.4667486185208
+ }, {
+ "x" : 582.9817101794761,
+ "y" : 318.70334233623
+ }, {
+ "x" : 565.0740358810872,
+ "y" : 324.16413560695946
+ }, {
+ "x" : 563.7236421655398,
+ "y" : 319.6125297965482
+ }, {
+ "x" : 561.8018398445565,
+ "y" : 320.0930060017854
+ }, {
+ "x" : 556.3153494300786,
+ "y" : 297.33309093955904
+ }, {
+ "x" : 552.0133057131898,
+ "y" : 298.42325557023287
+ }, {
+ "x" : 558.0076818941161,
+ "y" : 324.44913422875106
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 759.3802428231575,
+ "y" : 422.2349794935435
+ }, {
+ "x" : 760.7859845397761,
+ "y" : 426.24332086276263
+ }, {
+ "x" : 761.5128830964677,
+ "y" : 425.8784028943628
+ }, {
+ "x" : 759.5487699430669,
+ "y" : 420.3269390827045
+ }, {
+ "x" : 777.7934414022602,
+ "y" : 413.92125921323895
+ }, {
+ "x" : 779.9001937364228,
+ "y" : 419.8780849715695
+ }, {
+ "x" : 774.770449585747,
+ "y" : 421.67451212275773
+ }, {
+ "x" : 776.0955743580125,
+ "y" : 425.4242356941104
+ }, {
+ "x" : 762.9810442818562,
+ "y" : 430.02236441895366
+ }, {
+ "x" : 766.9197982510086,
+ "y" : 440.59158951230347
+ }, {
+ "x" : 758.2449318806175,
+ "y" : 443.7705779839307
+ }, {
+ "x" : 754.8010474350303,
+ "y" : 434.4196786992252
+ }, {
+ "x" : 736.4872483325889,
+ "y" : 441.1123800324276
+ }, {
+ "x" : 734.5167504885467,
+ "y" : 435.74985740240663
+ }, {
+ "x" : 749.7509518747684,
+ "y" : 430.09935552161187
+ }, {
+ "x" : 748.3381431153975,
+ "y" : 426.0796527583152
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 613.1575228491565,
+ "y" : 307.03565941751003
+ }, {
+ "x" : 589.6802714483347,
+ "y" : 315.63554863166064
+ }, {
+ "x" : 584.8647063313983,
+ "y" : 303.90206708945334
+ }, {
+ "x" : 605.0008096976671,
+ "y" : 295.4900377932936
+ }, {
+ "x" : 598.3790160964709,
+ "y" : 279.47885951865464
+ }, {
+ "x" : 604.9952140607638,
+ "y" : 277.5320595074445
+ }, {
+ "x" : 595.339666750282,
+ "y" : 255.00998797547072
+ }, {
+ "x" : 580.2128352916334,
+ "y" : 261.4433712782338
+ }, {
+ "x" : 589.8468694103649,
+ "y" : 283.9424376534298
+ }, {
+ "x" : 578.6092549113091,
+ "y" : 288.7265942133963
+ }, {
+ "x" : 563.5711979676271,
+ "y" : 253.61755474936217
+ }, {
+ "x" : 582.9389578662813,
+ "y" : 245.2574528120458
+ }, {
+ "x" : 602.5480321969371,
+ "y" : 237.0279288906604
+ }, {
+ "x" : 617.6000320704188,
+ "y" : 272.1598034808412
+ }, {
+ "x" : 611.8756041756133,
+ "y" : 274.5928010363132
+ }, {
+ "x" : 624.8247913791565,
+ "y" : 302.755598384887
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 221.50160073302686,
+ "y" : 473.95808511879295
+ }, {
+ "x" : 212.41254624328576,
+ "y" : 475.29925607983023
+ }, {
+ "x" : 212.73526271316223,
+ "y" : 477.4352116631344
+ }, {
+ "x" : 215.94292855693493,
+ "y" : 476.78644629381597
+ }, {
+ "x" : 217.54522131499834,
+ "y" : 488.2446821825579
+ }, {
+ "x" : 209.66065372293815,
+ "y" : 489.8488673530519
+ }, {
+ "x" : 215.2374900081195,
+ "y" : 517.0396603737026
+ }, {
+ "x" : 209.82598368823528,
+ "y" : 518.1484072357416
+ }, {
+ "x" : 201.88210155721754,
+ "y" : 479.4403078975156
+ }, {
+ "x" : 203.71388037293218,
+ "y" : 478.7564181480557
+ }, {
+ "x" : 202.44493184168823,
+ "y" : 470.2244617380202
+ }, {
+ "x" : 211.46632701321505,
+ "y" : 468.90325291641057
+ }, {
+ "x" : 220.55539119290188,
+ "y" : 467.56208019703627
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 333.05148400284816,
+ "y" : 408.44796958286315
+ }, {
+ "x" : 328.80610663071275,
+ "y" : 409.40668545197695
+ }, {
+ "x" : 329.3826267810073,
+ "y" : 411.96285628620535
+ }, {
+ "x" : 324.1925579769304,
+ "y" : 413.1234545474872
+ }, {
+ "x" : 324.65281156101264,
+ "y" : 415.1527816718444
+ }, {
+ "x" : 317.1075129591627,
+ "y" : 416.84612029325217
+ }, {
+ "x" : 312.7809650506824,
+ "y" : 397.64138515107334
+ }, {
+ "x" : 329.79037699697074,
+ "y" : 393.8630607519299
+ }, {
+ "x" : 342.3510505814338,
+ "y" : 391.11453593336046
+ }, {
+ "x" : 354.0161354164593,
+ "y" : 388.4360499670729
+ }, {
+ "x" : 368.6874281697674,
+ "y" : 385.3469038158655
+ }, {
+ "x" : 374.0289348443039,
+ "y" : 387.65169842354953
+ }, {
+ "x" : 375.4879487954313,
+ "y" : 394.51003745477647
+ }, {
+ "x" : 371.90545344818383,
+ "y" : 399.21831170935184
+ }, {
+ "x" : 357.031197246979,
+ "y" : 402.3673780625686
+ }, {
+ "x" : 345.2750866061542,
+ "y" : 404.87590117473155
+ }, {
+ "x" : 344.8702911285218,
+ "y" : 402.52577651292086
+ }, {
+ "x" : 332.30964049277827,
+ "y" : 405.27429520431906
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 201.03541564231273,
+ "y" : 538.7368619302288
+ }, {
+ "x" : 193.1706128475489,
+ "y" : 540.4196133352816
+ }, {
+ "x" : 184.3380953638116,
+ "y" : 542.3257553186268
+ }, {
+ "x" : 173.758638520143,
+ "y" : 544.6071249609813
+ }, {
+ "x" : 170.11764796311036,
+ "y" : 527.8065654914826
+ }, {
+ "x" : 174.78114052687306,
+ "y" : 526.8061588453129
+ }, {
+ "x" : 175.79347331705503,
+ "y" : 526.5842764936388
+ }, {
+ "x" : 197.3944986432325,
+ "y" : 521.9362831832841
+ }, {
+ "x" : 203.7752168860752,
+ "y" : 520.5596931772307
+ }, {
+ "x" : 204.74181675049476,
+ "y" : 525.0204180981964
+ }, {
+ "x" : 210.76265894109383,
+ "y" : 523.720749844797
+ }, {
+ "x" : 224.07135137880687,
+ "y" : 520.852487495169
+ }, {
+ "x" : 233.84078300837427,
+ "y" : 518.7553751198575
+ }, {
+ "x" : 232.68141099112108,
+ "y" : 513.3869395582005
+ }, {
+ "x" : 228.384832142503,
+ "y" : 514.3217506753281
+ }, {
+ "x" : 221.1866684264969,
+ "y" : 481.1127866106108
+ }, {
+ "x" : 235.35761031729635,
+ "y" : 478.0621296428144
+ }, {
+ "x" : 242.6259030388901,
+ "y" : 511.61838664114475
+ }, {
+ "x" : 239.31191861024126,
+ "y" : 512.3303193338215
+ }, {
+ "x" : 240.4014538594056,
+ "y" : 517.3403696212918
+ }, {
+ "x" : 250.89065133035183,
+ "y" : 515.0894627375528
+ }, {
+ "x" : 244.53289452940226,
+ "y" : 470.17054703459144
+ }, {
+ "x" : 239.5102622283157,
+ "y" : 443.9885866800323
+ }, {
+ "x" : 253.4718120211037,
+ "y" : 442.0769308311865
+ }, {
+ "x" : 257.822225832846,
+ "y" : 468.325316850096
+ }, {
+ "x" : 267.1660808881279,
+ "y" : 524.9381823400036
+ }, {
+ "x" : 253.5652334941551,
+ "y" : 527.4182313587517
+ }, {
+ "x" : 226.74561302887741,
+ "y" : 533.1923558618873
+ }, {
+ "x" : 213.43694694899023,
+ "y" : 536.0606113038957
+ }, {
+ "x" : 208.62325653492007,
+ "y" : 537.1004428695887
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 264.58357583731413,
+ "y" : 307.0665928358212
+ }, {
+ "x" : 266.4525188646512,
+ "y" : 306.8290180154145
+ }, {
+ "x" : 268.1882536218036,
+ "y" : 320.51699886098504
+ }, {
+ "x" : 258.07397948449943,
+ "y" : 321.79026558995247
+ }, {
+ "x" : 251.3663175376132,
+ "y" : 322.69964261259884
+ }, {
+ "x" : 249.5160239727702,
+ "y" : 309.09682786278427
+ }, {
+ "x" : 248.9728149252478,
+ "y" : 304.8839810146019
+ }, {
+ "x" : 248.24356533796526,
+ "y" : 299.3408598061651
+ }, {
+ "x" : 247.19387156143785,
+ "y" : 291.37257650122046
+ }, {
+ "x" : 246.9450950466562,
+ "y" : 289.4727558400482
+ }, {
+ "x" : 245.8482414399041,
+ "y" : 281.1357225095853
+ }, {
+ "x" : 244.8583231071243,
+ "y" : 273.6033723494038
+ }, {
+ "x" : 258.43666689493693,
+ "y" : 271.36728808656335
+ }, {
+ "x" : 260.20513625838794,
+ "y" : 287.4039973774925
+ }, {
+ "x" : 262.6682108321693,
+ "y" : 286.98612278793007
+ }, {
+ "x" : 262.82547810534015,
+ "y" : 289.17214979603887
+ }, {
+ "x" : 261.42712999577634,
+ "y" : 289.80383853334934
+ }, {
+ "x" : 262.0292585782008,
+ "y" : 297.356534848921
+ }, {
+ "x" : 263.1657959240256,
+ "y" : 297.205598349683
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 198.62644482136238,
+ "y" : 93.68510742112994
+ }, {
+ "x" : 198.31417913758196,
+ "y" : 88.5788084641099
+ }, {
+ "x" : 191.38437819771934,
+ "y" : 89.00237902440131
+ }, {
+ "x" : 190.73277027485892,
+ "y" : 78.26594111137092
+ }, {
+ "x" : 204.83777792670298,
+ "y" : 77.42705244477838
+ }, {
+ "x" : 210.17112236178946,
+ "y" : 77.10561102908105
+ }, {
+ "x" : 211.12788683804683,
+ "y" : 92.93698848690838
+ }, {
+ "x" : 211.59782970743254,
+ "y" : 92.90827743895352
+ }, {
+ "x" : 212.7158860535128,
+ "y" : 111.47099919151515
+ }, {
+ "x" : 206.01773680956103,
+ "y" : 111.86895726248622
+ }, {
+ "x" : 186.84756119246595,
+ "y" : 113.02717988472432
+ }, {
+ "x" : 178.02352996589616,
+ "y" : 113.55400481354445
+ }, {
+ "x" : 169.19206551415846,
+ "y" : 114.08059347141534
+ }, {
+ "x" : 160.83797976817004,
+ "y" : 114.57873039040715
+ }, {
+ "x" : 152.48389620881062,
+ "y" : 115.07687947712839
+ }, {
+ "x" : 151.64678158133756,
+ "y" : 101.21887921262532
+ }, {
+ "x" : 168.35536418820266,
+ "y" : 100.21147604100406
+ }, {
+ "x" : 186.01833772542886,
+ "y" : 99.15830861590803
+ }, {
+ "x" : 198.90791428321972,
+ "y" : 98.37870169896632
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 61.11780644406099,
+ "y" : 400.72165302652866
+ }, {
+ "x" : 58.96010900114197,
+ "y" : 400.4711681175977
+ }, {
+ "x" : 57.97486421535723,
+ "y" : 392.5718543957919
+ }, {
+ "x" : 58.7042997747194,
+ "y" : 392.3515755645931
+ }, {
+ "x" : 58.55247140733991,
+ "y" : 390.66642000339925
+ }, {
+ "x" : 57.58588201389648,
+ "y" : 390.6339578013867
+ }, {
+ "x" : 57.28994422056712,
+ "y" : 387.9203519457951
+ }, {
+ "x" : 59.18566299637314,
+ "y" : 387.32757236994803
+ }, {
+ "x" : 59.02100771374535,
+ "y" : 384.2512107929215
+ }, {
+ "x" : 57.53466237871908,
+ "y" : 384.401564642787
+ }, {
+ "x" : 57.25759265990928,
+ "y" : 379.57461420912296
+ }, {
+ "x" : 52.95805432472844,
+ "y" : 379.9308991217986
+ }, {
+ "x" : 51.48138283309527,
+ "y" : 380.01482227258384
+ }, {
+ "x" : 52.053475513122976,
+ "y" : 388.9127433402464
+ }, {
+ "x" : 42.04245328716934,
+ "y" : 389.55565553344786
+ }, {
+ "x" : 41.50967440626118,
+ "y" : 381.2598713831976
+ }, {
+ "x" : 38.04849226085935,
+ "y" : 381.4774274956435
+ }, {
+ "x" : 37.111298381583765,
+ "y" : 366.8261303687468
+ }, {
+ "x" : 45.66018160886597,
+ "y" : 366.2787463143468
+ }, {
+ "x" : 52.05279073026031,
+ "y" : 365.88148446474224
+ }, {
+ "x" : 57.015606709057465,
+ "y" : 365.28044478036463
+ }, {
+ "x" : 57.16776095353998,
+ "y" : 364.5178468162194
+ }, {
+ "x" : 63.1335733422311,
+ "y" : 364.1952733248472
+ }, {
+ "x" : 70.72999542951584,
+ "y" : 363.638190488331
+ }, {
+ "x" : 70.8178898046026,
+ "y" : 365.23218953143805
+ }, {
+ "x" : 72.7993560153991,
+ "y" : 384.9142362596467
+ }, {
+ "x" : 74.50017585640308,
+ "y" : 385.02699260786176
+ }, {
+ "x" : 75.06650129251648,
+ "y" : 392.322551173158
+ }, {
+ "x" : 75.21717464225367,
+ "y" : 394.2635713694617
+ }, {
+ "x" : 76.0302335228771,
+ "y" : 402.4130089301616
+ }, {
+ "x" : 77.31712831859477,
+ "y" : 411.74661346618086
+ }, {
+ "x" : 78.33388739149086,
+ "y" : 420.0364082911983
+ }, {
+ "x" : 60.308834092342295,
+ "y" : 423.03589866589755
+ }, {
+ "x" : 56.93686909112148,
+ "y" : 423.47896231524646
+ }, {
+ "x" : 44.37316836649552,
+ "y" : 425.6605625450611
+ }, {
+ "x" : 28.852028017048724,
+ "y" : 428.35482044238597
+ }, {
+ "x" : 24.74171215214301,
+ "y" : 429.0623904224485
+ }, {
+ "x" : 23.074845903902315,
+ "y" : 416.4115625284612
+ }, {
+ "x" : 28.296412772731856,
+ "y" : 415.41864602454007
+ }, {
+ "x" : 27.118069253396243,
+ "y" : 405.5101399188861
+ }, {
+ "x" : 35.02194708248135,
+ "y" : 404.4404059033841
+ }, {
+ "x" : 36.33376793807838,
+ "y" : 414.14199889078736
+ }, {
+ "x" : 42.72491705662105,
+ "y" : 413.12161359842867
+ }, {
+ "x" : 41.44804368226323,
+ "y" : 403.4879493173212
+ }, {
+ "x" : 50.08991705963854,
+ "y" : 402.1648637726903
+ }, {
+ "x" : 51.13628299534321,
+ "y" : 411.7907896116376
+ }, {
+ "x" : 58.72124771855306,
+ "y" : 410.2430778890848
+ }, {
+ "x" : 62.098072920925915,
+ "y" : 409.65553741995245
+ }, {
+ "x" : 63.577290200744756,
+ "y" : 409.93886765185744
+ }, {
+ "x" : 64.31387558055576,
+ "y" : 409.0623837960884
+ }, {
+ "x" : 63.04511530569289,
+ "y" : 408.4968403792009
+ }, {
+ "x" : 62.771233684848994,
+ "y" : 404.90500468201935
+ }, {
+ "x" : 61.589366904692724,
+ "y" : 405.0767093654722
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 142.50073242280632,
+ "y" : 102.02422206755728
+ }, {
+ "x" : 143.25458297180012,
+ "y" : 115.92392715159804
+ }, {
+ "x" : 136.20065692579374,
+ "y" : 116.27663485985249
+ }, {
+ "x" : 128.8861107470002,
+ "y" : 116.63172218762338
+ }, {
+ "x" : 121.6474159952486,
+ "y" : 116.9448620248586
+ }, {
+ "x" : 114.40909590874799,
+ "y" : 117.24689734075218
+ }, {
+ "x" : 106.58594265952706,
+ "y" : 117.67393788136542
+ }, {
+ "x" : 90.417652407079,
+ "y" : 118.55502367485315
+ }, {
+ "x" : 85.27174430002924,
+ "y" : 118.83836430776864
+ }, {
+ "x" : 76.1436253588181,
+ "y" : 119.3328795041889
+ }, {
+ "x" : 67.00769998459145,
+ "y" : 119.83827317971736
+ }, {
+ "x" : 52.62774604174774,
+ "y" : 120.44573693629354
+ }, {
+ "x" : 47.840620901435614,
+ "y" : 120.68552810139954
+ }, {
+ "x" : 46.99676377768628,
+ "y" : 105.2474121702835
+ }, {
+ "x" : 52.27689539117273,
+ "y" : 104.95741761103272
+ }, {
+ "x" : 52.13185202027671,
+ "y" : 102.40464835427701
+ }, {
+ "x" : 66.01776589092333,
+ "y" : 101.65820131264627
+ }, {
+ "x" : 66.2543841379229,
+ "y" : 106.13887865189463
+ }, {
+ "x" : 84.51809834362939,
+ "y" : 105.1500798901543
+ }, {
+ "x" : 113.65551873971708,
+ "y" : 103.55860725417733
+ }, {
+ "x" : 128.12998564285226,
+ "y" : 102.79870188888162
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 705.2857554593356,
+ "y" : 514.3732893997803
+ }, {
+ "x" : 704.712036915822,
+ "y" : 511.7392799174413
+ }, {
+ "x" : 721.5682483342243,
+ "y" : 508.09047537483275
+ }, {
+ "x" : 725.7587448579725,
+ "y" : 527.3132785074413
+ }, {
+ "x" : 705.0487131759292,
+ "y" : 531.789056899026
+ }, {
+ "x" : 694.2284257215215,
+ "y" : 534.1392473615706
+ }, {
+ "x" : 683.821199981845,
+ "y" : 536.3809868749231
+ }, {
+ "x" : 664.5805097122211,
+ "y" : 540.5503769023344
+ }, {
+ "x" : 649.8766650562175,
+ "y" : 543.7266654483974
+ }, {
+ "x" : 636.7696229297435,
+ "y" : 546.5673626950011
+ }, {
+ "x" : 632.5992856231751,
+ "y" : 527.4009516034275
+ }, {
+ "x" : 643.3964989462402,
+ "y" : 525.0721207652241
+ }, {
+ "x" : 644.8540738188894,
+ "y" : 531.7413566894829
+ }, {
+ "x" : 647.1561308981618,
+ "y" : 531.2403435083106
+ }, {
+ "x" : 647.7688674570527,
+ "y" : 534.0425544297323
+ }, {
+ "x" : 662.4652998123784,
+ "y" : 530.8660093676299
+ }, {
+ "x" : 661.556234028656,
+ "y" : 526.6964071309194
+ }, {
+ "x" : 680.804402191774,
+ "y" : 522.5272563407198
+ }, {
+ "x" : 680.2039288396481,
+ "y" : 519.8033381896093
+ }, {
+ "x" : 690.6565421927953,
+ "y" : 517.5408672736958
+ }, {
+ "x" : 701.4318729751976,
+ "y" : 515.2002796567976
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 610.021836891654,
+ "y" : 363.00642686896026
+ }, {
+ "x" : 592.831639821874,
+ "y" : 360.8698012204841
+ }, {
+ "x" : 593.5098606061656,
+ "y" : 357.08745972346514
+ }, {
+ "x" : 591.3212507618591,
+ "y" : 350.46038380637765
+ }, {
+ "x" : 596.3826238476904,
+ "y" : 348.4834694573656
+ }, {
+ "x" : 598.4439569717506,
+ "y" : 354.02701345458627
+ }, {
+ "x" : 611.87187777902,
+ "y" : 356.03693724330515
+ }, {
+ "x" : 614.6164981481852,
+ "y" : 356.7635759860277
+ }, {
+ "x" : 617.0773370421957,
+ "y" : 346.6881791809574
+ }, {
+ "x" : 619.6120953763602,
+ "y" : 335.3023733915761
+ }, {
+ "x" : 619.0129091218114,
+ "y" : 333.20157985948026
+ }, {
+ "x" : 613.2943066257285,
+ "y" : 334.8002989012748
+ }, {
+ "x" : 593.6171978029888,
+ "y" : 341.08038091287017
+ }, {
+ "x" : 596.17041680892,
+ "y" : 348.15366109926254
+ }, {
+ "x" : 590.8186896473635,
+ "y" : 350.1319236457348
+ }, {
+ "x" : 588.3938881643116,
+ "y" : 342.33976371679455
+ }, {
+ "x" : 586.3222103186417,
+ "y" : 343.0710881445557
+ }, {
+ "x" : 577.95965379884,
+ "y" : 346.0383440218866
+ }, {
+ "x" : 578.7660468494287,
+ "y" : 349.28098887577653
+ }, {
+ "x" : 580.6009432113497,
+ "y" : 356.6861122986302
+ }, {
+ "x" : 580.0238928820472,
+ "y" : 380.23210429772735
+ }, {
+ "x" : 565.4514340276364,
+ "y" : 379.496611116454
+ }, {
+ "x" : 566.6708010010188,
+ "y" : 361.19046624936163
+ }, {
+ "x" : 566.9014347664779,
+ "y" : 357.2150309542194
+ }, {
+ "x" : 551.91608447209,
+ "y" : 357.2445107763633
+ }, {
+ "x" : 548.821260527242,
+ "y" : 342.8208131948486
+ }, {
+ "x" : 583.2184310399462,
+ "y" : 332.4522477015853
+ }, {
+ "x" : 590.1677092822501,
+ "y" : 330.3386308234185
+ }, {
+ "x" : 609.8448493699543,
+ "y" : 324.0585361449048
+ }, {
+ "x" : 629.3383451628033,
+ "y" : 317.9280884824693
+ }, {
+ "x" : 632.7800006209873,
+ "y" : 326.9116516979411
+ }, {
+ "x" : 626.7041929777479,
+ "y" : 349.0596681740135
+ }, {
+ "x" : 623.1698250779882,
+ "y" : 366.47561774775386
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 804.482577514369,
+ "y" : 274.0623466530815
+ }, {
+ "x" : 793.5900868570898,
+ "y" : 276.1095363041386
+ }, {
+ "x" : 796.4077502044383,
+ "y" : 284.8273969963193
+ }, {
+ "x" : 798.6978429160081,
+ "y" : 286.45115552283823
+ }, {
+ "x" : 802.356265827897,
+ "y" : 285.9069147547707
+ }, {
+ "x" : 805.1884313138435,
+ "y" : 295.9604244539514
+ }, {
+ "x" : 790.0317793472204,
+ "y" : 300.6231772340834
+ }, {
+ "x" : 785.6737634300953,
+ "y" : 287.9146883683279
+ }, {
+ "x" : 780.069753729389,
+ "y" : 269.9904804537073
+ }, {
+ "x" : 781.2328268615529,
+ "y" : 267.94907176308334
+ }, {
+ "x" : 802.8336478387937,
+ "y" : 264.4604015769437
+ }, {
+ "x" : 818.4817445407389,
+ "y" : 261.7835990684107
+ }, {
+ "x" : 835.0440502866404,
+ "y" : 259.1487906323746
+ }, {
+ "x" : 852.6549303866923,
+ "y" : 258.75239476840943
+ }, {
+ "x" : 872.2462231726386,
+ "y" : 258.56748429406434
+ }, {
+ "x" : 872.0761006034445,
+ "y" : 268.90920098591596
+ }, {
+ "x" : 869.5643435327802,
+ "y" : 269.0025123991072
+ }, {
+ "x" : 870.3121902076527,
+ "y" : 275.080437829718
+ }, {
+ "x" : 876.5444313742919,
+ "y" : 274.589667532593
+ }, {
+ "x" : 877.1678713272559,
+ "y" : 281.486744530499
+ }, {
+ "x" : 877.2571058711037,
+ "y" : 282.81378328055143
+ }, {
+ "x" : 860.8075448087184,
+ "y" : 283.87233527284116
+ }, {
+ "x" : 860.1164642765652,
+ "y" : 275.44867791142315
+ }, {
+ "x" : 854.5893098500092,
+ "y" : 272.4695870997384
+ }, {
+ "x" : 837.1570417276816,
+ "y" : 272.4269455112517
+ }, {
+ "x" : 820.7657884764485,
+ "y" : 275.0675129182637
+ }, {
+ "x" : 805.1177260082914,
+ "y" : 277.74430827982724
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 706.5473627517931,
+ "y" : 408.237718696706
+ }, {
+ "x" : 705.4406171112787,
+ "y" : 409.71359767764807
+ }, {
+ "x" : 681.8953622380504,
+ "y" : 414.5946260327473
+ }, {
+ "x" : 666.2455678231781,
+ "y" : 415.56939612235874
+ }, {
+ "x" : 665.6942687963601,
+ "y" : 399.8961554793641
+ }, {
+ "x" : 678.5312564030755,
+ "y" : 399.11589224264026
+ }, {
+ "x" : 679.343787540216,
+ "y" : 402.8371921181679
+ }, {
+ "x" : 688.2140653925017,
+ "y" : 400.2654865467921
+ }, {
+ "x" : 682.2640158142895,
+ "y" : 387.5256930598989
+ }, {
+ "x" : 670.663514866028,
+ "y" : 392.92050685640424
+ }, {
+ "x" : 661.36937252793,
+ "y" : 397.2470372132957
+ }, {
+ "x" : 661.1327214761404,
+ "y" : 394.99155737739056
+ }, {
+ "x" : 649.8638787807431,
+ "y" : 394.07786256447434
+ }, {
+ "x" : 650.7762842248194,
+ "y" : 381.13536714203656
+ }, {
+ "x" : 659.7569941894617,
+ "y" : 381.693819090724
+ }, {
+ "x" : 664.3698949760292,
+ "y" : 380.2136647300795
+ }, {
+ "x" : 668.4540434831288,
+ "y" : 388.46231526043266
+ }, {
+ "x" : 676.3654472313356,
+ "y" : 384.7456576069817
+ }, {
+ "x" : 674.5265664957697,
+ "y" : 380.55585402436554
+ }, {
+ "x" : 678.1814908236265,
+ "y" : 378.78753016516566
+ }, {
+ "x" : 676.049742070958,
+ "y" : 374.23181794397533
+ }, {
+ "x" : 687.710142205935,
+ "y" : 368.82790462858975
+ }, {
+ "x" : 693.9173358615953,
+ "y" : 382.11042869184166
+ }, {
+ "x" : 699.8673670350108,
+ "y" : 394.8502347525209
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 406.3824119863566,
+ "y" : 498.62292945664376
+ }, {
+ "x" : 413.3863298635697,
+ "y" : 504.61085907556117
+ }, {
+ "x" : 415.6265798950335,
+ "y" : 502.62788304686546
+ }, {
+ "x" : 417.64331503456924,
+ "y" : 504.85423431452364
+ }, {
+ "x" : 420.3403881301638,
+ "y" : 506.99221648741513
+ }, {
+ "x" : 424.53723077115137,
+ "y" : 506.8107758462429
+ }, {
+ "x" : 424.47865423036274,
+ "y" : 504.12737916316837
+ }, {
+ "x" : 423.14626325352583,
+ "y" : 504.1270499397069
+ }, {
+ "x" : 421.62170288176276,
+ "y" : 502.0952777611092
+ }, {
+ "x" : 421.00040608190466,
+ "y" : 496.889540749602
+ }, {
+ "x" : 424.26598906342406,
+ "y" : 496.7323949402198
+ }, {
+ "x" : 428.5226948882919,
+ "y" : 496.54184487555176
+ }, {
+ "x" : 435.9925649614306,
+ "y" : 496.2035211035982
+ }, {
+ "x" : 436.36188651737757,
+ "y" : 515.7536421166733
+ }, {
+ "x" : 420.72413037507795,
+ "y" : 515.9395053461194
+ }, {
+ "x" : 407.57715371996164,
+ "y" : 516.2092172391713
+ }, {
+ "x" : 406.3983917273581,
+ "y" : 513.8552968278527
+ }, {
+ "x" : 400.7074634714518,
+ "y" : 513.9753547059372
+ }, {
+ "x" : 393.3551312168129,
+ "y" : 514.1396575337276
+ }, {
+ "x" : 393.4037123065209,
+ "y" : 516.6780756143853
+ }, {
+ "x" : 388.9563275333494,
+ "y" : 516.7843519933522
+ }, {
+ "x" : 381.14896042842884,
+ "y" : 516.9778662798926
+ }, {
+ "x" : 364.2423830991611,
+ "y" : 517.2658388046548
+ }, {
+ "x" : 348.42653431068175,
+ "y" : 517.6573066245764
+ }, {
+ "x" : 348.17670408124104,
+ "y" : 495.65232992265373
+ }, {
+ "x" : 360.2626877318835,
+ "y" : 495.5025563808158
+ }, {
+ "x" : 360.3681020063814,
+ "y" : 504.3180841617286
+ }, {
+ "x" : 363.98720031103585,
+ "y" : 504.27293219417334
+ }, {
+ "x" : 366.1315189336892,
+ "y" : 504.25605536438525
+ }, {
+ "x" : 366.02611350861844,
+ "y" : 495.4405272388831
+ }, {
+ "x" : 377.52359965711366,
+ "y" : 495.3043721942231
+ }, {
+ "x" : 377.63704312150367,
+ "y" : 504.76549403369427
+ }, {
+ "x" : 381.32305843534414,
+ "y" : 504.7226042058319
+ }, {
+ "x" : 386.78902704734355,
+ "y" : 504.87311429996043
+ }, {
+ "x" : 389.94191128597595,
+ "y" : 504.9680613325909
+ }, {
+ "x" : 395.07366973208264,
+ "y" : 499.3439410664141
+ }, {
+ "x" : 397.41340494179167,
+ "y" : 501.9260653620586
+ }, {
+ "x" : 400.38896867108997,
+ "y" : 501.98167341016233
+ }, {
+ "x" : 403.44669323728886,
+ "y" : 502.0289211347699
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 270.36135551705956,
+ "y" : 240.38110770005733
+ }, {
+ "x" : 281.88624601089396,
+ "y" : 237.23044441174716
+ }, {
+ "x" : 283.58530412765685,
+ "y" : 243.5961396759376
+ }, {
+ "x" : 287.71678397920914,
+ "y" : 259.3117665918544
+ }, {
+ "x" : 271.04523711581714,
+ "y" : 263.65790764335543
+ }, {
+ "x" : 269.0259239724837,
+ "y" : 255.96855502575636
+ }, {
+ "x" : 264.48000413086265,
+ "y" : 257.2287545520812
+ }, {
+ "x" : 255.78524038440082,
+ "y" : 259.67350296117365
+ }, {
+ "x" : 243.48297608853318,
+ "y" : 263.14299639873207
+ }, {
+ "x" : 242.0318454731023,
+ "y" : 252.2795298891142
+ }, {
+ "x" : 241.76598804828245,
+ "y" : 250.22336854226887
+ }, {
+ "x" : 241.4067950026365,
+ "y" : 248.28645819146186
+ }, {
+ "x" : 251.55675727396738,
+ "y" : 245.5123144192621
+ }, {
+ "x" : 258.0627763485536,
+ "y" : 243.73943441268057
+ }, {
+ "x" : 260.57982269779313,
+ "y" : 243.04521668236703
+ }, {
+ "x" : 263.57759906339925,
+ "y" : 242.22252059355378
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 341.52014667447656,
+ "y" : 243.40809135884047
+ }, {
+ "x" : 338.3758498802781,
+ "y" : 244.38158681429923
+ }, {
+ "x" : 337.15228615282103,
+ "y" : 240.47963405307382
+ }, {
+ "x" : 325.90916654560715,
+ "y" : 243.6619159253314
+ }, {
+ "x" : 322.6465323034208,
+ "y" : 232.65961709618568
+ }, {
+ "x" : 320.8407597754849,
+ "y" : 226.59072749968618
+ }, {
+ "x" : 329.25114774052054,
+ "y" : 224.41466546058655
+ }, {
+ "x" : 332.6888028192334,
+ "y" : 223.3508941801265
+ }, {
+ "x" : 337.70731708349194,
+ "y" : 221.98425176925957
+ }, {
+ "x" : 342.56819264777005,
+ "y" : 220.65681679733098
+ }, {
+ "x" : 347.7369179633679,
+ "y" : 219.2507298933342
+ }, {
+ "x" : 351.57609919272363,
+ "y" : 218.20047414395958
+ }, {
+ "x" : 354.8817516686395,
+ "y" : 217.2991694668308
+ }, {
+ "x" : 361.99647473567165,
+ "y" : 215.3577311085537
+ }, {
+ "x" : 373.7389758314239,
+ "y" : 212.15893491357565
+ }, {
+ "x" : 374.567108877236,
+ "y" : 215.20200111158192
+ }, {
+ "x" : 378.376358145033,
+ "y" : 229.20455310679972
+ }, {
+ "x" : 367.08226205257233,
+ "y" : 232.35166335944086
+ }, {
+ "x" : 366.3402822013013,
+ "y" : 229.84555538091809
+ }, {
+ "x" : 355.96786646801047,
+ "y" : 232.81229081563652
+ }, {
+ "x" : 346.8484472632408,
+ "y" : 235.26487483736128
+ }, {
+ "x" : 339.66455233178567,
+ "y" : 237.49328591674566
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 376.70920879615005,
+ "y" : 66.53856210038066
+ }, {
+ "x" : 315.5184670968447,
+ "y" : 82.9167994260788
+ }, {
+ "x" : 299.1758069342468,
+ "y" : 87.2071912670508
+ }, {
+ "x" : 287.32676557451487,
+ "y" : 90.46932777483016
+ }, {
+ "x" : 280.89529656467494,
+ "y" : 92.2335652448237
+ }, {
+ "x" : 274.1770291929133,
+ "y" : 67.98619031812996
+ }, {
+ "x" : 285.5899766215589,
+ "y" : 64.85400352720171
+ }, {
+ "x" : 288.31168057769537,
+ "y" : 74.68095377553254
+ }, {
+ "x" : 295.17930128006265,
+ "y" : 72.78674689959735
+ }, {
+ "x" : 294.3979554111138,
+ "y" : 69.67851255089045
+ }, {
+ "x" : 296.4261540810112,
+ "y" : 69.13476314768195
+ }, {
+ "x" : 305.25988340144977,
+ "y" : 66.7726149475202
+ }, {
+ "x" : 299.2577873406699,
+ "y" : 44.47412436269224
+ }, {
+ "x" : 288.6884320160607,
+ "y" : 47.311988606117666
+ }, {
+ "x" : 286.17371760250535,
+ "y" : 37.970426018349826
+ }, {
+ "x" : 292.97184271446895,
+ "y" : 36.151761097833514
+ }, {
+ "x" : 291.25821364228614,
+ "y" : 29.774452566169202
+ }, {
+ "x" : 300.5277590362821,
+ "y" : 27.293431717902422
+ }, {
+ "x" : 304.02894059033133,
+ "y" : 40.28419250249863
+ }, {
+ "x" : 310.7659566901857,
+ "y" : 65.29994672350585
+ }, {
+ "x" : 371.9568650427973,
+ "y" : 48.92165426257998
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 831.6089378765319,
+ "y" : 125.23934531584382
+ }, {
+ "x" : 813.1702968600439,
+ "y" : 131.84976958483458
+ }, {
+ "x" : 808.8814802053384,
+ "y" : 119.95582356490195
+ }, {
+ "x" : 827.3197776908055,
+ "y" : 113.35649833176285
+ }, {
+ "x" : 846.7791782413842,
+ "y" : 106.27985134813935
+ }, {
+ "x" : 851.2874505341752,
+ "y" : 118.94894358050078
+ }, {
+ "x" : 854.286266813986,
+ "y" : 127.37252942100167
+ }, {
+ "x" : 852.8320691589033,
+ "y" : 127.8909337837249
+ }, {
+ "x" : 864.5620485933032,
+ "y" : 160.6194888036698
+ }, {
+ "x" : 853.9283976482693,
+ "y" : 164.25523974187672
+ }, {
+ "x" : 852.9509236570448,
+ "y" : 161.67435788922012
+ }, {
+ "x" : 831.6802260783734,
+ "y" : 169.26846854761243
+ }, {
+ "x" : 834.0068011303665,
+ "y" : 183.49955348670483
+ }, {
+ "x" : 827.5703207000624,
+ "y" : 186.954208326526
+ }, {
+ "x" : 828.175315833767,
+ "y" : 192.1928358571604
+ }, {
+ "x" : 806.7427980024368,
+ "y" : 199.29201803170145
+ }, {
+ "x" : 800.7679974925704,
+ "y" : 180.22041271720082
+ }, {
+ "x" : 813.186675036326,
+ "y" : 175.966043619439
+ }, {
+ "x" : 824.4632267743582,
+ "y" : 171.80670779850334
+ }, {
+ "x" : 821.5141398403794,
+ "y" : 163.67409818526357
+ }, {
+ "x" : 819.921143260086,
+ "y" : 159.03635992575437
+ }, {
+ "x" : 814.4612279845169,
+ "y" : 144.34360486175865
+ }, {
+ "x" : 822.776600791607,
+ "y" : 141.464089541696
+ }, {
+ "x" : 828.6932689149398,
+ "y" : 156.73969434015453
+ }, {
+ "x" : 848.6087862063432,
+ "y" : 149.37803065683693
+ }, {
+ "x" : 842.4277497181902,
+ "y" : 131.56782110780478
+ }, {
+ "x" : 839.2182738481788,
+ "y" : 122.5474460395053
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 315.65196162927896,
+ "y" : 177.01578589715064
+ }, {
+ "x" : 297.7245100508444,
+ "y" : 182.17635145504028
+ }, {
+ "x" : 298.1741148575675,
+ "y" : 183.63787829969078
+ }, {
+ "x" : 281.88443447160535,
+ "y" : 188.57540453132242
+ }, {
+ "x" : 277.93532227445394,
+ "y" : 175.62522259540856
+ }, {
+ "x" : 294.22503432817757,
+ "y" : 170.68768430873752
+ }, {
+ "x" : 312.40013428311795,
+ "y" : 165.46867608185858
+ }, {
+ "x" : 319.1408408083953,
+ "y" : 163.80388680752367
+ }, {
+ "x" : 317.25963631272316,
+ "y" : 157.32079368457198
+ }, {
+ "x" : 311.4866738910787,
+ "y" : 158.98474831227213
+ }, {
+ "x" : 293.40821781905834,
+ "y" : 164.20701002236456
+ }, {
+ "x" : 291.6670649603475,
+ "y" : 158.20706364512444
+ }, {
+ "x" : 308.50520671822596,
+ "y" : 153.34363321121782
+ }, {
+ "x" : 308.0578436006326,
+ "y" : 151.8154236478731
+ }, {
+ "x" : 309.3056103140116,
+ "y" : 151.45683636702597
+ }, {
+ "x" : 325.0462279828498,
+ "y" : 146.9125869665295
+ }, {
+ "x" : 327.26814986695535,
+ "y" : 154.5531422821805
+ }, {
+ "x" : 341.3773048175499,
+ "y" : 150.48813249822706
+ }, {
+ "x" : 343.3588066098746,
+ "y" : 157.30839504208416
+ }, {
+ "x" : 340.2695030204486,
+ "y" : 158.19473184645176
+ }, {
+ "x" : 341.09733001934364,
+ "y" : 161.02638268005103
+ }, {
+ "x" : 327.8749456042424,
+ "y" : 164.84305713605136
+ }, {
+ "x" : 325.0730298325652,
+ "y" : 155.19140194915235
+ }, {
+ "x" : 326.92078591755126,
+ "y" : 161.5621109828353
+ }, {
+ "x" : 329.85505999519955,
+ "y" : 173.2543186293915
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 531.1555326475063,
+ "y" : 227.44759483635426
+ }, {
+ "x" : 552.0513035649201,
+ "y" : 219.25008997879922
+ }, {
+ "x" : 539.4438919535605,
+ "y" : 194.84854865074158
+ }, {
+ "x" : 531.1957206801744,
+ "y" : 178.27090787515044
+ }, {
+ "x" : 546.32069361303,
+ "y" : 170.79145575407892
+ }, {
+ "x" : 554.5692094604019,
+ "y" : 187.35800540447235
+ }, {
+ "x" : 550.2162934388034,
+ "y" : 189.51458382047713
+ }, {
+ "x" : 564.765981237404,
+ "y" : 215.03854320570827
+ }, {
+ "x" : 576.1904875605833,
+ "y" : 211.3398924395442
+ }, {
+ "x" : 569.861184688285,
+ "y" : 196.58475033473223
+ }, {
+ "x" : 563.666289767134,
+ "y" : 182.4794660806656
+ }, {
+ "x" : 566.2579090570798,
+ "y" : 181.1203143298626
+ }, {
+ "x" : 560.9397595238406,
+ "y" : 169.9373823478818
+ }, {
+ "x" : 570.0969595364295,
+ "y" : 165.70619853120297
+ }, {
+ "x" : 575.2533843610436,
+ "y" : 176.82806280534714
+ }, {
+ "x" : 579.7753394159954,
+ "y" : 187.11635151691735
+ }, {
+ "x" : 581.6701053117868,
+ "y" : 191.41925963014364
+ }, {
+ "x" : 583.6469351083506,
+ "y" : 196.15885612275451
+ }, {
+ "x" : 588.3664250842994,
+ "y" : 207.4329165685922
+ }, {
+ "x" : 590.6654198374599,
+ "y" : 214.5421324931085
+ }, {
+ "x" : 578.4894950934686,
+ "y" : 218.44910314213485
+ }, {
+ "x" : 532.2680435777875,
+ "y" : 231.99118083249778
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 523.0844549606554,
+ "y" : 63.41972055006772
+ }, {
+ "x" : 523.55524691951,
+ "y" : 64.69283462036401
+ }, {
+ "x" : 528.1117722403724,
+ "y" : 74.18114306684583
+ }, {
+ "x" : 517.6229596397607,
+ "y" : 79.04627739917487
+ }, {
+ "x" : 512.5952542693121,
+ "y" : 68.29597810283303
+ }, {
+ "x" : 511.4080166980857,
+ "y" : 68.84570655878633
+ }, {
+ "x" : 506.61701949790586,
+ "y" : 58.581810211762786
+ }, {
+ "x" : 502.8196863611229,
+ "y" : 48.87429777998477
+ }, {
+ "x" : 499.16050752135925,
+ "y" : 50.764987342990935
+ }, {
+ "x" : 482.505826191511,
+ "y" : 57.9038127977401
+ }, {
+ "x" : 478.1314552386757,
+ "y" : 48.087889187037945
+ }, {
+ "x" : 476.50560618238524,
+ "y" : 44.417143765836954
+ }, {
+ "x" : 493.27189843636006,
+ "y" : 37.05953068006784
+ }, {
+ "x" : 497.53300763852894,
+ "y" : 35.20022259373218
+ }, {
+ "x" : 505.9362621633336,
+ "y" : 31.477611262351274
+ }, {
+ "x" : 510.2851281197509,
+ "y" : 33.20391757413745
+ }, {
+ "x" : 518.2934726208914,
+ "y" : 53.15581405721605
+ }, {
+ "x" : 518.6472575354856,
+ "y" : 53.92430779431015
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 528.1373409738299,
+ "y" : 53.29803248587996
+ }, {
+ "x" : 536.1025370971765,
+ "y" : 49.98351690918207
+ }, {
+ "x" : 539.4545306117507,
+ "y" : 43.28709465637803
+ }, {
+ "x" : 540.276685053017,
+ "y" : 33.90196408238262
+ }, {
+ "x" : 549.3910903772339,
+ "y" : 32.495363348163664
+ }, {
+ "x" : 560.9765316017438,
+ "y" : 28.891090251505375
+ }, {
+ "x" : 571.7644391804934,
+ "y" : 25.538142883218825
+ }, {
+ "x" : 576.2410593638197,
+ "y" : 39.830343605950475
+ }, {
+ "x" : 553.8603224414401,
+ "y" : 46.78729500062764
+ }, {
+ "x" : 546.2840148950927,
+ "y" : 50.048121576197445
+ }, {
+ "x" : 543.3221913080197,
+ "y" : 52.45181607734412
+ }, {
+ "x" : 546.5482137990184,
+ "y" : 61.21664688549936
+ }, {
+ "x" : 548.7882763971575,
+ "y" : 66.3211278365925
+ }, {
+ "x" : 553.5003941478208,
+ "y" : 64.33240415528417
+ }, {
+ "x" : 554.8118806704879,
+ "y" : 66.94672320410609
+ }, {
+ "x" : 559.5460536873434,
+ "y" : 78.23236783407629
+ }, {
+ "x" : 542.1168787439819,
+ "y" : 85.60084776952863
+ }, {
+ "x" : 540.3514418783598,
+ "y" : 81.21330141462386
+ }, {
+ "x" : 537.3432092232397,
+ "y" : 74.60317198280245
+ }, {
+ "x" : 535.5699547362747,
+ "y" : 70.22649069316685
+ }, {
+ "x" : 533.9965734210564,
+ "y" : 66.54636624082923
+ }, {
+ "x" : 529.9243565995712,
+ "y" : 57.708552666939795
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 603.8954274781281,
+ "y" : 47.59308820031583
+ }, {
+ "x" : 597.7058832228649,
+ "y" : 25.588313263840973
+ }, {
+ "x" : 610.3721855501644,
+ "y" : 21.942651401273906
+ }, {
+ "x" : 616.6929611831438,
+ "y" : 43.80722083710134
+ }, {
+ "x" : 619.0865492208395,
+ "y" : 52.08788717165589
+ }, {
+ "x" : 619.8005793599878,
+ "y" : 54.53745969198644
+ }, {
+ "x" : 620.3604297684506,
+ "y" : 56.481157986447215
+ }, {
+ "x" : 622.8004412533483,
+ "y" : 64.93028413690627
+ }, {
+ "x" : 625.3808738918742,
+ "y" : 73.85144428629428
+ }, {
+ "x" : 626.9214788108366,
+ "y" : 79.16605413984507
+ }, {
+ "x" : 627.8877392238937,
+ "y" : 82.52535067591816
+ }, {
+ "x" : 630.974873428233,
+ "y" : 93.19927770271897
+ }, {
+ "x" : 631.7416396102635,
+ "y" : 95.85090147517622
+ }, {
+ "x" : 634.5616503118072,
+ "y" : 105.61460710130632
+ }, {
+ "x" : 636.182479754556,
+ "y" : 111.19895326346159
+ }, {
+ "x" : 636.9020569596905,
+ "y" : 113.70434723980725
+ }, {
+ "x" : 638.6428727090824,
+ "y" : 119.70440769288689
+ }, {
+ "x" : 640.1693265411304,
+ "y" : 124.996293887496
+ }, {
+ "x" : 628.4665091108764,
+ "y" : 130.3210162166506
+ }, {
+ "x" : 626.571156283957,
+ "y" : 125.37274921312928
+ }, {
+ "x" : 625.4018450393341,
+ "y" : 122.29589617624879
+ }, {
+ "x" : 623.896631951211,
+ "y" : 118.3621342247352
+ }, {
+ "x" : 626.1294092755998,
+ "y" : 117.49160302057862
+ }, {
+ "x" : 625.0731282810448,
+ "y" : 114.37405209522694
+ }, {
+ "x" : 624.2602004508954,
+ "y" : 111.98790471442044
+ }, {
+ "x" : 627.9222307387972,
+ "y" : 110.67595638334751
+ }, {
+ "x" : 627.1123485759599,
+ "y" : 107.97837580367923
+ }, {
+ "x" : 626.707007539575,
+ "y" : 106.75196099560708
+ }, {
+ "x" : 622.9386801146902,
+ "y" : 107.90456246212125
+ }, {
+ "x" : 619.1746188899269,
+ "y" : 96.77391723543406
+ }, {
+ "x" : 601.4000227754004,
+ "y" : 102.46164586860687
+ }, {
+ "x" : 599.36697323923,
+ "y" : 96.29599076230079
+ }, {
+ "x" : 607.5565780835459,
+ "y" : 93.61220306064934
+ }, {
+ "x" : 617.139015618246,
+ "y" : 90.46352745499462
+ }, {
+ "x" : 614.8022617930546,
+ "y" : 82.48518364038318
+ }, {
+ "x" : 610.4877688358538,
+ "y" : 68.6879592416808
+ }, {
+ "x" : 607.6477314986987,
+ "y" : 58.41178737953305
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 659.0617374888388,
+ "y" : 180.26265554968268
+ }, {
+ "x" : 660.9860947856214,
+ "y" : 186.55819216556847
+ }, {
+ "x" : 663.1058616847731,
+ "y" : 193.46113122161478
+ }, {
+ "x" : 652.8688559520524,
+ "y" : 196.59879797883332
+ }, {
+ "x" : 648.6707585048862,
+ "y" : 183.5509118316695
+ }, {
+ "x" : 644.7720520722214,
+ "y" : 171.5589840952307
+ }, {
+ "x" : 643.2227219513152,
+ "y" : 172.0297303115949
+ }, {
+ "x" : 639.8850501428824,
+ "y" : 161.50311981514096
+ }, {
+ "x" : 635.4884764490416,
+ "y" : 147.93675402831286
+ }, {
+ "x" : 627.8945816187188,
+ "y" : 150.39578468818218
+ }, {
+ "x" : 628.8105786291417,
+ "y" : 152.37373295333236
+ }, {
+ "x" : 612.3953327840427,
+ "y" : 159.920784201473
+ }, {
+ "x" : 614.0816652160138,
+ "y" : 163.56023448333144
+ }, {
+ "x" : 605.0084626020398,
+ "y" : 167.727421422489
+ }, {
+ "x" : 598.8257161994698,
+ "y" : 154.36796516459435
+ }, {
+ "x" : 607.898933950928,
+ "y" : 150.20076804421842
+ }, {
+ "x" : 615.8306687215809,
+ "y" : 146.55145326256752
+ }, {
+ "x" : 624.3141997174826,
+ "y" : 142.6537034008652
+ }, {
+ "x" : 633.7845403817482,
+ "y" : 138.41091036889702
+ }, {
+ "x" : 644.5090041710064,
+ "y" : 133.84320930577815
+ }, {
+ "x" : 647.8623601674335,
+ "y" : 144.1255719428882
+ }, {
+ "x" : 648.8643263387494,
+ "y" : 147.30805633123964
+ }, {
+ "x" : 652.1325032679597,
+ "y" : 157.6876898156479
+ }, {
+ "x" : 653.7095351411263,
+ "y" : 162.8032648609951
+ }, {
+ "x" : 655.4143628193997,
+ "y" : 168.32369115576148
+ }, {
+ "x" : 657.8413651827723,
+ "y" : 176.27171977981925
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 654.058142263093,
+ "y" : 199.96561472397298
+ }, {
+ "x" : 664.3234400588553,
+ "y" : 196.65088320337236
+ }, {
+ "x" : 666.7335071490379,
+ "y" : 203.77500305138528
+ }, {
+ "x" : 675.1858346238732,
+ "y" : 229.30526548437774
+ }, {
+ "x" : 689.293912071269,
+ "y" : 276.53319013491273
+ }, {
+ "x" : 668.9623559877509,
+ "y" : 285.2165063964203
+ }, {
+ "x" : 640.2925979886204,
+ "y" : 297.46870103944093
+ }, {
+ "x" : 631.4492709138431,
+ "y" : 277.7999886954203
+ }, {
+ "x" : 625.9226661510766,
+ "y" : 265.5195856951177
+ }, {
+ "x" : 640.4257130906917,
+ "y" : 259.04305598232895
+ }, {
+ "x" : 645.9448597100563,
+ "y" : 271.3232230897993
+ }, {
+ "x" : 648.5764137711376,
+ "y" : 277.17527692765
+ }, {
+ "x" : 662.5433055352187,
+ "y" : 270.9255201900378
+ }, {
+ "x" : 648.7620056308806,
+ "y" : 240.2868228862062
+ }, {
+ "x" : 642.0027688067639,
+ "y" : 243.16336392983794
+ }, {
+ "x" : 635.8699040352367,
+ "y" : 230.31734410859644
+ }, {
+ "x" : 628.9090777811361,
+ "y" : 215.7522528525442
+ }, {
+ "x" : 630.9518641297473,
+ "y" : 214.77518990822136
+ }, {
+ "x" : 640.2793747793185,
+ "y" : 210.3495827978477
+ }, {
+ "x" : 647.440087941708,
+ "y" : 225.38872560672462
+ }, {
+ "x" : 650.8842294947244,
+ "y" : 223.91368827596307
+ }, {
+ "x" : 655.060569316498,
+ "y" : 237.60616978723556
+ }, {
+ "x" : 663.0389707334107,
+ "y" : 257.98011377081275
+ }, {
+ "x" : 667.1917697011959,
+ "y" : 256.2396778156981
+ }, {
+ "x" : 672.6639513584087,
+ "y" : 268.80757473036647
+ }, {
+ "x" : 675.2198295919225,
+ "y" : 267.62528904993087
+ }, {
+ "x" : 664.6516260876087,
+ "y" : 233.31187033373863
+ }, {
+ "x" : 656.4629786697915,
+ "y" : 207.245321162045
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 214.31482144223992,
+ "y" : 124.14186409674585
+ }, {
+ "x" : 214.970723870676,
+ "y" : 133.19839452486485
+ }, {
+ "x" : 217.00260795198847,
+ "y" : 154.02820206526667
+ }, {
+ "x" : 216.7497621094808,
+ "y" : 154.2422283422202
+ }, {
+ "x" : 217.55939541815314,
+ "y" : 162.04666449408978
+ }, {
+ "x" : 218.22351178678218,
+ "y" : 168.4220545552671
+ }, {
+ "x" : 195.43774769548327,
+ "y" : 170.8494954155758
+ }, {
+ "x" : 194.35904732043855,
+ "y" : 162.19042961951345
+ }, {
+ "x" : 179.39423396484926,
+ "y" : 163.59012854192406
+ }, {
+ "x" : 165.07894147536717,
+ "y" : 164.9338068915531
+ }, {
+ "x" : 155.9764833280351,
+ "y" : 165.77396562322974
+ }, {
+ "x" : 156.2102974933805,
+ "y" : 168.56337370350957
+ }, {
+ "x" : 152.3061715766089,
+ "y" : 168.888374526985
+ }, {
+ "x" : 152.05972475500312,
+ "y" : 166.03178503084928
+ }, {
+ "x" : 150.14093456370756,
+ "y" : 166.20096757356077
+ }, {
+ "x" : 143.89269530994352,
+ "y" : 166.72537234891206
+ }, {
+ "x" : 143.1600294507807,
+ "y" : 158.17808254156262
+ }, {
+ "x" : 146.5213622422889,
+ "y" : 157.83483868837357
+ }, {
+ "x" : 149.3781620010268,
+ "y" : 157.66379110794514
+ }, {
+ "x" : 151.34156864706893,
+ "y" : 157.4961071703583
+ }, {
+ "x" : 151.0164450573502,
+ "y" : 153.6577681740746
+ }, {
+ "x" : 163.93712636898272,
+ "y" : 152.83463041763753
+ }, {
+ "x" : 170.9345470535336,
+ "y" : 152.16852690000087
+ }, {
+ "x" : 178.10485634754878,
+ "y" : 151.45261030085385
+ }, {
+ "x" : 177.1151036170777,
+ "y" : 139.48092802613974
+ }, {
+ "x" : 175.56995226838626,
+ "y" : 139.60702675953507
+ }, {
+ "x" : 162.71612601506058,
+ "y" : 140.65491066593677
+ }, {
+ "x" : 153.01209093467332,
+ "y" : 141.45261104684323
+ }, {
+ "x" : 149.98127627617214,
+ "y" : 141.70682045910507
+ }, {
+ "x" : 149.00042285304517,
+ "y" : 129.46841694321483
+ }, {
+ "x" : 161.705556668574,
+ "y" : 128.41550491843373
+ }, {
+ "x" : 174.40288775286172,
+ "y" : 127.37348480895162
+ }, {
+ "x" : 176.10493786423467,
+ "y" : 127.2304052747786
+ }, {
+ "x" : 189.0632708547637,
+ "y" : 126.1749351369217
+ }, {
+ "x" : 190.6534136973787,
+ "y" : 126.0392255205661
+ }, {
+ "x" : 199.77563536481466,
+ "y" : 125.27766549028456
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 168.66211655933876,
+ "y" : 200.30203937925398
+ }, {
+ "x" : 175.60787216760218,
+ "y" : 199.17803427018225
+ }, {
+ "x" : 193.00052355742082,
+ "y" : 196.41351225879043
+ }, {
+ "x" : 193.91088217997458,
+ "y" : 202.10734845139086
+ }, {
+ "x" : 176.51824720250443,
+ "y" : 204.87186726555228
+ }, {
+ "x" : 155.3743180045858,
+ "y" : 208.0667060688138
+ }, {
+ "x" : 154.58242045762017,
+ "y" : 203.0555571364239
+ }, {
+ "x" : 120.55661704496015,
+ "y" : 209.68963752221316
+ }, {
+ "x" : 117.1546917213127,
+ "y" : 192.18509866762906
+ }, {
+ "x" : 121.56783953786362,
+ "y" : 191.3319905968383
+ }, {
+ "x" : 191.67645669810008,
+ "y" : 177.9996380843222
+ }, {
+ "x" : 192.39937079511583,
+ "y" : 181.74008711893111
+ }, {
+ "x" : 204.17763926961925,
+ "y" : 180.1331958565861
+ }, {
+ "x" : 204.00031152949668,
+ "y" : 177.6572166904807
+ }, {
+ "x" : 211.81300969002768,
+ "y" : 177.0964476391673
+ }, {
+ "x" : 218.57355689106043,
+ "y" : 176.61158834025264
+ }, {
+ "x" : 219.59114177909214,
+ "y" : 190.631443541497
+ }, {
+ "x" : 220.4175786508713,
+ "y" : 202.5865248478949
+ }, {
+ "x" : 221.06373873306438,
+ "y" : 211.93201266601682
+ }, {
+ "x" : 221.84229622478597,
+ "y" : 223.31804867368191
+ }, {
+ "x" : 222.48202740610577,
+ "y" : 233.29751563630998
+ }, {
+ "x" : 200.87295858375728,
+ "y" : 234.82986809778959
+ }, {
+ "x" : 185.11388555460144,
+ "y" : 235.94694489613175
+ }, {
+ "x" : 184.42054775729775,
+ "y" : 226.0101893907413
+ }, {
+ "x" : 183.3640831974335,
+ "y" : 210.4869990553707
+ }, {
+ "x" : 194.45845623558853,
+ "y" : 209.73608059249818
+ }, {
+ "x" : 195.13616329920478,
+ "y" : 219.6945650698617
+ }, {
+ "x" : 199.88865659898147,
+ "y" : 219.37585415132344
+ }, {
+ "x" : 206.9093960170867,
+ "y" : 218.8997284779325
+ }, {
+ "x" : 206.50025834422559,
+ "y" : 212.91120024677366
+ }, {
+ "x" : 205.01049591461197,
+ "y" : 191.67681847326458
+ }, {
+ "x" : 204.88324717909563,
+ "y" : 189.92572618927807
+ }, {
+ "x" : 194.29767687385902,
+ "y" : 191.48368679359555
+ }, {
+ "x" : 195.01501862180885,
+ "y" : 195.16831812728196
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 63.35125032206997,
+ "y" : 465.2062550969422
+ }, {
+ "x" : 69.15876189351548,
+ "y" : 463.60999008920044
+ }, {
+ "x" : 70.10223552794196,
+ "y" : 466.7681421805173
+ }, {
+ "x" : 69.1951102965977,
+ "y" : 466.96019856631756
+ }, {
+ "x" : 72.72150008089375,
+ "y" : 484.30200662091374
+ }, {
+ "x" : 78.50152892176993,
+ "y" : 503.91137852240354
+ }, {
+ "x" : 71.27144861361012,
+ "y" : 504.6476377155632
+ }, {
+ "x" : 65.53288075712044,
+ "y" : 505.3004863867536
+ }, {
+ "x" : 58.39448937412817,
+ "y" : 507.0745781753212
+ }, {
+ "x" : 58.04804013366811,
+ "y" : 504.0922459298745
+ }, {
+ "x" : 51.89238866511732,
+ "y" : 504.53082860354334
+ }, {
+ "x" : 49.68634742079303,
+ "y" : 493.5308088827878
+ }, {
+ "x" : 48.871221447363496,
+ "y" : 489.6537676015869
+ }, {
+ "x" : 46.83134165825322,
+ "y" : 489.8856687024236
+ }, {
+ "x" : 44.56679114222061,
+ "y" : 474.199556151405
+ }, {
+ "x" : 53.38439242320601,
+ "y" : 472.9602666432038
+ }, {
+ "x" : 60.006718756398186,
+ "y" : 471.92541581299156
+ }, {
+ "x" : 65.02677581913304,
+ "y" : 500.86638453416526
+ }, {
+ "x" : 70.75791281904094,
+ "y" : 500.2132855122909
+ }, {
+ "x" : 67.92823894729372,
+ "y" : 485.3982745781541
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 375.69269501708914,
+ "y" : 315.843293488957
+ }, {
+ "x" : 380.8489673320437,
+ "y" : 315.02651260979474
+ }, {
+ "x" : 383.59570948185865,
+ "y" : 314.58485401328653
+ }, {
+ "x" : 389.320067018969,
+ "y" : 313.69818134699017
+ }, {
+ "x" : 392.30307263555005,
+ "y" : 316.19067606143653
+ }, {
+ "x" : 392.611295167706,
+ "y" : 337.5634256117046
+ }, {
+ "x" : 384.9967093981104,
+ "y" : 339.32110842783004
+ }, {
+ "x" : 385.8999922174262,
+ "y" : 343.89100137911737
+ }, {
+ "x" : 381.7367198099382,
+ "y" : 344.8413171991706
+ }, {
+ "x" : 380.0977503216127,
+ "y" : 338.0214287871495
+ }, {
+ "x" : 379.2928681371268,
+ "y" : 332.07519376743585
+ }, {
+ "x" : 385.6759243319975,
+ "y" : 331.5222117630765
+ }, {
+ "x" : 385.3949732442852,
+ "y" : 325.0484154857695
+ }, {
+ "x" : 378.1526848428184,
+ "y" : 325.91740735061467
+ }, {
+ "x" : 376.76359706022777,
+ "y" : 322.7330801393837
+ }, {
+ "x" : 363.9424754526699,
+ "y" : 325.6953032249585
+ }, {
+ "x" : 365.6926690816181,
+ "y" : 334.2991246525198
+ }, {
+ "x" : 369.7417978825979,
+ "y" : 333.4228409677744
+ }, {
+ "x" : 372.5875120232813,
+ "y" : 346.4138757865876
+ }, {
+ "x" : 369.2354887573747,
+ "y" : 347.14671274647117
+ }, {
+ "x" : 369.9899087898666,
+ "y" : 350.6100975619629
+ }, {
+ "x" : 374.42940479074605,
+ "y" : 349.6356867775321
+ }, {
+ "x" : 379.2875263361493,
+ "y" : 348.60860446002334
+ }, {
+ "x" : 382.1948081739247,
+ "y" : 362.2025342602283
+ }, {
+ "x" : 366.2857743636705,
+ "y" : 365.57267544418573
+ }, {
+ "x" : 352.241245269659,
+ "y" : 368.61615465953946
+ }, {
+ "x" : 350.8820956342388,
+ "y" : 362.32862094044685
+ }, {
+ "x" : 347.91380311292596,
+ "y" : 348.5546396849677
+ }, {
+ "x" : 362.0018681648653,
+ "y" : 345.54599027335644
+ }, {
+ "x" : 359.91325750912074,
+ "y" : 335.495502281934
+ }, {
+ "x" : 358.3339469322236,
+ "y" : 327.56500508636236
+ }, {
+ "x" : 339.5065579449292,
+ "y" : 332.2723480248824
+ }, {
+ "x" : 339.36324430955574,
+ "y" : 331.2216620184481
+ }, {
+ "x" : 325.51122358010616,
+ "y" : 334.29393785074353
+ }, {
+ "x" : 328.80508122453466,
+ "y" : 349.01345609966666
+ }, {
+ "x" : 336.48804607603233,
+ "y" : 347.213495218195
+ }, {
+ "x" : 337.6978825761471,
+ "y" : 352.85068078618497
+ }, {
+ "x" : 339.26495576207526,
+ "y" : 352.51396782975644
+ }, {
+ "x" : 342.88859332050197,
+ "y" : 370.9273727526888
+ }, {
+ "x" : 328.02986387570854,
+ "y" : 374.27731212135404
+ }, {
+ "x" : 319.19068433670327,
+ "y" : 376.37218568101525
+ }, {
+ "x" : 309.33839948824607,
+ "y" : 378.71115938946605
+ }, {
+ "x" : 304.7640923651634,
+ "y" : 355.8041950138286
+ }, {
+ "x" : 319.19342958251946,
+ "y" : 352.6066465554759
+ }, {
+ "x" : 320.6455389300827,
+ "y" : 359.0085589401424
+ }, {
+ "x" : 316.31157260981854,
+ "y" : 360.38710362743586
+ }, {
+ "x" : 317.22973576688673,
+ "y" : 365.18000787775964
+ }, {
+ "x" : 325.66521977912635,
+ "y" : 362.91578647028655
+ }, {
+ "x" : 323.1506003435934,
+ "y" : 350.25857598055154
+ }, {
+ "x" : 320.1093346463749,
+ "y" : 336.66017946600914
+ }, {
+ "x" : 306.3573242946295,
+ "y" : 339.85825205314904
+ }, {
+ "x" : 305.16991545667406,
+ "y" : 333.33173107448965
+ }, {
+ "x" : 307.5361340884119,
+ "y" : 346.6403876543045
+ }, {
+ "x" : 299.6019111186033,
+ "y" : 348.16490851994604
+ }, {
+ "x" : 296.74975935171824,
+ "y" : 334.9178001265973
+ }, {
+ "x" : 294.7644553016871,
+ "y" : 324.44802028499544
+ }, {
+ "x" : 302.8849675214151,
+ "y" : 322.91862888168544
+ }, {
+ "x" : 301.77847517759074,
+ "y" : 317.08465638384223
+ }, {
+ "x" : 309.6067767990753,
+ "y" : 315.6122052697465
+ }, {
+ "x" : 312.60573167190887,
+ "y" : 326.92829341068864
+ }, {
+ "x" : 317.60483545891475,
+ "y" : 325.4719763053581
+ }, {
+ "x" : 337.11175553989597,
+ "y" : 321.14345483109355
+ }, {
+ "x" : 343.96498508087825,
+ "y" : 319.2265859246254
+ }, {
+ "x" : 356.0644991877489,
+ "y" : 316.25117241218686
+ }, {
+ "x" : 375.0164892990142,
+ "y" : 311.6037026476115
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 536.2854357361794,
+ "y" : 507.54580924473703
+ }, {
+ "x" : 534.2882786658593,
+ "y" : 500.98083106055856
+ }, {
+ "x" : 531.7192357104504,
+ "y" : 491.50377201940864
+ }, {
+ "x" : 528.8482111706398,
+ "y" : 479.05696291383356
+ }, {
+ "x" : 525.5100573719246,
+ "y" : 467.4400251545012
+ }, {
+ "x" : 549.395614681649,
+ "y" : 460.17768702749163
+ }, {
+ "x" : 552.889540924225,
+ "y" : 471.58848735596985
+ }, {
+ "x" : 541.6611646083184,
+ "y" : 475.0044750114903
+ }, {
+ "x" : 545.6046057989588,
+ "y" : 487.87681991700083
+ }, {
+ "x" : 546.5233144868398,
+ "y" : 490.87846520729363
+ }, {
+ "x" : 553.1648783297278,
+ "y" : 489.05486336071044
+ }, {
+ "x" : 570.6896247069817,
+ "y" : 483.01372845377773
+ }, {
+ "x" : 574.8417107684072,
+ "y" : 481.9519145023078
+ }, {
+ "x" : 576.5832753990544,
+ "y" : 472.67562704347074
+ }, {
+ "x" : 580.4109784197062,
+ "y" : 459.36400151252747
+ }, {
+ "x" : 585.2051107762381,
+ "y" : 441.8903223471716
+ }, {
+ "x" : 587.0236207325943,
+ "y" : 432.7612697519362
+ }, {
+ "x" : 581.9996259701438,
+ "y" : 432.525320163928
+ }, {
+ "x" : 574.5227414350957,
+ "y" : 432.18452079966664
+ }, {
+ "x" : 570.9330043997616,
+ "y" : 432.01913235522807
+ }, {
+ "x" : 567.068536642124,
+ "y" : 431.8333686972037
+ }, {
+ "x" : 562.0441670760047,
+ "y" : 431.60855034645647
+ }, {
+ "x" : 555.3405495651532,
+ "y" : 431.2938143098727
+ }, {
+ "x" : 547.713787241606,
+ "y" : 431.2039074767381
+ }, {
+ "x" : 547.7828838573769,
+ "y" : 428.0463760914281
+ }, {
+ "x" : 536.7875172600616,
+ "y" : 428.0767145482823
+ }, {
+ "x" : 536.7834135732846,
+ "y" : 426.4298900756985
+ }, {
+ "x" : 529.6524202013388,
+ "y" : 427.0910324770957
+ }, {
+ "x" : 530.2829490890726,
+ "y" : 430.4723905613646
+ }, {
+ "x" : 533.5630884552374,
+ "y" : 442.26539646741
+ }, {
+ "x" : 542.203434699215,
+ "y" : 439.88600365724415
+ }, {
+ "x" : 545.2911210432649,
+ "y" : 450.9827103484422
+ }, {
+ "x" : 523.3441705731675,
+ "y" : 457.0419395705685
+ }, {
+ "x" : 520.2564468283672,
+ "y" : 445.94524569343776
+ }, {
+ "x" : 516.9766575079411,
+ "y" : 434.1411343794316
+ }, {
+ "x" : 512.5075913529145,
+ "y" : 418.7477143742144
+ }, {
+ "x" : 536.7568713041255,
+ "y" : 416.8270351672545
+ }, {
+ "x" : 556.1101224787999,
+ "y" : 417.7234361618757
+ }, {
+ "x" : 571.5980965662748,
+ "y" : 418.67888724803925
+ }, {
+ "x" : 603.5253641770687,
+ "y" : 423.94871001318097
+ }, {
+ "x" : 599.690497695934,
+ "y" : 439.0180327175185
+ }, {
+ "x" : 598.6009910416324,
+ "y" : 443.29833013378084
+ }, {
+ "x" : 594.1111164157046,
+ "y" : 459.91439878288656
+ }, {
+ "x" : 589.7204906704137,
+ "y" : 476.67845388688147
+ }, {
+ "x" : 585.2102250324097,
+ "y" : 493.238209374249
+ }, {
+ "x" : 574.7073465348221,
+ "y" : 495.88859927188605
+ }, {
+ "x" : 557.2481516825501,
+ "y" : 501.53138175047934
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 642.951906445669,
+ "y" : 327.6882168063894
+ }, {
+ "x" : 651.1041428190656,
+ "y" : 324.55819933488965
+ }, {
+ "x" : 664.902802072349,
+ "y" : 318.6588280070573
+ }, {
+ "x" : 673.734333661967,
+ "y" : 338.6721213562414
+ }, {
+ "x" : 681.4616751081776,
+ "y" : 355.4438622780144
+ }, {
+ "x" : 687.710142205935,
+ "y" : 368.82790462858975
+ }, {
+ "x" : 676.049742070958,
+ "y" : 374.23181794397533
+ }, {
+ "x" : 669.8008811742766,
+ "y" : 360.85890246834606
+ }, {
+ "x" : 661.7356061919127,
+ "y" : 343.95340496115386
+ }, {
+ "x" : 657.3841048288159,
+ "y" : 334.13807776756585
+ }, {
+ "x" : 655.6838092292892,
+ "y" : 334.89301540795714
+ }, {
+ "x" : 651.4380626350176,
+ "y" : 340.05721641890705
+ }, {
+ "x" : 648.9598263646476,
+ "y" : 349.5423237681389
+ }, {
+ "x" : 645.6183102168143,
+ "y" : 362.336231819354
+ }, {
+ "x" : 645.0072868568823,
+ "y" : 364.78568045794964
+ }, {
+ "x" : 658.4298297764035,
+ "y" : 368.9429052192718
+ }, {
+ "x" : 659.7569941894617,
+ "y" : 381.693819090724
+ }, {
+ "x" : 650.7762842248194,
+ "y" : 381.13536714203656
+ }, {
+ "x" : 651.2873133122921,
+ "y" : 373.9205063255504
+ }, {
+ "x" : 643.2761724099983,
+ "y" : 371.7591679757461
+ }, {
+ "x" : 642.0630622473545,
+ "y" : 376.6138616008684
+ }, {
+ "x" : 637.7082449977752,
+ "y" : 392.08844853471965
+ }, {
+ "x" : 636.156497081276,
+ "y" : 398.3781508989632
+ }, {
+ "x" : 642.9319997795392,
+ "y" : 399.8747856738046
+ }, {
+ "x" : 658.4533525655279,
+ "y" : 402.93445940315723
+ }, {
+ "x" : 658.2337457580725,
+ "y" : 414.9768143380061
+ }, {
+ "x" : 640.4698656413238,
+ "y" : 413.74418845027685
+ }, {
+ "x" : 621.9306572962087,
+ "y" : 410.11560738645494
+ }, {
+ "x" : 627.2253844783409,
+ "y" : 389.2764307167381
+ }, {
+ "x" : 629.3363626167411,
+ "y" : 380.96945644915104
+ }, {
+ "x" : 631.079333969159,
+ "y" : 374.0853753313422
+ }, {
+ "x" : 634.7178415746894,
+ "y" : 359.76603987440467
+ }, {
+ "x" : 637.9619252814446,
+ "y" : 346.99109741672873
+ }, {
+ "x" : 640.3735995993484,
+ "y" : 337.49261794704944
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 111.30044410924893,
+ "y" : 402.3516221558675
+ }, {
+ "x" : 119.12346747750416,
+ "y" : 400.144413407892
+ }, {
+ "x" : 114.92215500224847,
+ "y" : 379.1861354764551
+ }, {
+ "x" : 123.4165339191677,
+ "y" : 377.6022996054962
+ }, {
+ "x" : 124.73279376293067,
+ "y" : 386.50298302806914
+ }, {
+ "x" : 135.5351324097719,
+ "y" : 384.6851700786501
+ }, {
+ "x" : 140.6863636035705,
+ "y" : 382.0210583070293
+ }, {
+ "x" : 146.176997336559,
+ "y" : 392.0744888950139
+ }, {
+ "x" : 160.04872354934923,
+ "y" : 389.7367856632918
+ }, {
+ "x" : 153.42219983402174,
+ "y" : 378.26552313938737
+ }, {
+ "x" : 156.68860730726738,
+ "y" : 375.4268315490335
+ }, {
+ "x" : 160.0442186143482,
+ "y" : 377.68694484978914
+ }, {
+ "x" : 163.69961199723184,
+ "y" : 376.5636384738609
+ }, {
+ "x" : 167.32221044157632,
+ "y" : 375.97329061757773
+ }, {
+ "x" : 168.19506653572898,
+ "y" : 381.2319422997534
+ }, {
+ "x" : 180.44586185365915,
+ "y" : 379.28486642893404
+ }, {
+ "x" : 180.67309452570044,
+ "y" : 381.16170701012015
+ }, {
+ "x" : 182.94174394663423,
+ "y" : 399.5962040871382
+ }, {
+ "x" : 183.4791882201098,
+ "y" : 400.43760561943054
+ }, {
+ "x" : 183.47310891456436,
+ "y" : 401.28299379441887
+ }, {
+ "x" : 183.22353239171207,
+ "y" : 402.0645678443834
+ }, {
+ "x" : 182.63339200150222,
+ "y" : 403.01271630916744
+ }, {
+ "x" : 181.68534071289469,
+ "y" : 403.3146424954757
+ }, {
+ "x" : 180.749580119038,
+ "y" : 403.4723410587758
+ }, {
+ "x" : 179.93546733853873,
+ "y" : 403.11119566019624
+ }, {
+ "x" : 179.47702497255523,
+ "y" : 403.4629545332864
+ }, {
+ "x" : 175.26776679302566,
+ "y" : 404.233850969933
+ }, {
+ "x" : 168.49696828180458,
+ "y" : 405.47498328704387
+ }, {
+ "x" : 168.58697230636608,
+ "y" : 402.79658991191536
+ }, {
+ "x" : 166.42883676639758,
+ "y" : 403.0022242879495
+ }, {
+ "x" : 162.44634008023422,
+ "y" : 403.89201215468347
+ }, {
+ "x" : 152.80433692329098,
+ "y" : 405.5151105988771
+ }, {
+ "x" : 135.174749048776,
+ "y" : 408.48315368406475
+ }, {
+ "x" : 128.96982753369957,
+ "y" : 409.49856760073453
+ }, {
+ "x" : 113.60270539775956,
+ "y" : 413.3660273356363
+ }, {
+ "x" : 97.70403129258193,
+ "y" : 416.8818852035329
+ }, {
+ "x" : 95.28414595138747,
+ "y" : 404.04996532574296
+ }, {
+ "x" : 94.4021764153149,
+ "y" : 399.72562355268747
+ }, {
+ "x" : 93.61991100176238,
+ "y" : 392.2114099888131
+ }, {
+ "x" : 91.6600003093481,
+ "y" : 383.8565526306629
+ }, {
+ "x" : 90.2644515731372,
+ "y" : 375.32038146816194
+ }, {
+ "x" : 90.36710215685889,
+ "y" : 366.945796912536
+ }, {
+ "x" : 88.22370053478517,
+ "y" : 365.38288970384747
+ }, {
+ "x" : 88.0931267576525,
+ "y" : 363.28677731473
+ }, {
+ "x" : 89.34359860699624,
+ "y" : 361.7377325342968
+ }, {
+ "x" : 90.1700107252691,
+ "y" : 361.9546367973089
+ }, {
+ "x" : 91.6979272221215,
+ "y" : 362.3397452365607
+ }, {
+ "x" : 96.36330782459117,
+ "y" : 361.95127251464874
+ }, {
+ "x" : 95.23234849225264,
+ "y" : 351.5214069886133
+ }, {
+ "x" : 94.48752585169859,
+ "y" : 342.00573512446135
+ }, {
+ "x" : 94.34724698355421,
+ "y" : 340.19857791718096
+ }, {
+ "x" : 94.19138140766881,
+ "y" : 338.1906254766509
+ }, {
+ "x" : 94.96021126129199,
+ "y" : 338.12744090985507
+ }, {
+ "x" : 94.09516660682857,
+ "y" : 324.2128803348169
+ }, {
+ "x" : 94.26838968810625,
+ "y" : 324.3744657440111
+ }, {
+ "x" : 93.51171879307367,
+ "y" : 322.5243517383933
+ }, {
+ "x" : 94.4112124973908,
+ "y" : 321.23054721951485
+ }, {
+ "x" : 95.87716676783748,
+ "y" : 320.80136184953153
+ }, {
+ "x" : 96.58157028397545,
+ "y" : 321.54822622798383
+ }, {
+ "x" : 101.53957805293612,
+ "y" : 321.0917017236352
+ }, {
+ "x" : 102.03725115559064,
+ "y" : 319.35047867521644
+ }, {
+ "x" : 105.66133863548748,
+ "y" : 318.9381594127044
+ }, {
+ "x" : 106.924733185675,
+ "y" : 320.7719184793532
+ }, {
+ "x" : 112.93113388644997,
+ "y" : 320.35062153078616
+ }, {
+ "x" : 115.05675286031328,
+ "y" : 321.55690122768283
+ }, {
+ "x" : 115.40408609202132,
+ "y" : 328.7227206155658
+ }, {
+ "x" : 114.33339055953547,
+ "y" : 328.6867521516979
+ }, {
+ "x" : 114.19935915549286,
+ "y" : 332.6765579562634
+ }, {
+ "x" : 110.45111790811643,
+ "y" : 333.0179434232414
+ }, {
+ "x" : 110.17251967824996,
+ "y" : 336.6579803628847
+ }, {
+ "x" : 111.15839666919783,
+ "y" : 360.7125802123919
+ }, {
+ "x" : 112.2088704793714,
+ "y" : 372.20786308310926
+ }, {
+ "x" : 105.56526292243507,
+ "y" : 372.9860432520509
+ }, {
+ "x" : 106.53066163987387,
+ "y" : 381.4743909249082
+ }, {
+ "x" : 109.37951214355417,
+ "y" : 394.61000768188387
+ }, {
+ "x" : 105.9662104054587,
+ "y" : 395.3965674890205
+ }, {
+ "x" : 105.75129778962582,
+ "y" : 398.2487833555788
+ }, {
+ "x" : 106.45963416947052,
+ "y" : 402.64517798181623
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 641.6395799585152,
+ "y" : 501.436361332424
+ }, {
+ "x" : 634.0435677176574,
+ "y" : 503.7506444603205
+ }, {
+ "x" : 620.8744592721341,
+ "y" : 507.7686767950654
+ }, {
+ "x" : 600.4707678883569,
+ "y" : 513.9797226842493
+ }, {
+ "x" : 598.4760350363795,
+ "y" : 516.6273489352316
+ }, {
+ "x" : 594.7103164804867,
+ "y" : 535.1703976197168
+ }, {
+ "x" : 591.4871097410796,
+ "y" : 535.3956300513819
+ }, {
+ "x" : 592.2920993297594,
+ "y" : 541.3307896051556
+ }, {
+ "x" : 596.9050759465899,
+ "y" : 540.5070416908711
+ }, {
+ "x" : 615.1930505747441,
+ "y" : 537.2176908943802
+ }, {
+ "x" : 625.4830457647331,
+ "y" : 535.3612990230322
+ }, {
+ "x" : 627.8113297128584,
+ "y" : 548.223814365454
+ }, {
+ "x" : 617.5347290436039,
+ "y" : 550.1251570116729
+ }, {
+ "x" : 599.2653552815318,
+ "y" : 553.5263871820644
+ }, {
+ "x" : 583.528160574846,
+ "y" : 556.4455126971006
+ }, {
+ "x" : 581.0482802577317,
+ "y" : 546.0924518359825
+ }, {
+ "x" : 583.6924699555384,
+ "y" : 535.2110027978197
+ }, {
+ "x" : 586.5206043353537,
+ "y" : 523.0673550972715
+ }, {
+ "x" : 589.2937782149529,
+ "y" : 512.3348932536319
+ }, {
+ "x" : 593.861805720604,
+ "y" : 508.2051263395697
+ }, {
+ "x" : 598.1902304817922,
+ "y" : 506.5484505947679
+ }, {
+ "x" : 618.6013797745109,
+ "y" : 500.337646426633
+ }, {
+ "x" : 631.7701285191579,
+ "y" : 496.3307221438736
+ }, {
+ "x" : 644.0138856584672,
+ "y" : 492.604201650247
+ }, {
+ "x" : 656.7539993212558,
+ "y" : 488.72753450926393
+ }, {
+ "x" : 676.6615107933758,
+ "y" : 482.66685634385794
+ }, {
+ "x" : 693.7783975870116,
+ "y" : 477.46907022129744
+ }, {
+ "x" : 714.686488826992,
+ "y" : 471.0973208062351
+ }, {
+ "x" : 732.4128208147595,
+ "y" : 465.70878495369107
+ }, {
+ "x" : 742.0469834416872,
+ "y" : 483.75766370631754
+ }, {
+ "x" : 747.1251294800313,
+ "y" : 494.53217377886176
+ }, {
+ "x" : 753.8602159169968,
+ "y" : 509.59052898269147
+ }, {
+ "x" : 757.9616535316454,
+ "y" : 519.0859856484458
+ }, {
+ "x" : 735.6065911190817,
+ "y" : 526.209893326275
+ }, {
+ "x" : 731.7694746004418,
+ "y" : 516.6009738733992
+ }, {
+ "x" : 742.0699535325402,
+ "y" : 513.3321021003649
+ }, {
+ "x" : 735.4356568937656,
+ "y" : 499.4787979051471
+ }, {
+ "x" : 729.9868585077347,
+ "y" : 488.65842826478183
+ }, {
+ "x" : 725.6186935873702,
+ "y" : 479.565679510124
+ }, {
+ "x" : 717.6484525002306,
+ "y" : 481.0550247328356
+ }, {
+ "x" : 696.6798422386637,
+ "y" : 487.2355754096061
+ }, {
+ "x" : 692.2287715222919,
+ "y" : 488.5542582347989
+ }, {
+ "x" : 692.998061056016,
+ "y" : 491.1280982205644
+ }, {
+ "x" : 680.2917830400402,
+ "y" : 494.8834369657561
+ }, {
+ "x" : 660.3304431454744,
+ "y" : 500.77539267670363
+ }, {
+ "x" : 661.4296741235303,
+ "y" : 504.161435527727
+ }, {
+ "x" : 648.742010589689,
+ "y" : 508.0287312110886
+ }, {
+ "x" : 646.9448226491222,
+ "y" : 502.1602716082707
+ }, {
+ "x" : 642.2970928600989,
+ "y" : 503.5725031848997
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 431.4165690949885,
+ "y" : 372.71509008295834
+ }, {
+ "x" : 431.70117807015777,
+ "y" : 381.0693510696292
+ }, {
+ "x" : 431.99280230957083,
+ "y" : 389.65749947726727
+ }, {
+ "x" : 432.21935568994377,
+ "y" : 396.4187541436404
+ }, {
+ "x" : 432.44333413476124,
+ "y" : 403.0352810919285
+ }, {
+ "x" : 432.68691098690033,
+ "y" : 410.1754012266174
+ }, {
+ "x" : 432.91752994444687,
+ "y" : 417.0369293112308
+ }, {
+ "x" : 433.18917203811,
+ "y" : 425.11259884852916
+ }, {
+ "x" : 433.4464043783955,
+ "y" : 432.73160755448043
+ }, {
+ "x" : 410.6595978779951,
+ "y" : 433.66718397289515
+ }, {
+ "x" : 410.5834455086151,
+ "y" : 435.2668008841574
+ }, {
+ "x" : 402.7401982161682,
+ "y" : 435.8596299951896
+ }, {
+ "x" : 402.11698450916447,
+ "y" : 421.1965261241421
+ }, {
+ "x" : 418.5915048874449,
+ "y" : 418.93589136283845
+ }, {
+ "x" : 418.2023162911646,
+ "y" : 403.51294737122953
+ }, {
+ "x" : 418.0629523039097,
+ "y" : 399.4694314422086
+ }, {
+ "x" : 414.806619534269,
+ "y" : 399.5712641188875
+ }, {
+ "x" : 414.5977779417299,
+ "y" : 393.38917195331305
+ }, {
+ "x" : 417.906535332324,
+ "y" : 393.2779766442254
+ }, {
+ "x" : 417.79636333254166,
+ "y" : 390.13666882459074
+ }, {
+ "x" : 411.75353736709803,
+ "y" : 388.76509242411703
+ }, {
+ "x" : 407.25804590806365,
+ "y" : 398.70534072536975
+ }, {
+ "x" : 401.84522144449875,
+ "y" : 405.8220415553078
+ }, {
+ "x" : 403.9004560126923,
+ "y" : 409.1177997952327
+ }, {
+ "x" : 392.41356598888524,
+ "y" : 422.8727886406705
+ }, {
+ "x" : 389.5979074072093,
+ "y" : 426.2494492344558
+ }, {
+ "x" : 391.5414081537165,
+ "y" : 428.66247106157243
+ }, {
+ "x" : 385.44828174170107,
+ "y" : 435.86755990982056
+ }, {
+ "x" : 365.5024981611641,
+ "y" : 462.76739930175245
+ }, {
+ "x" : 360.677747466485,
+ "y" : 458.8221812751144
+ }, {
+ "x" : 352.91671320958994,
+ "y" : 469.3646986493841
+ }, {
+ "x" : 355.5260993882548,
+ "y" : 471.45519324578345
+ }, {
+ "x" : 354.1346781142056,
+ "y" : 472.9883158141747
+ }, {
+ "x" : 355.4296507127583,
+ "y" : 474.32251852657646
+ }, {
+ "x" : 349.09594563930295,
+ "y" : 480.2734099403024
+ }, {
+ "x" : 345.82678010850213,
+ "y" : 477.6600453853607
+ }, {
+ "x" : 334.9159093560884,
+ "y" : 492.0019474737346
+ }, {
+ "x" : 333.4159937251825,
+ "y" : 491.22829449921846
+ }, {
+ "x" : 330.3869429267943,
+ "y" : 494.97609540168196
+ }, {
+ "x" : 322.7888645499479,
+ "y" : 488.9460382340476
+ }, {
+ "x" : 336.20846934465226,
+ "y" : 469.9487156989053
+ }, {
+ "x" : 342.71097295638174,
+ "y" : 461.8561240769923
+ }, {
+ "x" : 351.6002829683712,
+ "y" : 451.4071755958721
+ }, {
+ "x" : 372.63847596675623,
+ "y" : 425.4452635133639
+ }, {
+ "x" : 393.6678369368892,
+ "y" : 399.9726759456098
+ }, {
+ "x" : 399.46467448724434,
+ "y" : 392.94677117001265
+ }, {
+ "x" : 401.8207128016511,
+ "y" : 386.4170503569767
+ }, {
+ "x" : 404.3488601470599,
+ "y" : 378.0906695816666
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 565.4514340276364,
+ "y" : 379.496611116454
+ }, {
+ "x" : 580.0238928820472,
+ "y" : 380.23210429772735
+ }, {
+ "x" : 579.7087679097895,
+ "y" : 389.5898057576269
+ }, {
+ "x" : 588.232865674654,
+ "y" : 390.44430475868285
+ }, {
+ "x" : 587.8062549423194,
+ "y" : 392.9444734910503
+ }, {
+ "x" : 603.4791448100004,
+ "y" : 396.81018980499357
+ }, {
+ "x" : 604.3201482967706,
+ "y" : 393.2781094852835
+ }, {
+ "x" : 587.9848569636233,
+ "y" : 388.96728572435677
+ }, {
+ "x" : 590.9444328970276,
+ "y" : 377.7849239623174
+ }, {
+ "x" : 591.8731572252,
+ "y" : 374.3003015005961
+ }, {
+ "x" : 606.039343627519,
+ "y" : 378.03739608917385
+ }, {
+ "x" : 610.021836891654,
+ "y" : 363.00642686896026
+ }, {
+ "x" : 623.1698250779882,
+ "y" : 366.47561774775386
+ }, {
+ "x" : 619.1872983232606,
+ "y" : 381.5065787434578
+ }, {
+ "x" : 615.2989301732741,
+ "y" : 396.17354628257453
+ }, {
+ "x" : 611.6089158721734,
+ "y" : 410.03497896995395
+ }, {
+ "x" : 585.187367460574,
+ "y" : 403.51523878984153
+ }, {
+ "x" : 556.9166630824329,
+ "y" : 401.7287781853229
+ }, {
+ "x" : 522.2899723185692,
+ "y" : 401.01912255305797
+ }, {
+ "x" : 505.99210888461675,
+ "y" : 400.6818678136915
+ }, {
+ "x" : 502.0566392603796,
+ "y" : 384.47195352148265
+ }, {
+ "x" : 498.74370319442824,
+ "y" : 370.77527962159365
+ }, {
+ "x" : 494.55374395137187,
+ "y" : 353.49981357343495
+ }, {
+ "x" : 513.4133008101489,
+ "y" : 350.0513260634616
+ }, {
+ "x" : 531.9892649576068,
+ "y" : 346.40420528594404
+ }, {
+ "x" : 548.821260527242,
+ "y" : 342.8208131948486
+ }, {
+ "x" : 551.91608447209,
+ "y" : 357.2445107763633
+ }, {
+ "x" : 546.9077262680512,
+ "y" : 358.31089482083917
+ }, {
+ "x" : 547.7433559976052,
+ "y" : 362.2332205930725
+ }, {
+ "x" : 542.0828885778319,
+ "y" : 363.4334199372679
+ }, {
+ "x" : 541.1893173402641,
+ "y" : 359.24211421608925
+ }, {
+ "x" : 535.0261897193268,
+ "y" : 360.55891194194555
+ }, {
+ "x" : 535.6888469445985,
+ "y" : 364.97609354928136
+ }, {
+ "x" : 528.9565723481355,
+ "y" : 366.17359930835664
+ }, {
+ "x" : 528.0795027691638,
+ "y" : 361.27077130414546
+ }, {
+ "x" : 515.8202754512895,
+ "y" : 363.46160703431815
+ }, {
+ "x" : 508.70585573930293,
+ "y" : 364.51275685150176
+ }, {
+ "x" : 509.6255905467551,
+ "y" : 368.1486241882667
+ }, {
+ "x" : 513.0511554405093,
+ "y" : 381.81571853440255
+ }, {
+ "x" : 514.2855026160832,
+ "y" : 386.71944497711957
+ }, {
+ "x" : 522.1933677671477,
+ "y" : 386.8632721500471
+ }, {
+ "x" : 530.7113039420219,
+ "y" : 387.01652316749096
+ }, {
+ "x" : 530.9110198733397,
+ "y" : 379.7578010279685
+ }, {
+ "x" : 552.923447227804,
+ "y" : 379.94261961616576
+ }, {
+ "x" : 553.0756366825663,
+ "y" : 387.80288337916136
+ }, {
+ "x" : 556.9282572055236,
+ "y" : 387.8992267632857
+ }, {
+ "x" : 565.0216321069747,
+ "y" : 388.06048586405814
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 478.74200807895977,
+ "y" : 154.69786427076906
+ }, {
+ "x" : 475.71289625635836,
+ "y" : 153.7948295949027
+ }, {
+ "x" : 475.48885404795874,
+ "y" : 127.2734464937821
+ }, {
+ "x" : 474.92112348182127,
+ "y" : 121.80247975513339
+ }, {
+ "x" : 474.5734406390693,
+ "y" : 118.41952651645988
+ }, {
+ "x" : 476.8871463877149,
+ "y" : 118.0189644144848
+ }, {
+ "x" : 482.13219771219883,
+ "y" : 118.55152691993862
+ }, {
+ "x" : 475.02887645713054,
+ "y" : 101.78999167401344
+ }, {
+ "x" : 470.8150552638108,
+ "y" : 103.57302099000663
+ }, {
+ "x" : 466.1461186524248,
+ "y" : 92.55668362602592
+ }, {
+ "x" : 476.90656860289164,
+ "y" : 88.02326193172485
+ }, {
+ "x" : 479.3201836873777,
+ "y" : 93.7232446540147
+ }, {
+ "x" : 484.84765185788274,
+ "y" : 91.39474162179977
+ }, {
+ "x" : 496.0133746092906,
+ "y" : 117.72807770222425
+ }, {
+ "x" : 486.67999666917603,
+ "y" : 121.66416892874986
+ }, {
+ "x" : 486.31095854821615,
+ "y" : 126.43603441119194
+ }, {
+ "x" : 486.4240275423508,
+ "y" : 139.00137232616544
+ }, {
+ "x" : 496.5418621969875,
+ "y" : 134.9804231710732
+ }, {
+ "x" : 511.0861678516958,
+ "y" : 129.2726564835757
+ }, {
+ "x" : 519.9458221110981,
+ "y" : 125.69895058590919
+ }, {
+ "x" : 517.7655678644078,
+ "y" : 115.50067124236375
+ }, {
+ "x" : 523.1764018920949,
+ "y" : 114.4255456160754
+ }, {
+ "x" : 525.6212446636055,
+ "y" : 123.39772058371454
+ }, {
+ "x" : 537.294831317151,
+ "y" : 118.71713177952915
+ }, {
+ "x" : 532.9879050198942,
+ "y" : 107.12322694249451
+ }, {
+ "x" : 524.2014482734958,
+ "y" : 110.73275756184012
+ }, {
+ "x" : 522.2880885978229,
+ "y" : 106.09545992594212
+ }, {
+ "x" : 529.6858059992082,
+ "y" : 103.05111959204078
+ }, {
+ "x" : 528.1024242171552,
+ "y" : 99.22601829655468
+ }, {
+ "x" : 526.3996007093228,
+ "y" : 94.083999264054
+ }, {
+ "x" : 526.5312920614379,
+ "y" : 93.7101398780942
+ }, {
+ "x" : 521.6910542804981,
+ "y" : 82.69911122694612
+ }, {
+ "x" : 526.3384715492139,
+ "y" : 80.64143107831478
+ }, {
+ "x" : 529.8373299068771,
+ "y" : 79.09027619566768
+ }, {
+ "x" : 534.6701204493875,
+ "y" : 90.10106170736253
+ }, {
+ "x" : 535.45395722182,
+ "y" : 89.59338911063969
+ }, {
+ "x" : 537.9839141798439,
+ "y" : 95.15267545450479
+ }, {
+ "x" : 538.417568270932,
+ "y" : 96.20201589353383
+ }, {
+ "x" : 541.4951371210627,
+ "y" : 103.6266976101324
+ }, {
+ "x" : 548.9947377140634,
+ "y" : 121.4364104270935
+ }, {
+ "x" : 546.4537738151848,
+ "y" : 127.48142934311181
+ }, {
+ "x" : 541.4051858468447,
+ "y" : 129.73698446992785
+ }, {
+ "x" : 529.6085310362978,
+ "y" : 134.53580964449793
+ }, {
+ "x" : 515.4411902120337,
+ "y" : 140.3229764122516
+ }, {
+ "x" : 500.89690654783044,
+ "y" : 146.0307314740494
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 29.09318174503278,
+ "y" : 188.4042332135141
+ }, {
+ "x" : 42.20569589128718,
+ "y" : 186.74167700577527
+ }, {
+ "x" : 43.63762622466311,
+ "y" : 199.74065257515758
+ }, {
+ "x" : 62.960761588066816,
+ "y" : 197.56349650770426
+ }, {
+ "x" : 63.83552849921398,
+ "y" : 206.31581359077245
+ }, {
+ "x" : 70.274079873343,
+ "y" : 205.66420165635645
+ }, {
+ "x" : 68.98979627992958,
+ "y" : 195.58523825369775
+ }, {
+ "x" : 94.99808450741693,
+ "y" : 192.28643713425845
+ }, {
+ "x" : 97.2645022876095,
+ "y" : 202.82119366154075
+ }, {
+ "x" : 94.46942187601235,
+ "y" : 203.15010568778962
+ }, {
+ "x" : 74.23432750219945,
+ "y" : 205.21864336822182
+ }, {
+ "x" : 75.11665854917374,
+ "y" : 212.85859744623303
+ }, {
+ "x" : 64.71006423421204,
+ "y" : 213.96662966161966
+ }, {
+ "x" : 56.726740751066245,
+ "y" : 214.95578717254102
+ }, {
+ "x" : 56.51507355773356,
+ "y" : 213.05722528416663
+ }, {
+ "x" : 51.03758272109553,
+ "y" : 213.68549456167966
+ }, {
+ "x" : 46.947953989496455,
+ "y" : 214.21573332324624
+ }, {
+ "x" : 47.2592455270933,
+ "y" : 219.13283947762102
+ }, {
+ "x" : 51.4834280393552,
+ "y" : 218.80739118531346
+ }, {
+ "x" : 51.87463973625563,
+ "y" : 223.78281270060688
+ }, {
+ "x" : 57.68448026897386,
+ "y" : 223.23246307857335
+ }, {
+ "x" : 58.54122064355761,
+ "y" : 230.52664215210825
+ }, {
+ "x" : 63.19332573818974,
+ "y" : 230.09318555798382
+ }, {
+ "x" : 65.03698878316209,
+ "y" : 229.94370466750115
+ }, {
+ "x" : 64.61671282746829,
+ "y" : 222.73093937896192
+ }, {
+ "x" : 75.68278375919908,
+ "y" : 221.93433800060302
+ }, {
+ "x" : 75.40902033541352,
+ "y" : 214.57072515320033
+ }, {
+ "x" : 81.13891946594231,
+ "y" : 214.18460676912218
+ }, {
+ "x" : 82.04058803291991,
+ "y" : 227.23254592064768
+ }, {
+ "x" : 86.83061401126906,
+ "y" : 226.90387637913227
+ }, {
+ "x" : 87.92631522845477,
+ "y" : 242.81776876095682
+ }, {
+ "x" : 77.40605846559629,
+ "y" : 243.54366632457823
+ }, {
+ "x" : 69.0555062132189,
+ "y" : 244.16443218756467
+ }, {
+ "x" : 64.05692943139002,
+ "y" : 244.4972379412502
+ }, {
+ "x" : 59.48217658465728,
+ "y" : 244.84428127110004
+ }, {
+ "x" : 48.382708362769336,
+ "y" : 245.52852767519653
+ }, {
+ "x" : 47.44591609179042,
+ "y" : 230.4210718413815
+ }, {
+ "x" : 32.775801419862546,
+ "y" : 231.697522806935
+ }, {
+ "x" : 31.768666266230866,
+ "y" : 219.7920547798276
+ }, {
+ "x" : 30.987960206111893,
+ "y" : 210.6757391039282
+ }, {
+ "x" : 29.680104176164605,
+ "y" : 195.31105465535074
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 81.03990151989274,
+ "y" : 165.04798067361116
+ }, {
+ "x" : 88.46631671185605,
+ "y" : 164.4629432959482
+ }, {
+ "x" : 102.75663038133644,
+ "y" : 163.41864298749715
+ }, {
+ "x" : 102.19738260284066,
+ "y" : 155.9119240352884
+ }, {
+ "x" : 118.13733892724849,
+ "y" : 154.73392610717565
+ }, {
+ "x" : 117.55614474217873,
+ "y" : 147.43786525633186
+ }, {
+ "x" : 117.36947511823382,
+ "y" : 145.0172084532678
+ }, {
+ "x" : 101.6830500185024,
+ "y" : 146.18147364910692
+ }, {
+ "x" : 102.07382554421201,
+ "y" : 151.39053581655025
+ }, {
+ "x" : 87.73068647261243,
+ "y" : 152.4553177608177
+ }, {
+ "x" : 87.48426583886612,
+ "y" : 149.15368599258363
+ }, {
+ "x" : 79.94667013315484,
+ "y" : 149.72386556025594
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 335.5853172376519,
+ "y" : 123.05633496120572
+ }, {
+ "x" : 340.60678666469175,
+ "y" : 141.0828073453158
+ }, {
+ "x" : 329.1853935101535,
+ "y" : 144.24797232449055
+ }, {
+ "x" : 327.1333283195272,
+ "y" : 136.86903179436922
+ }, {
+ "x" : 322.196910307277,
+ "y" : 138.22732208203524
+ }, {
+ "x" : 306.3046082193032,
+ "y" : 142.63296543154866
+ }, {
+ "x" : 306.63752533425577,
+ "y" : 143.80128727387637
+ }, {
+ "x" : 304.29294404236134,
+ "y" : 144.4567817961797
+ }, {
+ "x" : 287.95786333992146,
+ "y" : 148.96997436136007
+ }, {
+ "x" : 284.1720516184578,
+ "y" : 135.36883323453367
+ }, {
+ "x" : 300.5975152865285,
+ "y" : 130.8252881905064
+ }, {
+ "x" : 302.84431696671527,
+ "y" : 130.1998827625066
+ }, {
+ "x" : 303.3425739920931,
+ "y" : 131.9857061272487
+ }, {
+ "x" : 309.6018669155892,
+ "y" : 130.24908516090363
+ }, {
+ "x" : 306.59263851924334,
+ "y" : 119.45559659600258
+ }, {
+ "x" : 303.6773317460902,
+ "y" : 120.25879477523267
+ }, {
+ "x" : 302.6614973030519,
+ "y" : 116.59748882148415
+ }, {
+ "x" : 299.4305286363233,
+ "y" : 117.49021137785167
+ }, {
+ "x" : 300.17476051975973,
+ "y" : 120.152150365524
+ }, {
+ "x" : 297.8755320420023,
+ "y" : 120.78692050743848
+ }, {
+ "x" : 280.63839827512857,
+ "y" : 125.5590892713517
+ }, {
+ "x" : 272.65437615453266,
+ "y" : 127.44915590249002
+ }, {
+ "x" : 281.06481368048117,
+ "y" : 158.92984123528004
+ }, {
+ "x" : 271.7538615283556,
+ "y" : 161.32047898508608
+ }, {
+ "x" : 262.64035422052257,
+ "y" : 129.71603872906417
+ }, {
+ "x" : 248.78892168286256,
+ "y" : 133.42274003010243
+ }, {
+ "x" : 249.52910322125535,
+ "y" : 149.7141533875838
+ }, {
+ "x" : 256.8644730676897,
+ "y" : 149.18190263584256
+ }, {
+ "x" : 257.97696179908235,
+ "y" : 164.3620865503326
+ }, {
+ "x" : 247.87291527935304,
+ "y" : 165.1016727099195
+ }, {
+ "x" : 248.04170483187772,
+ "y" : 167.38822155352682
+ }, {
+ "x" : 235.25857330462895,
+ "y" : 168.32705405633897
+ }, {
+ "x" : 234.42573389783502,
+ "y" : 157.0059490185231
+ }, {
+ "x" : 233.97760396148078,
+ "y" : 150.84921417851
+ }, {
+ "x" : 233.65190918243024,
+ "y" : 139.27812708821148
+ }, {
+ "x" : 232.99626255210023,
+ "y" : 121.79905512556434
+ }, {
+ "x" : 239.9303533573402,
+ "y" : 119.9181467872113
+ }, {
+ "x" : 256.3093353845179,
+ "y" : 115.42854306846857
+ }, {
+ "x" : 258.47879155457485,
+ "y" : 114.88952989969403
+ }, {
+ "x" : 276.2413256620057,
+ "y" : 109.76779209077358
+ }, {
+ "x" : 293.5837217802182,
+ "y" : 104.96576810069382
+ }, {
+ "x" : 295.77773526567034,
+ "y" : 104.36083694919944
+ }, {
+ "x" : 311.6072819815017,
+ "y" : 100.05318464897573
+ }, {
+ "x" : 326.49655459763017,
+ "y" : 96.0366155616939
+ }, {
+ "x" : 328.03656908508856,
+ "y" : 95.62110197450966
+ }, {
+ "x" : 332.7692707243841,
+ "y" : 94.34497353248298
+ }, {
+ "x" : 337.5097841336392,
+ "y" : 93.05798535887152
+ }, {
+ "x" : 338.89178188936785,
+ "y" : 92.69279163982719
+ }, {
+ "x" : 346.58443096023984,
+ "y" : 90.61499417759478
+ }, {
+ "x" : 348.0340988833923,
+ "y" : 90.2298259884119
+ }, {
+ "x" : 355.2460107561201,
+ "y" : 88.28051273245364
+ }, {
+ "x" : 361.454107201891,
+ "y" : 86.29744574427605
+ }, {
+ "x" : 368.17934387084097,
+ "y" : 84.43191543594003
+ }, {
+ "x" : 374.0628135179868,
+ "y" : 82.80510837864131
+ }, {
+ "x" : 379.8860534247942,
+ "y" : 81.19853366725147
+ }, {
+ "x" : 386.23992450302467,
+ "y" : 103.20855645649135
+ }, {
+ "x" : 371.26321894978173,
+ "y" : 107.38892435468733
+ }, {
+ "x" : 369.2416391245788,
+ "y" : 100.2112643737346
+ }, {
+ "x" : 372.33023090602364,
+ "y" : 99.34716965351254
+ }, {
+ "x" : 370.0370543564204,
+ "y" : 91.1701395008713
+ }, {
+ "x" : 367.0342418758664,
+ "y" : 92.58230624254793
+ }, {
+ "x" : 365.8558944014367,
+ "y" : 97.51609802432358
+ }, {
+ "x" : 358.33314534358215,
+ "y" : 99.63296256121248
+ }, {
+ "x" : 358.81614375661593,
+ "y" : 101.42940455395728
+ }, {
+ "x" : 350.15458154294174,
+ "y" : 103.76388014107943
+ }, {
+ "x" : 349.923113377532,
+ "y" : 102.89937562867999
+ }, {
+ "x" : 340.84811000106856,
+ "y" : 105.35347472969443
+ }, {
+ "x" : 341.066203054972,
+ "y" : 106.17302407231182
+ }, {
+ "x" : 331.59338092349935,
+ "y" : 108.72502064332366
+ }, {
+ "x" : 330.0533695509657,
+ "y" : 109.14053319301456
+ }, {
+ "x" : 322.6537332155276,
+ "y" : 111.13919454440475
+ }, {
+ "x" : 326.793654933339,
+ "y" : 125.49773042462766
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 415.8279875398148,
+ "y" : 69.20079197175801
+ }, {
+ "x" : 427.0166728866752,
+ "y" : 64.99321852251887
+ }, {
+ "x" : 444.45632326079067,
+ "y" : 58.6372342761606
+ }, {
+ "x" : 449.00082188786473,
+ "y" : 71.36280290503055
+ }, {
+ "x" : 451.70669017510954,
+ "y" : 78.99744559265673
+ }, {
+ "x" : 453.16330355626997,
+ "y" : 83.05190751235932
+ }, {
+ "x" : 456.68730759981554,
+ "y" : 93.36212952714413
+ }, {
+ "x" : 459.8776157707907,
+ "y" : 102.74877339135855
+ }, {
+ "x" : 462.5530245230766,
+ "y" : 111.95119873527437
+ }, {
+ "x" : 453.72779721347615,
+ "y" : 114.50253658462316
+ }, {
+ "x" : 455.0957856965251,
+ "y" : 119.19933969713748
+ }, {
+ "x" : 448.76651450945064,
+ "y" : 121.02246027532965
+ }, {
+ "x" : 447.112070673611,
+ "y" : 115.3257843805477
+ }, {
+ "x" : 450.51001923158765,
+ "y" : 114.33862632513046
+ }, {
+ "x" : 448.12848003720865,
+ "y" : 106.13633170258254
+ }, {
+ "x" : 451.1200452633202,
+ "y" : 105.28014026489109
+ }, {
+ "x" : 444.5108422911726,
+ "y" : 85.99849387910217
+ }, {
+ "x" : 445.8813443200197,
+ "y" : 85.5328024700284
+ }, {
+ "x" : 441.7686567893252,
+ "y" : 73.91213679872453
+ }, {
+ "x" : 430.24985529319383,
+ "y" : 77.97505913954228
+ }, {
+ "x" : 430.69112530350685,
+ "y" : 80.12614401895553
+ }, {
+ "x" : 431.5237415313022,
+ "y" : 83.03585432376713
+ }, {
+ "x" : 436.6424341428792,
+ "y" : 81.57252455409616
+ }, {
+ "x" : 439.4549710357096,
+ "y" : 91.34698812756687
+ }, {
+ "x" : 443.89370394218713,
+ "y" : 106.7726721810177
+ }, {
+ "x" : 439.95514776429627,
+ "y" : 107.89741129428148
+ }, {
+ "x" : 441.18083654588554,
+ "y" : 112.1777512235567
+ }, {
+ "x" : 449.1580024634022,
+ "y" : 139.91686674579978
+ }, {
+ "x" : 452.6901302256156,
+ "y" : 152.19670749269426
+ }, {
+ "x" : 457.89238695334643,
+ "y" : 150.9031055709347
+ }, {
+ "x" : 457.33388183719944,
+ "y" : 147.59094288758934
+ }, {
+ "x" : 465.7992479278473,
+ "y" : 144.67146318219602
+ }, {
+ "x" : 466.0294225962134,
+ "y" : 153.75822481699288
+ }, {
+ "x" : 466.1944209409412,
+ "y" : 159.69406597781926
+ }, {
+ "x" : 443.6779704502551,
+ "y" : 166.05715488735586
+ }, {
+ "x" : 440.6789816466626,
+ "y" : 155.63108929246664
+ }, {
+ "x" : 437.1468314130325,
+ "y" : 143.35125653911382
+ }, {
+ "x" : 429.1699886668939,
+ "y" : 115.60104541573673
+ }, {
+ "x" : 423.5051477253437,
+ "y" : 95.90615120623261
+ }, {
+ "x" : 419.8599660489708,
+ "y" : 83.22198748216033
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 519.5005906338338,
+ "y" : 231.13857458438724
+ }, {
+ "x" : 524.410583440098,
+ "y" : 247.37017299328
+ }, {
+ "x" : 523.7880541076884,
+ "y" : 249.9416330680251
+ }, {
+ "x" : 513.0297705656849,
+ "y" : 250.65872038062662
+ }, {
+ "x" : 491.92553427501116,
+ "y" : 252.00669736601412
+ }, {
+ "x" : 472.8566780143883,
+ "y" : 253.92393370345235
+ }, {
+ "x" : 472.0419457175303,
+ "y" : 240.0888406643644
+ }, {
+ "x" : 484.7703677393729,
+ "y" : 239.00406100414693
+ }, {
+ "x" : 491.1794995930977,
+ "y" : 238.7858548667282
+ }, {
+ "x" : 512.0566498361295,
+ "y" : 237.3300917847082
+ }, {
+ "x" : 514.8859347654507,
+ "y" : 237.0915444260463
+ }, {
+ "x" : 513.6458853791701,
+ "y" : 232.57704805396497
+ }, {
+ "x" : 505.4945900157327,
+ "y" : 234.57241798564792
+ }, {
+ "x" : 501.83931730594486,
+ "y" : 219.98525393754244
+ }, {
+ "x" : 498.74309977609664,
+ "y" : 207.5865298565477
+ }, {
+ "x" : 496.9116164514562,
+ "y" : 208.03669099975377
+ }, {
+ "x" : 497.2656287839636,
+ "y" : 209.46164042968303
+ }, {
+ "x" : 492.82894653303083,
+ "y" : 210.56957329902798
+ }, {
+ "x" : 491.0911928098649,
+ "y" : 203.59055684134364
+ }, {
+ "x" : 493.130872697453,
+ "y" : 203.1474013356492
+ }, {
+ "x" : 492.27866793388966,
+ "y" : 199.93661042675376
+ }, {
+ "x" : 498.8279455609154,
+ "y" : 198.20995732676238
+ }, {
+ "x" : 495.06137284543365,
+ "y" : 184.0529784904793
+ }, {
+ "x" : 491.02507136180066,
+ "y" : 185.20776884816587
+ }, {
+ "x" : 489.93987688503694,
+ "y" : 181.39944557473063
+ }, {
+ "x" : 493.4849120855797,
+ "y" : 179.13774680811912
+ }, {
+ "x" : 492.696384775918,
+ "y" : 173.59258732479066
+ }, {
+ "x" : 488.6885959424544,
+ "y" : 173.45769466180354
+ }, {
+ "x" : 468.07950884336606,
+ "y" : 179.32857090886682
+ }, {
+ "x" : 460.3963532259222,
+ "y" : 184.44398534391075
+ }, {
+ "x" : 461.4548604419688,
+ "y" : 187.93986893910915
+ }, {
+ "x" : 464.75573353958316,
+ "y" : 186.96058104466647
+ }, {
+ "x" : 466.1553919990547,
+ "y" : 191.15777380019426
+ }, {
+ "x" : 477.01333987526596,
+ "y" : 190.79998629912734
+ }, {
+ "x" : 480.9707020006608,
+ "y" : 204.81873106583953
+ }, {
+ "x" : 472.53674110386055,
+ "y" : 207.24968587514013
+ }, {
+ "x" : 477.23392434383277,
+ "y" : 223.17366304714233
+ }, {
+ "x" : 478.70146843534894,
+ "y" : 228.00734111759812
+ }, {
+ "x" : 488.1164277156349,
+ "y" : 226.0655912682414
+ }, {
+ "x" : 490.225257170503,
+ "y" : 234.62589818332344
+ }, {
+ "x" : 466.59831197408494,
+ "y" : 240.37293972447515
+ }, {
+ "x" : 464.8878148047952,
+ "y" : 240.10397601593286
+ }, {
+ "x" : 463.85940937465057,
+ "y" : 238.5895755859092
+ }, {
+ "x" : 461.05761555745266,
+ "y" : 227.8363422891125
+ }, {
+ "x" : 456.9441949132597,
+ "y" : 211.3757133083418
+ }, {
+ "x" : 451.16929424973205,
+ "y" : 190.9761195462197
+ }, {
+ "x" : 446.9158531217836,
+ "y" : 175.35638491809368
+ }, {
+ "x" : 465.43347432103474,
+ "y" : 170.3607790293172
+ }, {
+ "x" : 477.1014507447835,
+ "y" : 166.94827920105308
+ }, {
+ "x" : 488.5863067477476,
+ "y" : 162.78418041672558
+ }, {
+ "x" : 499.84829547675326,
+ "y" : 157.7225022651255
+ }, {
+ "x" : 505.78460298490245,
+ "y" : 180.8423902085051
+ }, {
+ "x" : 511.1491038193926,
+ "y" : 198.39104107394814
+ }, {
+ "x" : 515.90670494386,
+ "y" : 216.49783485382795
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 622.4478632726241,
+ "y" : 189.88858956377953
+ }, {
+ "x" : 626.0076693044975,
+ "y" : 188.29504324961454
+ }, {
+ "x" : 626.9634069133317,
+ "y" : 190.41897165216506
+ }, {
+ "x" : 628.716537020402,
+ "y" : 189.6435503717512
+ }, {
+ "x" : 623.732946029515,
+ "y" : 177.59284578822553
+ }, {
+ "x" : 619.0003533631098,
+ "y" : 179.9702376006171
+ }, {
+ "x" : 618.1211115149781,
+ "y" : 178.22718017268926
+ }, {
+ "x" : 611.5104333217023,
+ "y" : 181.5538142900914
+ }, {
+ "x" : 609.0819196063094,
+ "y" : 176.74336392525584
+ }, {
+ "x" : 607.1201471791137,
+ "y" : 172.88323973864317
+ }, {
+ "x" : 614.1699577117106,
+ "y" : 169.33773824758828
+ }, {
+ "x" : 612.0480209711241,
+ "y" : 165.14955658372492
+ }, {
+ "x" : 621.3090966063319,
+ "y" : 160.48802604153752
+ }, {
+ "x" : 625.384609698318,
+ "y" : 168.55831808317453
+ }, {
+ "x" : 632.4839690617518,
+ "y" : 164.64734028093517
+ }, {
+ "x" : 635.4844999124762,
+ "y" : 171.7023214874789
+ }, {
+ "x" : 640.2268164134584,
+ "y" : 183.62252135109156
+ }, {
+ "x" : 640.1139537598938,
+ "y" : 184.54219975788146
+ }, {
+ "x" : 642.6348283580737,
+ "y" : 190.1457411404699
+ }, {
+ "x" : 623.9594217521371,
+ "y" : 198.4955974072218
+ }, {
+ "x" : 614.9048780784942,
+ "y" : 202.55213186889887
+ }, {
+ "x" : 617.8345202615019,
+ "y" : 209.05952980741858
+ }, {
+ "x" : 635.0762134380639,
+ "y" : 201.06190940365195
+ }, {
+ "x" : 640.2793747793185,
+ "y" : 210.3495827978477
+ }, {
+ "x" : 630.9518641297473,
+ "y" : 214.77518990822136
+ }, {
+ "x" : 629.3662890556734,
+ "y" : 211.23926286492497
+ }, {
+ "x" : 620.5426874917466,
+ "y" : 215.06991465389729
+ }, {
+ "x" : 622.1840077494271,
+ "y" : 218.71897921990603
+ }, {
+ "x" : 617.8229523929767,
+ "y" : 220.6749596130103
+ }, {
+ "x" : 624.8735186704434,
+ "y" : 236.33343277219683
+ }, {
+ "x" : 629.3100436234381,
+ "y" : 234.34662147145718
+ }, {
+ "x" : 635.0863873711787,
+ "y" : 247.16949853207916
+ }, {
+ "x" : 640.4257130906917,
+ "y" : 259.04305598232895
+ }, {
+ "x" : 625.9226661510766,
+ "y" : 265.5195856951177
+ }, {
+ "x" : 620.5829441915266,
+ "y" : 253.65715598221868
+ }, {
+ "x" : 614.8140123158228,
+ "y" : 240.83454458229244
+ }, {
+ "x" : 607.7638003034517,
+ "y" : 225.16497065965086
+ }, {
+ "x" : 600.4846409803722,
+ "y" : 208.99814239423722
+ }, {
+ "x" : 604.6114528805483,
+ "y" : 207.1455224575475
+ }, {
+ "x" : 601.9523196194787,
+ "y" : 201.2258078996092
+ }, {
+ "x" : 621.3003030688269,
+ "y" : 192.57587349414825
+ }, {
+ "x" : 623.2653711501043,
+ "y" : 191.6963262045756
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 598.6237293693703,
+ "y" : 493.45630752667785
+ }, {
+ "x" : 604.3628701572306,
+ "y" : 471.3525631064549
+ }, {
+ "x" : 609.3143174168654,
+ "y" : 452.304268299602
+ }, {
+ "x" : 611.7506058646832,
+ "y" : 440.5257245115936
+ }, {
+ "x" : 615.5604750385974,
+ "y" : 425.9785006158054
+ }, {
+ "x" : 640.7890281685395,
+ "y" : 430.3442098693922
+ }, {
+ "x" : 659.1251040687785,
+ "y" : 431.16219239588827
+ }, {
+ "x" : 659.0353161459789,
+ "y" : 444.4328116606921
+ }, {
+ "x" : 653.4164046484511,
+ "y" : 444.6218068841845
+ }, {
+ "x" : 652.8979883944849,
+ "y" : 451.61389394663274
+ }, {
+ "x" : 643.5161547081079,
+ "y" : 451.475857893005
+ }, {
+ "x" : 643.6194727343973,
+ "y" : 445.3153837993741
+ }, {
+ "x" : 638.4465658684494,
+ "y" : 444.41791746299714
+ }, {
+ "x" : 627.1822380984668,
+ "y" : 440.50032076146454
+ }, {
+ "x" : 626.0909426754806,
+ "y" : 444.3911344949156
+ }, {
+ "x" : 622.4969225570094,
+ "y" : 456.2864449499175
+ }, {
+ "x" : 619.1507945681224,
+ "y" : 468.5572737194598
+ }, {
+ "x" : 613.7601703575347,
+ "y" : 470.36730476189405
+ }, {
+ "x" : 612.7888057691744,
+ "y" : 473.34980587195605
+ }, {
+ "x" : 610.4125841523055,
+ "y" : 484.2291446449235
+ }, {
+ "x" : 612.4682228814345,
+ "y" : 483.5306702032685
+ }, {
+ "x" : 617.7691861771746,
+ "y" : 481.95127027481794
+ }, {
+ "x" : 616.3033398940461,
+ "y" : 477.0730952974409
+ }, {
+ "x" : 621.047740625916,
+ "y" : 475.6640980215743
+ }, {
+ "x" : 630.5369240725413,
+ "y" : 472.8350014388561
+ }, {
+ "x" : 643.1234979663277,
+ "y" : 469.09777154773474
+ }, {
+ "x" : 659.2670150776394,
+ "y" : 464.2898900741711
+ }, {
+ "x" : 669.5221220549429,
+ "y" : 461.26413448061794
+ }, {
+ "x" : 688.2306875747163,
+ "y" : 455.66377807222307
+ }, {
+ "x" : 700.4347754085902,
+ "y" : 452.01391824521124
+ }, {
+ "x" : 701.5591873698868,
+ "y" : 455.7568587977439
+ }, {
+ "x" : 706.0708909069654,
+ "y" : 454.40684601664543
+ }, {
+ "x" : 710.8912421548739,
+ "y" : 452.73344940971583
+ }, {
+ "x" : 706.9932091329247,
+ "y" : 442.4994289409369
+ }, {
+ "x" : 705.2016607492696,
+ "y" : 438.0107980584726
+ }, {
+ "x" : 693.2066398065072,
+ "y" : 440.9778651073575
+ }, {
+ "x" : 694.7493463116698,
+ "y" : 447.5498469499871
+ }, {
+ "x" : 688.4263271372765,
+ "y" : 449.19487685430795
+ }, {
+ "x" : 686.7471581662539,
+ "y" : 442.69618296902627
+ }, {
+ "x" : 669.1870590493781,
+ "y" : 444.69694843515754
+ }, {
+ "x" : 667.7549933177652,
+ "y" : 430.86324580200016
+ }, {
+ "x" : 690.0238065600861,
+ "y" : 427.85287352185696
+ }, {
+ "x" : 711.2297334708273,
+ "y" : 423.47161471657455
+ }, {
+ "x" : 718.4504968357505,
+ "y" : 438.70205024443567
+ }, {
+ "x" : 727.0790533305844,
+ "y" : 458.5417183889076
+ }, {
+ "x" : 708.963077701279,
+ "y" : 464.0061513800174
+ }, {
+ "x" : 692.2536291462602,
+ "y" : 469.0396038526669
+ }, {
+ "x" : 673.558848401648,
+ "y" : 474.67378813866526
+ }, {
+ "x" : 663.3015155933099,
+ "y" : 477.76621791999787
+ }, {
+ "x" : 647.1714041038649,
+ "y" : 482.6190427634865
+ }, {
+ "x" : 634.605289605679,
+ "y" : 486.41258277744055
+ }, {
+ "x" : 625.122812065878,
+ "y" : 489.26414988189936
+ }, {
+ "x" : 615.09083777247,
+ "y" : 492.2974963784218
+ }, {
+ "x" : 601.299359007855,
+ "y" : 496.45037901215255
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 137.9896865102928,
+ "y" : 484.43624704517424
+ }, {
+ "x" : 137.6403216472827,
+ "y" : 481.32029517926276
+ }, {
+ "x" : 139.48428130045068,
+ "y" : 481.1597266867757
+ }, {
+ "x" : 138.81978367303964,
+ "y" : 477.23209910374135
+ }, {
+ "x" : 138.42346776393242,
+ "y" : 474.84889977704734
+ }, {
+ "x" : 138.34324026643299,
+ "y" : 474.3566508181393
+ }, {
+ "x" : 136.484704508679,
+ "y" : 472.51401174999774
+ }, {
+ "x" : 135.6953758345917,
+ "y" : 470.5292778266594
+ }, {
+ "x" : 137.31026435433887,
+ "y" : 468.3249149909243
+ }, {
+ "x" : 137.2209320125403,
+ "y" : 466.55284567922354
+ }, {
+ "x" : 137.01595264859498,
+ "y" : 462.4626385252923
+ }, {
+ "x" : 144.1217335362453,
+ "y" : 460.5540297450498
+ }, {
+ "x" : 145.36819987860508,
+ "y" : 470.8654065076262
+ }, {
+ "x" : 153.05425984342583,
+ "y" : 469.1877049403265
+ }, {
+ "x" : 153.4081244067056,
+ "y" : 467.0744883948937
+ }, {
+ "x" : 156.93960904655978,
+ "y" : 466.3141825804487
+ }, {
+ "x" : 158.31023602327332,
+ "y" : 469.16404531151056
+ }, {
+ "x" : 173.07584334432613,
+ "y" : 467.0233143074438
+ }, {
+ "x" : 171.9789038769668,
+ "y" : 461.34545961767435
+ }, {
+ "x" : 156.52699950302485,
+ "y" : 461.0932493172586
+ }, {
+ "x" : 148.32086952473037,
+ "y" : 462.5198216214776
+ }, {
+ "x" : 147.6530136828078,
+ "y" : 458.6922160061076
+ }, {
+ "x" : 155.8665840473259,
+ "y" : 457.26589244697243
+ }, {
+ "x" : 159.07493199268356,
+ "y" : 457.0399140669033
+ }, {
+ "x" : 158.41954347444698,
+ "y" : 454.3921045688912
+ }, {
+ "x" : 156.80530561180785,
+ "y" : 444.8360749911517
+ }, {
+ "x" : 168.32170627533924,
+ "y" : 443.03119748830795
+ }, {
+ "x" : 169.22697215888184,
+ "y" : 442.8947249734774
+ }, {
+ "x" : 168.23408145690337,
+ "y" : 437.4428925681859
+ }, {
+ "x" : 171.5331581721548,
+ "y" : 437.17546446062624
+ }, {
+ "x" : 172.37737526674755,
+ "y" : 442.3997771432623
+ }, {
+ "x" : 176.41817483806517,
+ "y" : 441.767859922722
+ }, {
+ "x" : 179.22993971942924,
+ "y" : 460.2094838945195
+ }, {
+ "x" : 180.73939788434654,
+ "y" : 469.11668066401035
+ }, {
+ "x" : 181.8105207083281,
+ "y" : 475.78390353545547
+ }, {
+ "x" : 175.08590847498272,
+ "y" : 476.98207052238286
+ }, {
+ "x" : 174.29109462536871,
+ "y" : 474.4964663060382
+ }, {
+ "x" : 146.85984795889817,
+ "y" : 479.86100281216204
+ }, {
+ "x" : 148.17824035487138,
+ "y" : 488.9175356524065
+ }, {
+ "x" : 141.06933036865667,
+ "y" : 489.5910225985572
+ }, {
+ "x" : 141.34202549688052,
+ "y" : 490.7795637799427
+ }, {
+ "x" : 136.2539269621484,
+ "y" : 492.0105093223974
+ }, {
+ "x" : 137.45532534795348,
+ "y" : 497.903263525106
+ }, {
+ "x" : 159.87615302717313,
+ "y" : 493.22703809384257
+ }, {
+ "x" : 163.3478606886929,
+ "y" : 508.8647716753185
+ }, {
+ "x" : 159.5160069313133,
+ "y" : 509.70398840587586
+ }, {
+ "x" : 157.12365375063382,
+ "y" : 510.2355398852378
+ }, {
+ "x" : 156.7547473271843,
+ "y" : 508.5875898320228
+ }, {
+ "x" : 154.58843615057413,
+ "y" : 509.03772830124944
+ }, {
+ "x" : 152.6764142861357,
+ "y" : 509.4519073488191
+ }, {
+ "x" : 150.8011950510554,
+ "y" : 509.8784498684108
+ }, {
+ "x" : 148.53561396023724,
+ "y" : 510.40313843172044
+ }, {
+ "x" : 145.81350177689455,
+ "y" : 511.0014977129176
+ }, {
+ "x" : 143.9971983563155,
+ "y" : 502.80720581579953
+ }, {
+ "x" : 138.8377452781424,
+ "y" : 503.9467412242666
+ }, {
+ "x" : 138.0233285467839,
+ "y" : 500.7150276713073
+ }, {
+ "x" : 134.3662169573363,
+ "y" : 501.4488704232499
+ }, {
+ "x" : 133.73356895055622,
+ "y" : 498.3456532191485
+ }, {
+ "x" : 132.18216744880192,
+ "y" : 498.6606934638694
+ }, {
+ "x" : 131.04540731047746,
+ "y" : 493.05939392838627
+ }, {
+ "x" : 129.98659291944932,
+ "y" : 493.33535380195826
+ }, {
+ "x" : 128.4842494071927,
+ "y" : 493.7410530615598
+ }, {
+ "x" : 134.2578727840446,
+ "y" : 515.0859677530825
+ }, {
+ "x" : 124.26794340030756,
+ "y" : 517.7655292404816
+ }, {
+ "x" : 118.56045682670083,
+ "y" : 496.4451009426266
+ }, {
+ "x" : 113.60787481209263,
+ "y" : 478.35439120046794
+ }, {
+ "x" : 112.97138227336109,
+ "y" : 476.0298828147352
+ }, {
+ "x" : 110.36595635395497,
+ "y" : 466.50732882972807
+ }, {
+ "x" : 101.64768222987186,
+ "y" : 438.1986592905596
+ }, {
+ "x" : 103.76004283363,
+ "y" : 435.5882027549669
+ }, {
+ "x" : 129.73882631538436,
+ "y" : 431.14263144601136
+ }, {
+ "x" : 151.74152678623796,
+ "y" : 427.3980396678671
+ }, {
+ "x" : 152.73082299216185,
+ "y" : 427.1976306485012
+ }, {
+ "x" : 166.05524743511342,
+ "y" : 424.7525470824912
+ }, {
+ "x" : 166.20157628855668,
+ "y" : 425.71431876625866
+ }, {
+ "x" : 171.17142080515623,
+ "y" : 425.12474269606173
+ }, {
+ "x" : 172.4678294279147,
+ "y" : 434.3919410854578
+ }, {
+ "x" : 167.67453731840942,
+ "y" : 435.2656038030982
+ }, {
+ "x" : 154.44088616524823,
+ "y" : 437.44670320954174
+ }, {
+ "x" : 153.20660196011886,
+ "y" : 437.6277536712587
+ }, {
+ "x" : 148.40140007226728,
+ "y" : 438.6345465555787
+ }, {
+ "x" : 149.35350544797257,
+ "y" : 445.9653341146186
+ }, {
+ "x" : 137.65989219211042,
+ "y" : 447.06334352120757
+ }, {
+ "x" : 136.08308078721166,
+ "y" : 440.6016665697098
+ }, {
+ "x" : 131.55451527342666,
+ "y" : 441.35073874145746
+ }, {
+ "x" : 115.30284152668901,
+ "y" : 444.07584929745644
+ }, {
+ "x" : 121.79214516363572,
+ "y" : 463.3975639641285
+ }, {
+ "x" : 122.86596652353182,
+ "y" : 467.3278142521158
+ }, {
+ "x" : 124.39755431422964,
+ "y" : 472.9201235836372
+ }, {
+ "x" : 125.01435086561833,
+ "y" : 475.16608827840537
+ }, {
+ "x" : 127.34776337095536,
+ "y" : 483.7004051860422
+ }, {
+ "x" : 128.44126765208784,
+ "y" : 487.7092019151896
+ }, {
+ "x" : 130.63175660336856,
+ "y" : 487.20423447620124
+ }, {
+ "x" : 140.0160647177836,
+ "y" : 485.04951664526016
+ }, {
+ "x" : 140.1292185873026,
+ "y" : 484.1187166357413
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 677.4506242063362,
+ "y" : 307.4657444190234
+ }, {
+ "x" : 682.627184198238,
+ "y" : 293.6766809830442
+ }, {
+ "x" : 699.4577511517564,
+ "y" : 286.38861900009215
+ }, {
+ "x" : 718.4026948547689,
+ "y" : 281.9645505864173
+ }, {
+ "x" : 734.0981474195141,
+ "y" : 278.3211323870346
+ }, {
+ "x" : 747.9257071104366,
+ "y" : 275.1043571578339
+ }, {
+ "x" : 765.5073620114708,
+ "y" : 270.9349020346999
+ }, {
+ "x" : 767.3827501877677,
+ "y" : 271.8325867271051
+ }, {
+ "x" : 772.5274432515725,
+ "y" : 290.5757685387507
+ }, {
+ "x" : 776.2996725890553,
+ "y" : 304.32149655837566
+ }, {
+ "x" : 760.6431362900184,
+ "y" : 308.57805391494185
+ }, {
+ "x" : 757.8057708670385,
+ "y" : 298.2351117450744
+ }, {
+ "x" : 760.1347339589847,
+ "y" : 297.6015294007957
+ }, {
+ "x" : 759.2444508308545,
+ "y" : 294.2002580333501
+ }, {
+ "x" : 757.2687985977391,
+ "y" : 287.001720642671
+ }, {
+ "x" : 751.0623605283909,
+ "y" : 288.4948542173952
+ }, {
+ "x" : 747.7009339254582,
+ "y" : 289.28278913348913
+ }, {
+ "x" : 749.0293560832506,
+ "y" : 294.9240814521909
+ }, {
+ "x" : 741.631703101797,
+ "y" : 296.64410662371665
+ }, {
+ "x" : 740.2457191700814,
+ "y" : 290.72271944675595
+ }, {
+ "x" : 737.169464908191,
+ "y" : 291.44238745234907
+ }, {
+ "x" : 741.6296528753592,
+ "y" : 313.71175149828196
+ }, {
+ "x" : 727.4106224853313,
+ "y" : 317.2825107201934
+ }, {
+ "x" : 725.6893067825586,
+ "y" : 315.7892117407173
+ }, {
+ "x" : 715.0026473596226,
+ "y" : 320.34689344186336
+ }, {
+ "x" : 709.3777332680766,
+ "y" : 308.1187141397968
+ }, {
+ "x" : 718.5916432463564,
+ "y" : 305.7366462908685
+ }, {
+ "x" : 716.7194670350291,
+ "y" : 296.3497359873727
+ }, {
+ "x" : 705.1004152448149,
+ "y" : 299.19594993349165
+ }, {
+ "x" : 693.8244189014658,
+ "y" : 304.01197017077357
+ }, {
+ "x" : 696.6775263347663,
+ "y" : 309.69349509384483
+ }, {
+ "x" : 704.4278025801759,
+ "y" : 325.3422866333276
+ }, {
+ "x" : 711.6144414315931,
+ "y" : 340.9275930766016
+ }, {
+ "x" : 714.7434680341976,
+ "y" : 347.69767650868744
+ }, {
+ "x" : 712.6337923870888,
+ "y" : 348.672453770414
+ }, {
+ "x" : 716.9143153852783,
+ "y" : 357.9402500381693
+ }, {
+ "x" : 719.9039806921501,
+ "y" : 364.4274841090664
+ }, {
+ "x" : 727.0576847200282,
+ "y" : 361.10815702192485
+ }, {
+ "x" : 725.9063533147564,
+ "y" : 357.94287159573287
+ }, {
+ "x" : 740.3066516878316,
+ "y" : 351.641158670187
+ }, {
+ "x" : 736.772623656434,
+ "y" : 344.07857005950063
+ }, {
+ "x" : 740.2986241179751,
+ "y" : 342.16129667591304
+ }, {
+ "x" : 738.3787878341973,
+ "y" : 337.72396432142705
+ }, {
+ "x" : 722.0311241418822,
+ "y" : 345.4843577761203
+ }, {
+ "x" : 714.9915651483461,
+ "y" : 330.61607421189547
+ }, {
+ "x" : 732.1285917157074,
+ "y" : 322.6263570841402
+ }, {
+ "x" : 731.8897012842353,
+ "y" : 321.9841082058847
+ }, {
+ "x" : 755.8026443363633,
+ "y" : 314.3785882368684
+ }, {
+ "x" : 756.9667426830856,
+ "y" : 318.490044192411
+ }, {
+ "x" : 778.6320794392377,
+ "y" : 311.9771199412644
+ }, {
+ "x" : 782.2436360233696,
+ "y" : 325.8509533982724
+ }, {
+ "x" : 785.7724317305256,
+ "y" : 339.0878022927791
+ }, {
+ "x" : 764.8394516080152,
+ "y" : 344.63514069188386
+ }, {
+ "x" : 762.1827014819719,
+ "y" : 334.6765757817775
+ }, {
+ "x" : 770.0012492787791,
+ "y" : 332.614726097323
+ }, {
+ "x" : 769.1295393586624,
+ "y" : 329.32534118928015
+ }, {
+ "x" : 768.0001210977789,
+ "y" : 324.84788363426924
+ }, {
+ "x" : 760.8046965787653,
+ "y" : 326.75271935295314
+ }, {
+ "x" : 759.4074753653258,
+ "y" : 327.1284228460863
+ }, {
+ "x" : 759.4004145546351,
+ "y" : 327.11705857142806
+ }, {
+ "x" : 759.5070193224819,
+ "y" : 327.4878191538155
+ }, {
+ "x" : 762.1285743193002,
+ "y" : 326.78621650021523
+ }, {
+ "x" : 763.1297783907503,
+ "y" : 331.092456696555
+ }, {
+ "x" : 752.7636035531759,
+ "y" : 334.09206496272236
+ }, {
+ "x" : 757.3975531875622,
+ "y" : 350.98218443989754
+ }, {
+ "x" : 750.1939241220243,
+ "y" : 353.131533046253
+ }, {
+ "x" : 752.0447643743828,
+ "y" : 359.83630649000406
+ }, {
+ "x" : 723.906540022348,
+ "y" : 373.1073534395546
+ }, {
+ "x" : 728.9286696040072,
+ "y" : 384.00233837682754
+ }, {
+ "x" : 727.0762998824939,
+ "y" : 384.8522659726441
+ }, {
+ "x" : 729.1247176729375,
+ "y" : 389.44969670102
+ }, {
+ "x" : 730.2779983200599,
+ "y" : 389.24378606583923
+ }, {
+ "x" : 740.1279713315889,
+ "y" : 386.5382816120982
+ }, {
+ "x" : 738.1170344376005,
+ "y" : 379.28292844910175
+ }, {
+ "x" : 752.9636018575402,
+ "y" : 375.1992941945791
+ }, {
+ "x" : 757.9076897732448,
+ "y" : 393.04560509324074
+ }, {
+ "x" : 743.0682238189038,
+ "y" : 397.14058972056955
+ }, {
+ "x" : 733.2108315445948,
+ "y" : 399.8458381081
+ }, {
+ "x" : 723.2556113714818,
+ "y" : 402.8037104764953
+ }, {
+ "x" : 717.0284519061679,
+ "y" : 389.453718110919
+ }, {
+ "x" : 712.0063060962129,
+ "y" : 378.5587440226227
+ }, {
+ "x" : 705.0136843698565,
+ "y" : 363.402769385837
+ }, {
+ "x" : 697.6048580978531,
+ "y" : 347.34267957601696
+ }, {
+ "x" : 689.55969662813,
+ "y" : 332.05112709943205
+ }, {
+ "x" : 682.016674103681,
+ "y" : 317.0991692477837
+ } ]
+ },
+ "id" : -1
+ } ],
+ "measurementAreas" : [ ],
+ "stairs" : [ ],
+ "targets" : [ ],
+ "absorbingAreas" : [ ],
+ "sources" : [ ],
+ "dynamicElements" : [ ],
+ "attributesPedestrian" : {
+ "radius" : 0.195,
+ "densityDependentSpeed" : false,
+ "speedDistributionMean" : 1.34,
+ "speedDistributionStandardDeviation" : 0.26,
+ "minimumSpeed" : 0.5,
+ "maximumSpeed" : 2.2,
+ "acceleration" : 2.0,
+ "footStepsToStore" : 4,
+ "searchRadius" : 1.0,
+ "angleCalculationType" : "USE_CENTER",
+ "targetOrientationAngleThreshold" : 45.0
+ },
+ "teleporter" : null,
+ "attributesCar" : {
+ "id" : -1,
+ "radius" : 0.195,
+ "densityDependentSpeed" : false,
+ "speedDistributionMean" : 1.34,
+ "speedDistributionStandardDeviation" : 0.26,
+ "minimumSpeed" : 0.5,
+ "maximumSpeed" : 2.2,
+ "acceleration" : 2.0,
+ "footStepsToStore" : 4,
+ "searchRadius" : 1.0,
+ "angleCalculationType" : "USE_CENTER",
+ "targetOrientationAngleThreshold" : 45.0,
+ "length" : 4.5,
+ "width" : 1.7,
+ "direction" : {
+ "x" : 1.0,
+ "y" : 0.0
+ }
+ }
+ },
+ "eventInfos" : [ ]
+ }
+}
\ No newline at end of file
diff --git a/VadereManager/testResources/testProject001/scenarios/mf_small.scenario b/VadereManager/testResources/testProject001/scenarios/mf_small.scenario
new file mode 100644
index 0000000000000000000000000000000000000000..30d7188420959c12dec6aa14e1064a76aa718060
--- /dev/null
+++ b/VadereManager/testResources/testProject001/scenarios/mf_small.scenario
@@ -0,0 +1,3156 @@
+{
+ "name" : "mf_small",
+ "description" : "",
+ "release" : "1.0",
+ "processWriters" : {
+ "files" : [ {
+ "type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
+ "filename" : "postvis.trajectories",
+ "processors" : [ 1, 2 ]
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOverlapOutputFile",
+ "filename" : "overlaps.csv",
+ "processors" : [ 3 ]
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.outputfile.NoDataKeyOutputFile",
+ "filename" : "overlapCount.txt",
+ "processors" : [ 4 ]
+ } ],
+ "processors" : [ {
+ "type" : "org.vadere.simulator.projects.dataprocessing.processor.PedestrianPositionProcessor",
+ "id" : 1
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.processor.PedestrianTargetIdProcessor",
+ "id" : 2
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.processor.PedestrianOverlapProcessor",
+ "id" : 3
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.processor.NumberOverlapsProcessor",
+ "id" : 4,
+ "attributesType" : "org.vadere.state.attributes.processor.AttributesNumberOverlapsProcessor",
+ "attributes" : {
+ "pedestrianOverlapProcessorId" : 3
+ }
+ } ],
+ "isTimestamped" : true,
+ "isWriteMetaData" : false
+ },
+ "scenario" : {
+ "mainModel" : "org.vadere.simulator.models.osm.OptimalStepsModel",
+ "attributesModel" : {
+ "org.vadere.state.attributes.models.AttributesOSM" : {
+ "stepCircleResolution" : 4,
+ "numberOfCircles" : 1,
+ "optimizationType" : "DISCRETE",
+ "varyStepDirection" : true,
+ "movementType" : "ARBITRARY",
+ "stepLengthIntercept" : 0.4625,
+ "stepLengthSlopeSpeed" : 0.2345,
+ "stepLengthSD" : 0.036,
+ "movementThreshold" : 0.0,
+ "minStepLength" : 0.1,
+ "minimumStepLength" : true,
+ "maxStepDuration" : 1.7976931348623157E308,
+ "dynamicStepLength" : true,
+ "updateType" : "EVENT_DRIVEN",
+ "seeSmallWalls" : false,
+ "targetPotentialModel" : "org.vadere.simulator.models.potential.fields.PotentialFieldTargetGrid",
+ "pedestrianPotentialModel" : "org.vadere.simulator.models.potential.PotentialFieldPedestrianCompactSoftshell",
+ "obstaclePotentialModel" : "org.vadere.simulator.models.potential.PotentialFieldObstacleCompactSoftshell",
+ "submodels" : [ ]
+ },
+ "org.vadere.state.attributes.models.AttributesPotentialCompactSoftshell" : {
+ "pedPotentialIntimateSpaceWidth" : 0.45,
+ "pedPotentialPersonalSpaceWidth" : 1.2,
+ "pedPotentialHeight" : 50.0,
+ "obstPotentialWidth" : 0.8,
+ "obstPotentialHeight" : 6.0,
+ "intimateSpaceFactor" : 1.2,
+ "personalSpacePower" : 1,
+ "intimateSpacePower" : 1
+ },
+ "org.vadere.state.attributes.models.AttributesFloorField" : {
+ "createMethod" : "HIGH_ACCURACY_FAST_MARCHING",
+ "potentialFieldResolution" : 0.3,
+ "obstacleGridPenalty" : 0.1,
+ "targetAttractionStrength" : 1.0,
+ "timeCostAttributes" : {
+ "standardDeviation" : 0.7,
+ "type" : "UNIT",
+ "obstacleDensityWeight" : 3.5,
+ "pedestrianSameTargetDensityWeight" : 3.5,
+ "pedestrianOtherTargetDensityWeight" : 3.5,
+ "pedestrianWeight" : 3.5,
+ "queueWidthLoading" : 1.0,
+ "pedestrianDynamicWeight" : 6.0,
+ "loadingType" : "CONSTANT",
+ "width" : 0.2,
+ "height" : 1.0
+ }
+ }
+ },
+ "attributesSimulation" : {
+ "finishTime" : 500.0,
+ "simTimeStepLength" : 0.4,
+ "realTimeSimTimeRatio" : 0.1,
+ "writeSimulationData" : true,
+ "visualizationEnabled" : true,
+ "printFPS" : false,
+ "digitsPerCoordinate" : 2,
+ "useFixedSeed" : true,
+ "fixedSeed" : -7492697142818052001,
+ "simulationSeed" : 0,
+ "useSalientBehavior" : false
+ },
+ "topography" : {
+ "attributes" : {
+ "bounds" : {
+ "x" : 0.0,
+ "y" : 0.0,
+ "width" : 416.0,
+ "height" : 394.0
+ },
+ "boundingBoxWidth" : 0.5,
+ "bounded" : true
+ },
+ "obstacles" : [ {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 338.3516183325555,
+ "y" : 362.5963899437338
+ }, {
+ "x" : 343.02609026036225,
+ "y" : 378.286135494709
+ }, {
+ "x" : 351.93509951245505,
+ "y" : 375.66005207784474
+ }, {
+ "x" : 355.873663465376,
+ "y" : 388.8883651131764
+ }, {
+ "x" : 349.21245901077054,
+ "y" : 390.85583183914423
+ }, {
+ "x" : 347.31987769471016,
+ "y" : 384.50572884082794
+ }, {
+ "x" : 337.2828989379341,
+ "y" : 387.47211455274373
+ }, {
+ "x" : 330.5624021679396,
+ "y" : 364.90417459234595
+ } ]
+ },
+ "id" : 3
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 332.2208877677331,
+ "y" : 309.03939884062856
+ }, {
+ "x" : 330.00993430428207,
+ "y" : 303.0791268730536
+ }, {
+ "x" : 345.36510030389763,
+ "y" : 296.9206099594012
+ }, {
+ "x" : 348.09377589507494,
+ "y" : 303.421264084056
+ } ]
+ },
+ "id" : 4
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 143.32085206510965,
+ "y" : 268.0323628457263
+ }, {
+ "x" : 143.19762430666015,
+ "y" : 257.75868920236826
+ }, {
+ "x" : 142.9468521476956,
+ "y" : 236.4546125344932
+ }, {
+ "x" : 142.80199658451602,
+ "y" : 224.61141097079962
+ }, {
+ "x" : 141.26433231611736,
+ "y" : 222.9686145586893
+ }, {
+ "x" : 139.07093343907036,
+ "y" : 222.89480644091964
+ }, {
+ "x" : 134.5234637776157,
+ "y" : 223.0978261390701
+ }, {
+ "x" : 134.52478342875838,
+ "y" : 223.94346525054425
+ }, {
+ "x" : 128.71627053350676,
+ "y" : 224.23757156636566
+ }, {
+ "x" : 128.7636106547434,
+ "y" : 225.48530396539718
+ }, {
+ "x" : 120.10473963420372,
+ "y" : 225.98391894809902
+ }, {
+ "x" : 120.43783517531119,
+ "y" : 239.313241366297
+ }, {
+ "x" : 127.55535002495162,
+ "y" : 238.82952168863267
+ }, {
+ "x" : 129.11283300910145,
+ "y" : 239.88329032901675
+ }, {
+ "x" : 129.03953752154484,
+ "y" : 242.06156824342906
+ }, {
+ "x" : 127.4147435198538,
+ "y" : 243.00825892016292
+ }, {
+ "x" : 126.85985854000319,
+ "y" : 253.52614285144955
+ }, {
+ "x" : 128.85249485610984,
+ "y" : 253.59319164324552
+ }, {
+ "x" : 128.73208046890795,
+ "y" : 257.17179113905877
+ }, {
+ "x" : 126.69905837345868,
+ "y" : 258.30501796863973
+ }, {
+ "x" : 124.40551505959593,
+ "y" : 255.23488490190357
+ }, {
+ "x" : 120.79827379074413,
+ "y" : 255.36941431555897
+ }, {
+ "x" : 121.1198546589585,
+ "y" : 268.5982140824199
+ }, {
+ "x" : 132.19804658845533,
+ "y" : 268.31452713906765
+ } ]
+ },
+ "id" : 8
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 89.6941216775449,
+ "y" : 248.87107722647488
+ }, {
+ "x" : 110.5791515193414,
+ "y" : 248.26082365680486
+ }, {
+ "x" : 110.12508697505109,
+ "y" : 239.41130908671767
+ }, {
+ "x" : 113.89474752545357,
+ "y" : 239.53814068436623
+ }, {
+ "x" : 113.94482997246087,
+ "y" : 230.52756814099848
+ }, {
+ "x" : 112.61871172662359,
+ "y" : 228.791761203669
+ }, {
+ "x" : 110.47245799005032,
+ "y" : 229.0867161685601
+ }, {
+ "x" : 109.36736885970458,
+ "y" : 232.06474750861526
+ }, {
+ "x" : 96.67687137622852,
+ "y" : 231.81581196095794
+ }, {
+ "x" : 96.22817697748542,
+ "y" : 241.39153725281358
+ }, {
+ "x" : 89.17048360814806,
+ "y" : 242.08870655857027
+ } ]
+ },
+ "id" : 9
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 169.75496158958413,
+ "y" : 9.635868145152926
+ }, {
+ "x" : 172.55675540678203,
+ "y" : 20.389101441949606
+ }, {
+ "x" : 173.58516083692666,
+ "y" : 21.903501871973276
+ }, {
+ "x" : 175.2956580062164,
+ "y" : 22.172465580515563
+ }, {
+ "x" : 198.9226032026345,
+ "y" : 16.42542403936386
+ }, {
+ "x" : 196.8137737477664,
+ "y" : 7.865117124281824
+ }, {
+ "x" : 187.3988144674804,
+ "y" : 9.806866973638535
+ }, {
+ "x" : 185.93127037596423,
+ "y" : 4.973188903182745
+ } ]
+ },
+ "id" : 11
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 368.4702665396035,
+ "y" : 302.2162632578984
+ }, {
+ "x" : 398.1384200428147,
+ "y" : 289.463806245476
+ }, {
+ "x" : 395.0586288685445,
+ "y" : 282.3393491720781
+ }, {
+ "x" : 365.38338706677314,
+ "y" : 295.0804586960003
+ } ]
+ },
+ "id" : 12
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 258.24578821868636,
+ "y" : 44.2131063323468
+ }, {
+ "x" : 256.77162720425986,
+ "y" : 39.35693035274744
+ }, {
+ "x" : 248.13839796511456,
+ "y" : 41.959094973281026
+ }, {
+ "x" : 249.61256528121885,
+ "y" : 46.815268563106656
+ } ]
+ },
+ "id" : 13
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 398.72115259221755,
+ "y" : 209.65239937789738
+ }, {
+ "x" : 376.45233934989665,
+ "y" : 212.66277165804058
+ }, {
+ "x" : 377.8844050815096,
+ "y" : 226.49647429119796
+ }, {
+ "x" : 395.4445041983854,
+ "y" : 224.49570882506669
+ }, {
+ "x" : 397.123673169408,
+ "y" : 230.99440271034837
+ }, {
+ "x" : 403.44669234380126,
+ "y" : 229.34937280602753
+ }, {
+ "x" : 401.9039858386386,
+ "y" : 222.77739096339792
+ } ]
+ },
+ "id" : 14
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 88.0037629675353,
+ "y" : 268.1404925044626
+ }, {
+ "x" : 87.91965838707983,
+ "y" : 254.930814483203
+ }, {
+ "x" : 83.68865175370593,
+ "y" : 254.79960567038506
+ }, {
+ "x" : 83.71619739569724,
+ "y" : 252.65316784381866
+ }, {
+ "x" : 75.42253192153294,
+ "y" : 252.69683131948113
+ }, {
+ "x" : 75.18887324642856,
+ "y" : 259.64287116751075
+ }, {
+ "x" : 60.61708841728978,
+ "y" : 262.657472548075
+ }, {
+ "x" : 56.70190495555289,
+ "y" : 267.5214611561969
+ }, {
+ "x" : 59.76229703333229,
+ "y" : 269.25995831843466
+ }, {
+ "x" : 71.66815174324438,
+ "y" : 268.2696625525132
+ } ]
+ },
+ "id" : 15
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 121.13527868466917,
+ "y" : 51.77050573565066
+ }, {
+ "x" : 137.2231975501636,
+ "y" : 51.4995901864022
+ }, {
+ "x" : 137.73858611402102,
+ "y" : 81.31301099155098
+ }, {
+ "x" : 121.65075069153681,
+ "y" : 81.58392285834998
+ } ]
+ },
+ "id" : 16
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 132.49563939182553,
+ "y" : 9.706123710609972
+ }, {
+ "x" : 137.54908174742013,
+ "y" : 40.92949869018048
+ }, {
+ "x" : 91.29751981049776,
+ "y" : 46.538723167963326
+ }, {
+ "x" : 86.02559399825986,
+ "y" : 25.343919068574905
+ }, {
+ "x" : 97.37899205833673,
+ "y" : 23.088923882693052
+ }, {
+ "x" : 109.36867269373033,
+ "y" : 16.082200379110873
+ } ]
+ },
+ "id" : 17
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 147.48832788609434,
+ "y" : 266.0697437087074
+ }, {
+ "x" : 149.67207587813027,
+ "y" : 265.9874638039619
+ }, {
+ "x" : 149.44200104125775,
+ "y" : 260.21632443834096
+ }, {
+ "x" : 149.12462083762512,
+ "y" : 259.693836491555
+ }, {
+ "x" : 148.62762896576896,
+ "y" : 259.42120799049735
+ }, {
+ "x" : 147.89042185922153,
+ "y" : 259.42977830581367
+ }, {
+ "x" : 147.4237846584292,
+ "y" : 259.8034938145429
+ }, {
+ "x" : 147.25787687243428,
+ "y" : 260.30971815250814
+ } ]
+ },
+ "id" : 18
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 29.798538877279498,
+ "y" : 43.14622634649277
+ }, {
+ "x" : 42.554842209792696,
+ "y" : 39.45851545128971
+ }, {
+ "x" : 47.0932943855878,
+ "y" : 55.02098180167377
+ }, {
+ "x" : 34.33702121011447,
+ "y" : 58.708681798540056
+ } ]
+ },
+ "id" : 19
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 10.384619708871469,
+ "y" : 61.08531735651195
+ }, {
+ "x" : 0.0,
+ "y" : 64.41891782451421
+ }, {
+ "x" : 2.9493999496335164,
+ "y" : 74.55394606105983
+ }, {
+ "x" : 19.19943108758889,
+ "y" : 73.66508542746305
+ }, {
+ "x" : 31.100576703669503,
+ "y" : 101.38019937369972
+ }, {
+ "x" : 31.949724983191118,
+ "y" : 103.35584659036249
+ }, {
+ "x" : 41.280593269038945,
+ "y" : 100.58768412098289
+ }, {
+ "x" : 28.859270189888775,
+ "y" : 60.894355457276106
+ }, {
+ "x" : 11.654857782414183,
+ "y" : 66.03469680808485
+ } ]
+ },
+ "id" : 20
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 192.229625736014,
+ "y" : 120.62000664323568
+ }, {
+ "x" : 191.81950455647893,
+ "y" : 119.09303265996277
+ }, {
+ "x" : 192.49859879072756,
+ "y" : 117.93650711234659
+ }, {
+ "x" : 194.7720954598626,
+ "y" : 117.4010854549706
+ }, {
+ "x" : 195.87239499611314,
+ "y" : 118.10569510050118
+ }, {
+ "x" : 196.33082218794152,
+ "y" : 119.74555786699057
+ }, {
+ "x" : 195.59116808278486,
+ "y" : 120.71089836303145
+ }, {
+ "x" : 193.49836623796728,
+ "y" : 121.18564400728792
+ } ]
+ },
+ "id" : 21
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 189.027243176708,
+ "y" : 219.302207255736
+ }, {
+ "x" : 194.32366867829114,
+ "y" : 218.07857219316065
+ }, {
+ "x" : 195.51299079845194,
+ "y" : 223.2144283177331
+ }, {
+ "x" : 190.21694369218312,
+ "y" : 224.4269485026598
+ } ]
+ },
+ "id" : 22
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 398.2570426602615,
+ "y" : 113.85065295547247
+ }, {
+ "x" : 390.71402013581246,
+ "y" : 98.89869510382414
+ }, {
+ "x" : 386.1479702384677,
+ "y" : 89.26527027506381
+ }, {
+ "x" : 391.3245302303694,
+ "y" : 75.47620683908463
+ }, {
+ "x" : 408.15509718388785,
+ "y" : 68.18814485613257
+ }, {
+ "x" : 413.7977612769464,
+ "y" : 80.99547578953207
+ }, {
+ "x" : 402.5217649335973,
+ "y" : 85.81149602681398
+ }, {
+ "x" : 405.37487236689776,
+ "y" : 91.49302094988525
+ }, {
+ "x" : 413.1251486123074,
+ "y" : 107.14181248936802
+ } ]
+ },
+ "id" : 23
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 259.52564410783816,
+ "y" : 340.0255707418546
+ }, {
+ "x" : 254.89094712759834,
+ "y" : 323.14673939254135
+ }, {
+ "x" : 265.52503961499315,
+ "y" : 320.1335545107722
+ }, {
+ "x" : 267.3158645259682,
+ "y" : 324.86688817478716
+ }, {
+ "x" : 271.2203420273727,
+ "y" : 313.6940822098404
+ }, {
+ "x" : 279.42014936893247,
+ "y" : 315.7726633278653
+ }, {
+ "x" : 275.61797658726573,
+ "y" : 329.87511740997434
+ }, {
+ "x" : 273.80563075933605,
+ "y" : 336.6122348792851
+ } ]
+ },
+ "id" : 24
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 265.52503961499315,
+ "y" : 320.1335545107722
+ }, {
+ "x" : 254.89094712759834,
+ "y" : 323.14673939254135
+ }, {
+ "x" : 249.2923338660039,
+ "y" : 304.16597416158766
+ }, {
+ "x" : 266.11337285256013,
+ "y" : 299.1247276607901
+ }, {
+ "x" : 279.58093583746813,
+ "y" : 295.08322514779866
+ }, {
+ "x" : 283.5895808194764,
+ "y" : 300.2695431280881
+ }, {
+ "x" : 279.42014936893247,
+ "y" : 315.7726633278653
+ }, {
+ "x" : 271.2203420273727,
+ "y" : 313.6940822098404
+ }, {
+ "x" : 273.5014281310141,
+ "y" : 307.18414748087525
+ }, {
+ "x" : 268.41189759224653,
+ "y" : 307.79160169605166
+ }, {
+ "x" : 262.6287822313607,
+ "y" : 309.54396324884146
+ } ]
+ },
+ "id" : 25
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 389.50174822390545,
+ "y" : 304.3267821967602
+ }, {
+ "x" : 392.51854601397645,
+ "y" : 318.1805127309635
+ }, {
+ "x" : 373.27785574435256,
+ "y" : 322.3499027583748
+ }, {
+ "x" : 358.5740110883489,
+ "y" : 325.5261913044378
+ }, {
+ "x" : 345.46696896187495,
+ "y" : 328.3668885510415
+ }, {
+ "x" : 341.29663165530656,
+ "y" : 309.20047745946795
+ }, {
+ "x" : 352.09384497837164,
+ "y" : 306.8716466212645
+ }, {
+ "x" : 353.5514198510209,
+ "y" : 313.54088254552335
+ }, {
+ "x" : 355.85347693029325,
+ "y" : 313.03986936435103
+ }, {
+ "x" : 356.46621348918416,
+ "y" : 315.8420802857727
+ }, {
+ "x" : 371.1626458445098,
+ "y" : 312.6655352236703
+ }, {
+ "x" : 370.2535800607875,
+ "y" : 308.4959329869598
+ } ]
+ },
+ "id" : 26
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 97.21966983948369,
+ "y" : 57.69729004986584
+ }, {
+ "x" : 104.6069155826699,
+ "y" : 55.39789929706603
+ }, {
+ "x" : 111.01361271948554,
+ "y" : 77.37636316381395
+ }, {
+ "x" : 103.5713945684256,
+ "y" : 79.5403799302876
+ }, {
+ "x" : 102.41928899509367,
+ "y" : 75.50730080995709
+ }, {
+ "x" : 87.418885842897,
+ "y" : 79.74245493859053
+ }, {
+ "x" : 89.35566382890102,
+ "y" : 86.56123360432684
+ }, {
+ "x" : 76.56449194485322,
+ "y" : 90.1809058105573
+ }, {
+ "x" : 74.38100092927925,
+ "y" : 82.50823960639536
+ }, {
+ "x" : 51.32078291988,
+ "y" : 89.78799994662404
+ }, {
+ "x" : 49.7183491056785,
+ "y" : 90.29041692242026
+ }, {
+ "x" : 44.79267056565732,
+ "y" : 74.06960068270564
+ }, {
+ "x" : 46.59399630432017,
+ "y" : 73.62950242031366
+ }, {
+ "x" : 76.31024466082454,
+ "y" : 65.87265376001596
+ }, {
+ "x" : 76.91139748692513,
+ "y" : 67.91784988902509
+ }, {
+ "x" : 98.27956726634875,
+ "y" : 61.81627547275275
+ } ]
+ },
+ "id" : 27
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 408.5647130671423,
+ "y" : 176.64976060856134
+ }, {
+ "x" : 415.2447087839246,
+ "y" : 190.03724455274642
+ }, {
+ "x" : 414.13796314341016,
+ "y" : 191.51312353368849
+ }, {
+ "x" : 390.5927082701819,
+ "y" : 196.39415188878775
+ }, {
+ "x" : 374.9429138553096,
+ "y" : 197.36892197839916
+ }, {
+ "x" : 374.3916148284916,
+ "y" : 181.69568133540452
+ }, {
+ "x" : 387.228602435207,
+ "y" : 180.91541809868068
+ }, {
+ "x" : 388.04113357234746,
+ "y" : 184.6367179742083
+ }, {
+ "x" : 396.9114114246331,
+ "y" : 182.0650124028325
+ } ]
+ },
+ "id" : 28
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 60.273445224855095,
+ "y" : 0.0
+ }, {
+ "x" : 64.66521250014193,
+ "y" : 14.611816671676934
+ }, {
+ "x" : 55.54579329537228,
+ "y" : 17.064400693401694
+ }, {
+ "x" : 48.361898363917135,
+ "y" : 19.29281177278608
+ }, {
+ "x" : 50.21749270660803,
+ "y" : 25.207617214880884
+ }, {
+ "x" : 47.073195912409574,
+ "y" : 26.181112670339644
+ }, {
+ "x" : 45.8496321849525,
+ "y" : 22.27915990911424
+ }, {
+ "x" : 34.60651257773861,
+ "y" : 25.461441781371832
+ }, {
+ "x" : 31.34387833555229,
+ "y" : 14.459142952226102
+ }, {
+ "x" : 29.538105807616375,
+ "y" : 8.3902533557266
+ }, {
+ "x" : 37.948493772652,
+ "y" : 6.214191316626966
+ }, {
+ "x" : 41.38614885136485,
+ "y" : 5.150420036166906
+ }, {
+ "x" : 46.40466311562341,
+ "y" : 3.78377762529999
+ }, {
+ "x" : 51.26553867990151,
+ "y" : 2.4563426533713937
+ }, {
+ "x" : 56.43426399549935,
+ "y" : 1.050255749374628
+ } ]
+ },
+ "id" : 30
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 5.087338114157319,
+ "y" : 252.2672161431983
+ }, {
+ "x" : 7.846879991237074,
+ "y" : 248.34344168007374
+ }, {
+ "x" : 5.691728836623952,
+ "y" : 246.46852079685777
+ }, {
+ "x" : 4.200591969653033,
+ "y" : 244.32664728164673
+ }, {
+ "x" : 3.428918853867799,
+ "y" : 241.59702445194125
+ }, {
+ "x" : 3.5156201337231323,
+ "y" : 239.01865428686142
+ }, {
+ "x" : 3.983799320529215,
+ "y" : 236.16382985468954
+ }, {
+ "x" : 5.482151748845354,
+ "y" : 233.22125810477883
+ }, {
+ "x" : 7.4435759774642065,
+ "y" : 231.11759947706014
+ }, {
+ "x" : 9.459507467690855,
+ "y" : 229.8279892820865
+ }, {
+ "x" : 12.19882175035309,
+ "y" : 228.9409973444417
+ }, {
+ "x" : 15.008299414766952,
+ "y" : 228.62380398344249
+ }, {
+ "x" : 17.98526613228023,
+ "y" : 229.30247913487256
+ }, {
+ "x" : 20.479156968649477,
+ "y" : 230.84388276934624
+ }, {
+ "x" : 22.542557765729725,
+ "y" : 228.14284174889326
+ }, {
+ "x" : 21.80659459764138,
+ "y" : 223.24480162654072
+ }, {
+ "x" : 24.574454374960624,
+ "y" : 222.8372033080086
+ }, {
+ "x" : 38.09767436166294,
+ "y" : 208.9502873402089
+ }, {
+ "x" : 49.023094923002645,
+ "y" : 194.84251022245735
+ }, {
+ "x" : 51.10593294072896,
+ "y" : 195.76928466465324
+ }, {
+ "x" : 55.99496726808138,
+ "y" : 190.0590730123222
+ }, {
+ "x" : 60.37294866563752,
+ "y" : 193.788976511918
+ }, {
+ "x" : 61.68001871742308,
+ "y" : 192.10837434791028
+ }, {
+ "x" : 66.3333916827105,
+ "y" : 196.2814691029489
+ }, {
+ "x" : 49.21670819027349,
+ "y" : 217.63555298466235
+ }, {
+ "x" : 34.685886699706316,
+ "y" : 236.25058425217867
+ }, {
+ "x" : 16.642093724338338,
+ "y" : 260.6110338792205
+ } ]
+ },
+ "id" : 32
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 14.169676488032565,
+ "y" : 295.17497979011387
+ }, {
+ "x" : 29.189925020909868,
+ "y" : 274.39562542922795
+ }, {
+ "x" : 37.61039524152875,
+ "y" : 280.09729945939034
+ }, {
+ "x" : 31.09806936921086,
+ "y" : 289.3689542412758
+ }, {
+ "x" : 33.03494875715114,
+ "y" : 289.32283284235746
+ }, {
+ "x" : 33.05606274411548,
+ "y" : 291.79356726352125
+ }, {
+ "x" : 40.4853204106912,
+ "y" : 291.7764040324837
+ }, {
+ "x" : 40.46237325842958,
+ "y" : 287.14711785968393
+ }, {
+ "x" : 49.0831327654887,
+ "y" : 287.11440855730325
+ }, {
+ "x" : 49.417912491364405,
+ "y" : 300.17674558609724
+ }, {
+ "x" : 33.32364832912572,
+ "y" : 300.436525718309
+ }, {
+ "x" : 14.203284389455803,
+ "y" : 300.5945857455954
+ } ]
+ },
+ "id" : 33
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 241.80861691955943,
+ "y" : 22.352931492961943
+ }, {
+ "x" : 262.84603056078777,
+ "y" : 15.69562872685492
+ }, {
+ "x" : 268.4854911097791,
+ "y" : 14.238822482526302
+ }, {
+ "x" : 288.335027924506,
+ "y" : 6.384482720866799
+ }, {
+ "x" : 291.89023351855576,
+ "y" : 15.316198794171214
+ }, {
+ "x" : 272.04072085686494,
+ "y" : 23.170525611378253
+ }, {
+ "x" : 265.8561332928948,
+ "y" : 25.120781295001507
+ }, {
+ "x" : 244.81837488571182,
+ "y" : 31.789185896515846
+ } ]
+ },
+ "id" : 34
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 180.7392917496618,
+ "y" : 21.888366520404816
+ }, {
+ "x" : 193.46771377150435,
+ "y" : 20.80358686018735
+ }, {
+ "x" : 199.87684562522918,
+ "y" : 20.585380722768605
+ }, {
+ "x" : 220.75399586826097,
+ "y" : 19.12961764074862
+ }, {
+ "x" : 223.58328079758212,
+ "y" : 18.89107028208673
+ }, {
+ "x" : 222.34323141130153,
+ "y" : 14.37657391000539
+ }, {
+ "x" : 228.19793666596524,
+ "y" : 12.938100440427661
+ }, {
+ "x" : 233.10792947222944,
+ "y" : 29.16969884932041
+ }, {
+ "x" : 232.48540013981983,
+ "y" : 31.74115892406553
+ }, {
+ "x" : 221.72711659781635,
+ "y" : 32.45824623666704
+ }, {
+ "x" : 200.62288030714262,
+ "y" : 33.80622322205454
+ }, {
+ "x" : 181.55402404651977,
+ "y" : 35.72345955949277
+ } ]
+ },
+ "id" : 35
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 127.96576402778737,
+ "y" : 136.59314361587167
+ }, {
+ "x" : 123.9690617810702,
+ "y" : 137.46002960205078
+ }, {
+ "x" : 110.47174352942966,
+ "y" : 140.38828718848526
+ }, {
+ "x" : 108.73178453918081,
+ "y" : 140.7747978521511
+ }, {
+ "x" : 98.80507549608592,
+ "y" : 143.1111324876547
+ }, {
+ "x" : 94.6017458634451,
+ "y" : 124.01061337441206
+ }, {
+ "x" : 106.87968888913747,
+ "y" : 121.04129282943904
+ }, {
+ "x" : 108.25923179392703,
+ "y" : 127.38515760097653
+ }, {
+ "x" : 122.49342887010425,
+ "y" : 124.45943356864154
+ }, {
+ "x" : 122.27563238027506,
+ "y" : 120.31314338184893
+ }, {
+ "x" : 122.1248547588475,
+ "y" : 113.73246108740568
+ }, {
+ "x" : 109.69200351298787,
+ "y" : 114.00398837123066
+ }, {
+ "x" : 109.4910849230364,
+ "y" : 105.15186735708266
+ }, {
+ "x" : 109.25108475005254,
+ "y" : 94.58499068021774
+ }, {
+ "x" : 119.68792086141184,
+ "y" : 94.34643947239965
+ }, {
+ "x" : 119.58136252115946,
+ "y" : 89.76996902283281
+ }, {
+ "x" : 137.46003352757543,
+ "y" : 89.37016474828124
+ }, {
+ "x" : 137.79909042047802,
+ "y" : 104.51326497644186
+ }, {
+ "x" : 138.14997701102402,
+ "y" : 119.96829866990447
+ }, {
+ "x" : 138.10882872948423,
+ "y" : 134.464410639368
+ } ]
+ },
+ "id" : 36
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 253.10746822459623,
+ "y" : 109.49587658513337
+ }, {
+ "x" : 247.25828132592142,
+ "y" : 84.02009022049606
+ }, {
+ "x" : 237.88826663477812,
+ "y" : 86.61971308942884
+ }, {
+ "x" : 233.96614258363843,
+ "y" : 87.92296005040407
+ }, {
+ "x" : 241.16180197289214,
+ "y" : 112.32030882965773
+ }, {
+ "x" : 197.9725924783852,
+ "y" : 119.62279816251248
+ }, {
+ "x" : 186.40300052892417,
+ "y" : 76.33056942280382
+ }, {
+ "x" : 185.6906587301055,
+ "y" : 78.25368800759315
+ }, {
+ "x" : 184.95731510897167,
+ "y" : 79.25262115057558
+ }, {
+ "x" : 183.84003816137556,
+ "y" : 79.71569891553372
+ }, {
+ "x" : 182.4172965285834,
+ "y" : 79.52317374199629
+ }, {
+ "x" : 181.45835167332552,
+ "y" : 78.37827474158257
+ }, {
+ "x" : 178.6594244283624,
+ "y" : 68.42621949594468
+ }, {
+ "x" : 178.83487060724292,
+ "y" : 66.75206073001027
+ }, {
+ "x" : 179.69092215038836,
+ "y" : 65.64599409233779
+ }, {
+ "x" : 180.93642902979627,
+ "y" : 65.35412475839257
+ }, {
+ "x" : 182.21640441799536,
+ "y" : 65.58634942304343
+ }, {
+ "x" : 183.4846372572938,
+ "y" : 65.061594276689
+ }, {
+ "x" : 179.81917368178256,
+ "y" : 49.22796857729554
+ }, {
+ "x" : 220.66547932173125,
+ "y" : 45.86302188318223
+ }, {
+ "x" : 229.96712470578495,
+ "y" : 74.92638423852623
+ }, {
+ "x" : 236.62050045945216,
+ "y" : 72.75822418462485
+ }, {
+ "x" : 277.6587907563662,
+ "y" : 61.478258199989796
+ }, {
+ "x" : 280.5443220587913,
+ "y" : 60.674194771796465
+ }, {
+ "x" : 283.9440121684456,
+ "y" : 73.33909497596323
+ }, {
+ "x" : 285.6788162436569,
+ "y" : 72.88570446707308
+ }, {
+ "x" : 286.70718946889974,
+ "y" : 77.71575237438083
+ }, {
+ "x" : 288.1162804366322,
+ "y" : 77.42941472493112
+ }, {
+ "x" : 292.39265175373293,
+ "y" : 94.7857476156205
+ }, {
+ "x" : 291.1333462370094,
+ "y" : 95.26627447456121
+ }, {
+ "x" : 291.67905621160753,
+ "y" : 100.5028681922704
+ }, {
+ "x" : 273.77138191321865,
+ "y" : 105.96366146299988
+ }, {
+ "x" : 272.42098819767125,
+ "y" : 101.4120556525886
+ }, {
+ "x" : 270.499185876688,
+ "y" : 101.89253185782582
+ }, {
+ "x" : 265.0126954622101,
+ "y" : 79.13261679559946
+ }, {
+ "x" : 260.71065174532123,
+ "y" : 80.22278142627329
+ }, {
+ "x" : 266.70502792624757,
+ "y" : 106.24866008479148
+ } ]
+ },
+ "id" : 37
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 321.854868881288,
+ "y" : 88.83518527355045
+ }, {
+ "x" : 298.37761748046614,
+ "y" : 97.43507448770106
+ }, {
+ "x" : 293.5620523635298,
+ "y" : 85.70159294549376
+ }, {
+ "x" : 313.6981557297986,
+ "y" : 77.28956364933401
+ }, {
+ "x" : 307.07636212860234,
+ "y" : 61.27838537469506
+ }, {
+ "x" : 313.6925600928953,
+ "y" : 59.33158536348492
+ }, {
+ "x" : 304.0370127824135,
+ "y" : 36.80951383151114
+ }, {
+ "x" : 288.91018132376485,
+ "y" : 43.242897134274244
+ }, {
+ "x" : 298.54421544249635,
+ "y" : 65.74196350947022
+ }, {
+ "x" : 287.30660094344057,
+ "y" : 70.52612006943673
+ }, {
+ "x" : 272.26854399975855,
+ "y" : 35.41708060540259
+ }, {
+ "x" : 291.63630389841273,
+ "y" : 27.05697866808623
+ }, {
+ "x" : 311.2453782290686,
+ "y" : 18.827454746700823
+ }, {
+ "x" : 326.2973781025503,
+ "y" : 53.95932933688164
+ }, {
+ "x" : 320.5729502077447,
+ "y" : 56.392326892353594
+ }, {
+ "x" : 333.522137411288,
+ "y" : 84.5551242409274
+ } ]
+ },
+ "id" : 38
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 41.74883003497962,
+ "y" : 190.24749543890357
+ }, {
+ "x" : 37.50345266284421,
+ "y" : 191.20621130801737
+ }, {
+ "x" : 38.07997281313874,
+ "y" : 193.76238214224577
+ }, {
+ "x" : 32.889904009061866,
+ "y" : 194.92298040352762
+ }, {
+ "x" : 33.350157593144104,
+ "y" : 196.95230752788484
+ }, {
+ "x" : 25.804858991294168,
+ "y" : 198.6456461492926
+ }, {
+ "x" : 21.47831108281389,
+ "y" : 179.44091100711375
+ }, {
+ "x" : 38.4877230291022,
+ "y" : 175.6625866079703
+ }, {
+ "x" : 51.048396613565274,
+ "y" : 172.91406178940088
+ }, {
+ "x" : 62.713481448590755,
+ "y" : 170.23557582311332
+ }, {
+ "x" : 77.38477420189884,
+ "y" : 167.14642967190593
+ }, {
+ "x" : 82.72628087643534,
+ "y" : 169.45122427958995
+ }, {
+ "x" : 84.18529482756276,
+ "y" : 176.30956331081688
+ }, {
+ "x" : 80.6027994803153,
+ "y" : 181.01783756539226
+ }, {
+ "x" : 65.72854327911045,
+ "y" : 184.16690391860902
+ }, {
+ "x" : 53.97243263828568,
+ "y" : 186.67542703077197
+ }, {
+ "x" : 53.56763716065325,
+ "y" : 184.32530236896127
+ }, {
+ "x" : 41.006986524909735,
+ "y" : 187.07382106035948
+ } ]
+ },
+ "id" : 39
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 314.7929229896981,
+ "y" : 363.03785032313317
+ }, {
+ "x" : 297.19869887595996,
+ "y" : 366.72887958958745
+ }, {
+ "x" : 289.50337213941384,
+ "y" : 368.23878959566355
+ }, {
+ "x" : 288.97861722658854,
+ "y" : 378.9579651616514
+ }, {
+ "x" : 274.41165184625424,
+ "y" : 379.402006813325
+ }, {
+ "x" : 273.723095261259,
+ "y" : 356.52547006402165
+ }, {
+ "x" : 294.2445597045589,
+ "y" : 352.7771841865033
+ }, {
+ "x" : 311.83882334653754,
+ "y" : 349.0861447993666
+ }, {
+ "x" : 334.78594794054516,
+ "y" : 344.2625690046698
+ }, {
+ "x" : 346.8928471576655,
+ "y" : 341.72194553911686
+ }, {
+ "x" : 357.9427969971439,
+ "y" : 339.4016432194039
+ }, {
+ "x" : 375.7925687378738,
+ "y" : 335.64151933882385
+ }, {
+ "x" : 394.93131833150983,
+ "y" : 331.62447317223996
+ }, {
+ "x" : 395.4701111213071,
+ "y" : 334.19054618198425
+ }, {
+ "x" : 398.5138815200189,
+ "y" : 348.56812652014196
+ }, {
+ "x" : 379.37480969098397,
+ "y" : 352.5962729966268
+ }, {
+ "x" : 379.8438031768892,
+ "y" : 354.8039516797289
+ }, {
+ "x" : 361.9944609274389,
+ "y" : 358.5529478183016
+ }, {
+ "x" : 361.6543184098555,
+ "y" : 356.9393046107143
+ }, {
+ "x" : 350.6043997750385,
+ "y" : 359.25959894713014
+ }, {
+ "x" : 350.29543915973045,
+ "y" : 357.82502745930105
+ }, {
+ "x" : 338.19600641855504,
+ "y" : 360.36589336209
+ }, {
+ "x" : 315.2489413203439,
+ "y" : 365.18945392314345
+ } ]
+ },
+ "id" : 40
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 385.35885682550725,
+ "y" : 264.46638219989836
+ }, {
+ "x" : 402.47574361914303,
+ "y" : 259.26859607733786
+ }, {
+ "x" : 405.37718827079516,
+ "y" : 269.0351012656465
+ }, {
+ "x" : 400.9261175544234,
+ "y" : 270.3537840908393
+ }, {
+ "x" : 401.6954070881475,
+ "y" : 272.92762407660484
+ }, {
+ "x" : 388.98912907217164,
+ "y" : 276.68296282179654
+ }, {
+ "x" : 369.0277891776059,
+ "y" : 282.57491853274405
+ }, {
+ "x" : 370.12702015566174,
+ "y" : 285.9609613837674
+ }, {
+ "x" : 357.4393566218205,
+ "y" : 289.828257067129
+ }, {
+ "x" : 355.6421686812537,
+ "y" : 283.9597974643111
+ }, {
+ "x" : 350.9944388922304,
+ "y" : 285.3720290409401
+ }, {
+ "x" : 350.3369259906467,
+ "y" : 283.2358871884644
+ }, {
+ "x" : 342.7409137497889,
+ "y" : 285.5501703163609
+ }, {
+ "x" : 329.5718053042656,
+ "y" : 289.5682026511058
+ }, {
+ "x" : 309.1681139204884,
+ "y" : 295.7792485402897
+ }, {
+ "x" : 307.17338106851093,
+ "y" : 298.426874791272
+ }, {
+ "x" : 303.4076625126181,
+ "y" : 316.96992347575724
+ }, {
+ "x" : 300.1844557732111,
+ "y" : 317.1951559074223
+ }, {
+ "x" : 300.98944536189083,
+ "y" : 323.130315461196
+ }, {
+ "x" : 305.6024219787214,
+ "y" : 322.30656754691154
+ }, {
+ "x" : 323.8903966068756,
+ "y" : 319.01721675042063
+ }, {
+ "x" : 334.18039179686457,
+ "y" : 317.1608248790726
+ }, {
+ "x" : 336.5086757449899,
+ "y" : 330.02334022149444
+ }, {
+ "x" : 326.23207507573534,
+ "y" : 331.9246828677133
+ }, {
+ "x" : 307.9627013136633,
+ "y" : 335.3259130381048
+ }, {
+ "x" : 292.22550660697743,
+ "y" : 338.24503855314106
+ }, {
+ "x" : 289.74562628986314,
+ "y" : 327.8919776920229
+ }, {
+ "x" : 292.38981598766986,
+ "y" : 317.0105286538601
+ }, {
+ "x" : 295.2179503674852,
+ "y" : 304.8668809533119
+ }, {
+ "x" : 297.9911242470844,
+ "y" : 294.1344191096723
+ }, {
+ "x" : 302.5591517527355,
+ "y" : 290.0046521956101
+ }, {
+ "x" : 306.8875765139237,
+ "y" : 288.34797645080835
+ }, {
+ "x" : 327.2987258066423,
+ "y" : 282.1371722826734
+ }, {
+ "x" : 340.46747455128934,
+ "y" : 278.130247999914
+ }, {
+ "x" : 352.71123169059865,
+ "y" : 274.4037275062874
+ }, {
+ "x" : 365.4513453533873,
+ "y" : 270.52706036530435
+ } ]
+ },
+ "id" : 41
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 383.2239125279011,
+ "y" : 162.35537988040596
+ }, {
+ "x" : 386.878836855758,
+ "y" : 160.58705602120608
+ }, {
+ "x" : 384.7470881030895,
+ "y" : 156.03134380001575
+ }, {
+ "x" : 396.40748823806643,
+ "y" : 150.62743048463017
+ }, {
+ "x" : 402.6146818937268,
+ "y" : 163.90995454788208
+ }, {
+ "x" : 390.9613618464209,
+ "y" : 169.32521891593933
+ }, {
+ "x" : 379.36086089815944,
+ "y" : 174.72003271244466
+ }, {
+ "x" : 370.0667185600614,
+ "y" : 179.04656306933612
+ }, {
+ "x" : 369.8300675082719,
+ "y" : 176.79108323343098
+ }, {
+ "x" : 358.56122481287457,
+ "y" : 175.87738842051476
+ }, {
+ "x" : 359.47363025695086,
+ "y" : 162.93489299807698
+ }, {
+ "x" : 368.45434022159316,
+ "y" : 163.4933449467644
+ }, {
+ "x" : 373.06724100816064,
+ "y" : 162.0131905861199
+ }, {
+ "x" : 377.15138951526023,
+ "y" : 170.26184111647308
+ }, {
+ "x" : 385.06279326346703,
+ "y" : 166.5451834630221
+ } ]
+ },
+ "id" : 42
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 318.7191829237854,
+ "y" : 144.80595272500068
+ }, {
+ "x" : 301.52898585400544,
+ "y" : 142.6693270765245
+ }, {
+ "x" : 302.20720663829707,
+ "y" : 138.88698557950556
+ }, {
+ "x" : 300.0185967939906,
+ "y" : 132.25990966241807
+ }, {
+ "x" : 305.0799698798219,
+ "y" : 130.282995313406
+ }, {
+ "x" : 307.14130300388206,
+ "y" : 135.82653931062669
+ }, {
+ "x" : 320.56922381115146,
+ "y" : 137.83646309934556
+ }, {
+ "x" : 323.31384418031666,
+ "y" : 138.56310184206814
+ }, {
+ "x" : 325.7746830743272,
+ "y" : 128.4877050369978
+ }, {
+ "x" : 328.3094414084917,
+ "y" : 117.10189924761653
+ }, {
+ "x" : 327.71025515394285,
+ "y" : 115.00110571552068
+ }, {
+ "x" : 321.99165265785996,
+ "y" : 116.59982475731522
+ }, {
+ "x" : 302.3145438351203,
+ "y" : 122.87990676891059
+ }, {
+ "x" : 304.86776284105144,
+ "y" : 129.95318695530295
+ }, {
+ "x" : 299.51603567949496,
+ "y" : 131.9314495017752
+ }, {
+ "x" : 297.0912341964431,
+ "y" : 124.13928957283497
+ }, {
+ "x" : 295.0195563507732,
+ "y" : 124.8706140005961
+ }, {
+ "x" : 286.6569998309715,
+ "y" : 127.837869877927
+ }, {
+ "x" : 287.46339288156014,
+ "y" : 131.08051473181695
+ }, {
+ "x" : 289.2982892434811,
+ "y" : 138.4856381546706
+ }, {
+ "x" : 288.7212389141787,
+ "y" : 162.03163015376776
+ }, {
+ "x" : 274.1487800597679,
+ "y" : 161.29613697249442
+ }, {
+ "x" : 275.3681470331503,
+ "y" : 142.98999210540205
+ }, {
+ "x" : 275.59878079860937,
+ "y" : 139.01455681025982
+ }, {
+ "x" : 260.61343050422147,
+ "y" : 139.04403663240373
+ }, {
+ "x" : 257.51860655937344,
+ "y" : 124.62033905088902
+ }, {
+ "x" : 291.9157770720776,
+ "y" : 114.25177355762571
+ }, {
+ "x" : 298.8650553143816,
+ "y" : 112.13815667945892
+ }, {
+ "x" : 318.5421954020858,
+ "y" : 105.85806200094521
+ }, {
+ "x" : 338.03569119493477,
+ "y" : 99.72761433850974
+ }, {
+ "x" : 341.47734665311873,
+ "y" : 108.71117755398154
+ }, {
+ "x" : 335.40153900987934,
+ "y" : 130.8591940300539
+ }, {
+ "x" : 331.86717111011967,
+ "y" : 148.27514360379428
+ } ]
+ },
+ "id" : 43
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 115.07975801848806,
+ "y" : 280.4224553126842
+ }, {
+ "x" : 122.08367589570116,
+ "y" : 286.4103849316016
+ }, {
+ "x" : 124.32392592716496,
+ "y" : 284.4274089029059
+ }, {
+ "x" : 126.3406610667007,
+ "y" : 286.65376017056406
+ }, {
+ "x" : 129.03773416229524,
+ "y" : 288.79174234345555
+ }, {
+ "x" : 133.23457680328283,
+ "y" : 288.6103017022833
+ }, {
+ "x" : 133.1760002624942,
+ "y" : 285.9269050192088
+ }, {
+ "x" : 131.8436092856573,
+ "y" : 285.92657579574734
+ }, {
+ "x" : 130.31904891389422,
+ "y" : 283.8948036171496
+ }, {
+ "x" : 129.69775211403612,
+ "y" : 278.68906660564244
+ }, {
+ "x" : 132.96333509555552,
+ "y" : 278.53192079626024
+ }, {
+ "x" : 137.22004092042334,
+ "y" : 278.3413707315922
+ }, {
+ "x" : 144.68991099356208,
+ "y" : 278.0030469596386
+ }, {
+ "x" : 145.05923254950903,
+ "y" : 297.5531679727137
+ }, {
+ "x" : 129.4214764072094,
+ "y" : 297.7390312021598
+ }, {
+ "x" : 116.2744997520931,
+ "y" : 298.0087430952117
+ }, {
+ "x" : 115.09573775948957,
+ "y" : 295.65482268389314
+ }, {
+ "x" : 109.40480950358324,
+ "y" : 295.7748805619776
+ }, {
+ "x" : 102.05247724894434,
+ "y" : 295.939183389768
+ }, {
+ "x" : 102.10105833865236,
+ "y" : 298.4776014704257
+ }, {
+ "x" : 97.65367356548086,
+ "y" : 298.5838778493926
+ }, {
+ "x" : 89.8463064605603,
+ "y" : 298.77739213593304
+ }, {
+ "x" : 72.93972913129255,
+ "y" : 299.0653646606952
+ }, {
+ "x" : 57.12388034281321,
+ "y" : 299.45683248061687
+ }, {
+ "x" : 56.874050113372505,
+ "y" : 277.45185577869415
+ }, {
+ "x" : 68.96003376401495,
+ "y" : 277.3020822368562
+ }, {
+ "x" : 69.06544803851284,
+ "y" : 286.11761001776904
+ }, {
+ "x" : 72.68454634316731,
+ "y" : 286.07245805021375
+ }, {
+ "x" : 74.82886496582069,
+ "y" : 286.05558122042567
+ }, {
+ "x" : 74.7234595407499,
+ "y" : 277.2400530949235
+ }, {
+ "x" : 86.22094568924513,
+ "y" : 277.1038980502635
+ }, {
+ "x" : 86.33438915363513,
+ "y" : 286.5650198897347
+ }, {
+ "x" : 90.0204044674756,
+ "y" : 286.5221300618723
+ }, {
+ "x" : 95.48637307947502,
+ "y" : 286.67264015600085
+ }, {
+ "x" : 98.63925731810741,
+ "y" : 286.7675871886313
+ }, {
+ "x" : 103.7710157642141,
+ "y" : 281.14346692245454
+ }, {
+ "x" : 106.11075097392313,
+ "y" : 283.725591218099
+ }, {
+ "x" : 109.08631470322143,
+ "y" : 283.78119926620275
+ }, {
+ "x" : 112.14403926942032,
+ "y" : 283.82844699081033
+ } ]
+ },
+ "id" : 44
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 323.51135834795423,
+ "y" : 22.634070438332856
+ }, {
+ "x" : 333.5708647025749,
+ "y" : 18.132958628237247
+ }, {
+ "x" : 338.00738965556957,
+ "y" : 16.1461473274976
+ }, {
+ "x" : 343.7837334033102,
+ "y" : 28.96902438811958
+ }, {
+ "x" : 349.1230591228232,
+ "y" : 40.84258183836937
+ }, {
+ "x" : 354.6422057421878,
+ "y" : 53.1227489458397
+ }, {
+ "x" : 357.27375980326906,
+ "y" : 58.97480278369039
+ }, {
+ "x" : 371.24065156735014,
+ "y" : 52.725046046078205
+ }, {
+ "x" : 357.45935166301206,
+ "y" : 22.086348742246628
+ }, {
+ "x" : 363.75791534862947,
+ "y" : 19.405695643275976
+ }, {
+ "x" : 371.73631676554214,
+ "y" : 39.77963962685317
+ }, {
+ "x" : 375.88911573332734,
+ "y" : 38.039203671738505
+ }, {
+ "x" : 381.36129739054013,
+ "y" : 50.60710058640689
+ }, {
+ "x" : 383.9171756240539,
+ "y" : 49.42481490597129
+ }, {
+ "x" : 373.3489721197402,
+ "y" : 15.111396189779043
+ }, {
+ "x" : 383.8831806560047,
+ "y" : 11.10479134041816
+ }, {
+ "x" : 397.99125810340047,
+ "y" : 58.33271599095315
+ }, {
+ "x" : 377.6597020198824,
+ "y" : 67.01603225246072
+ }, {
+ "x" : 348.98994402075186,
+ "y" : 79.26822689548135
+ }, {
+ "x" : 340.14661694597453,
+ "y" : 59.59951455146074
+ }, {
+ "x" : 334.620012183208,
+ "y" : 47.31911155115813
+ }, {
+ "x" : 329.2802902236581,
+ "y" : 35.4566818382591
+ } ]
+ },
+ "id" : 45
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 84.3900410492206,
+ "y" : 97.6428193449974
+ }, {
+ "x" : 89.54631336417515,
+ "y" : 96.82603846583515
+ }, {
+ "x" : 92.29305551399011,
+ "y" : 96.38437986932695
+ }, {
+ "x" : 98.01741305110045,
+ "y" : 95.49770720303059
+ }, {
+ "x" : 101.00041866768152,
+ "y" : 97.99020191747695
+ }, {
+ "x" : 101.30864119983744,
+ "y" : 119.362951467745
+ }, {
+ "x" : 93.69405543024186,
+ "y" : 121.12063428387046
+ }, {
+ "x" : 94.59733824955765,
+ "y" : 125.69052723515779
+ }, {
+ "x" : 90.43406584206969,
+ "y" : 126.64084305521101
+ }, {
+ "x" : 88.79509635374416,
+ "y" : 119.8209546431899
+ }, {
+ "x" : 87.99021416925825,
+ "y" : 113.87471962347627
+ }, {
+ "x" : 94.37327036412898,
+ "y" : 113.3217376191169
+ }, {
+ "x" : 94.09231927641667,
+ "y" : 106.84794134180993
+ }, {
+ "x" : 86.85003087494988,
+ "y" : 107.71693320665509
+ }, {
+ "x" : 85.46094309235923,
+ "y" : 104.53260599542409
+ }, {
+ "x" : 72.63982148480136,
+ "y" : 107.4948290809989
+ }, {
+ "x" : 74.39001511374954,
+ "y" : 116.09865050856024
+ }, {
+ "x" : 78.43914391472936,
+ "y" : 115.22236682381481
+ }, {
+ "x" : 81.28485805541277,
+ "y" : 128.213401642628
+ }, {
+ "x" : 77.93283478950616,
+ "y" : 128.94623860251158
+ }, {
+ "x" : 78.68725482199807,
+ "y" : 132.40962341800332
+ }, {
+ "x" : 83.12675082287751,
+ "y" : 131.43521263357252
+ }, {
+ "x" : 87.98487236828078,
+ "y" : 130.40813031606376
+ }, {
+ "x" : 90.89215420605615,
+ "y" : 144.0020601162687
+ }, {
+ "x" : 74.98312039580196,
+ "y" : 147.37220130022615
+ }, {
+ "x" : 60.93859130179044,
+ "y" : 150.41568051557988
+ }, {
+ "x" : 59.57944166637026,
+ "y" : 144.12814679648727
+ }, {
+ "x" : 56.611149145057425,
+ "y" : 130.35416554100811
+ }, {
+ "x" : 70.69921419699676,
+ "y" : 127.34551612939686
+ }, {
+ "x" : 68.6106035412522,
+ "y" : 117.29502813797444
+ }, {
+ "x" : 67.03129296435509,
+ "y" : 109.36453094240278
+ }, {
+ "x" : 48.20390397706069,
+ "y" : 114.0718738809228
+ }, {
+ "x" : 48.0605903416872,
+ "y" : 113.02118787448853
+ }, {
+ "x" : 34.208569612237625,
+ "y" : 116.09346370678395
+ }, {
+ "x" : 37.502427256666124,
+ "y" : 130.81298195570707
+ }, {
+ "x" : 45.185392108163796,
+ "y" : 129.01302107423544
+ }, {
+ "x" : 46.39522860827856,
+ "y" : 134.65020664222538
+ }, {
+ "x" : 47.962301794206724,
+ "y" : 134.31349368579686
+ }, {
+ "x" : 51.58593935263343,
+ "y" : 152.72689860872924
+ }, {
+ "x" : 36.727209907840006,
+ "y" : 156.07683797739446
+ }, {
+ "x" : 27.888030368834734,
+ "y" : 158.17171153705567
+ }, {
+ "x" : 18.03574552037753,
+ "y" : 160.51068524550647
+ }, {
+ "x" : 13.461438397294842,
+ "y" : 137.603720869869
+ }, {
+ "x" : 27.89077561465092,
+ "y" : 134.4061724115163
+ }, {
+ "x" : 29.342884962214157,
+ "y" : 140.8080847961828
+ }, {
+ "x" : 25.008918641950004,
+ "y" : 142.18662948347628
+ }, {
+ "x" : 25.927081799018197,
+ "y" : 146.97953373380005
+ }, {
+ "x" : 34.36256581125781,
+ "y" : 144.71531232632697
+ }, {
+ "x" : 31.84794637572486,
+ "y" : 132.05810183659196
+ }, {
+ "x" : 28.806680678506382,
+ "y" : 118.45970532204956
+ }, {
+ "x" : 28.55370167735964,
+ "y" : 117.34970085229725
+ }, {
+ "x" : 26.302181491046213,
+ "y" : 107.27150216139853
+ }, {
+ "x" : 45.80910157202743,
+ "y" : 102.94298068713397
+ }, {
+ "x" : 52.662331113009714,
+ "y" : 101.02611178066581
+ }, {
+ "x" : 64.76184521988034,
+ "y" : 98.05069826822728
+ }, {
+ "x" : 83.71383533114567,
+ "y" : 93.40322850365192
+ } ]
+ },
+ "id" : 46
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 244.98278176831082,
+ "y" : 289.34533510077745
+ }, {
+ "x" : 242.98562469799072,
+ "y" : 282.780356916599
+ }, {
+ "x" : 240.4165817425819,
+ "y" : 273.30329787544906
+ }, {
+ "x" : 237.5455572027713,
+ "y" : 260.856488769874
+ }, {
+ "x" : 234.2074034040561,
+ "y" : 249.23955101054162
+ }, {
+ "x" : 258.0929607137805,
+ "y" : 241.97721288353205
+ }, {
+ "x" : 261.58688695635647,
+ "y" : 253.38801321201026
+ }, {
+ "x" : 250.35851064044982,
+ "y" : 256.8040008675307
+ }, {
+ "x" : 254.30195183109026,
+ "y" : 269.67634577304125
+ }, {
+ "x" : 255.22066051897127,
+ "y" : 272.67799106333405
+ }, {
+ "x" : 261.86222436185926,
+ "y" : 270.85438921675086
+ }, {
+ "x" : 279.38697073911317,
+ "y" : 264.81325430981815
+ }, {
+ "x" : 283.5390568005387,
+ "y" : 263.7514403583482
+ }, {
+ "x" : 285.28062143118586,
+ "y" : 254.47515289951116
+ }, {
+ "x" : 289.1083244518377,
+ "y" : 241.16352736856788
+ }, {
+ "x" : 293.9024568083696,
+ "y" : 223.68984820321202
+ }, {
+ "x" : 295.72096676472574,
+ "y" : 214.56079560797662
+ }, {
+ "x" : 290.6969720022753,
+ "y" : 214.3248460199684
+ }, {
+ "x" : 283.22008746722713,
+ "y" : 213.98404665570706
+ }, {
+ "x" : 279.630350431893,
+ "y" : 213.81865821126848
+ }, {
+ "x" : 275.7658826742554,
+ "y" : 213.6328945532441
+ }, {
+ "x" : 270.74151310813613,
+ "y" : 213.4080762024969
+ }, {
+ "x" : 264.03789559728466,
+ "y" : 213.0933401659131
+ }, {
+ "x" : 256.4111332737375,
+ "y" : 213.0034333327785
+ }, {
+ "x" : 256.48022988950834,
+ "y" : 209.84590194746852
+ }, {
+ "x" : 245.48486329219304,
+ "y" : 209.87624040432274
+ }, {
+ "x" : 245.4807596054161,
+ "y" : 208.2294159317389
+ }, {
+ "x" : 238.3497662334703,
+ "y" : 208.89055833313614
+ }, {
+ "x" : 238.9802951212041,
+ "y" : 212.271916417405
+ }, {
+ "x" : 242.2604344873689,
+ "y" : 224.06492232345045
+ }, {
+ "x" : 250.90078073134646,
+ "y" : 221.68552951328456
+ }, {
+ "x" : 253.98846707539633,
+ "y" : 232.78223620448261
+ }, {
+ "x" : 232.04151660529897,
+ "y" : 238.84146542660892
+ }, {
+ "x" : 228.95379286049865,
+ "y" : 227.74477154947817
+ }, {
+ "x" : 225.6740035400726,
+ "y" : 215.94066023547202
+ }, {
+ "x" : 221.20493738504592,
+ "y" : 200.54724023025483
+ }, {
+ "x" : 245.454217336257,
+ "y" : 198.62656102329493
+ }, {
+ "x" : 264.80746851093136,
+ "y" : 199.52296201791614
+ }, {
+ "x" : 280.2954425984062,
+ "y" : 200.47841310407966
+ }, {
+ "x" : 312.22271020920016,
+ "y" : 205.7482358692214
+ }, {
+ "x" : 308.3878437280655,
+ "y" : 220.81755857355893
+ }, {
+ "x" : 307.29833707376383,
+ "y" : 225.09785598982126
+ }, {
+ "x" : 302.80846244783606,
+ "y" : 241.71392463892698
+ }, {
+ "x" : 298.4178367025452,
+ "y" : 258.4779797429219
+ }, {
+ "x" : 293.9075710645411,
+ "y" : 275.0377352302894
+ }, {
+ "x" : 283.4046925669536,
+ "y" : 277.68812512792647
+ }, {
+ "x" : 265.94549771468155,
+ "y" : 283.33090760651976
+ } ]
+ },
+ "id" : 47
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 351.6492524778005,
+ "y" : 109.48774266242981
+ }, {
+ "x" : 359.80148885119706,
+ "y" : 106.35772519093007
+ }, {
+ "x" : 373.60014810448047,
+ "y" : 100.45835386309773
+ }, {
+ "x" : 382.4316796940984,
+ "y" : 120.47164721228182
+ }, {
+ "x" : 390.15902114030905,
+ "y" : 137.24338813405484
+ }, {
+ "x" : 396.40748823806643,
+ "y" : 150.62743048463017
+ }, {
+ "x" : 384.7470881030895,
+ "y" : 156.03134380001575
+ }, {
+ "x" : 378.49822720640805,
+ "y" : 142.65842832438648
+ }, {
+ "x" : 370.43295222404413,
+ "y" : 125.75293081719428
+ }, {
+ "x" : 366.08145086094737,
+ "y" : 115.93760362360626
+ }, {
+ "x" : 364.38115526142064,
+ "y" : 116.69254126399755
+ }, {
+ "x" : 360.135408667149,
+ "y" : 121.85674227494746
+ }, {
+ "x" : 357.65717239677906,
+ "y" : 131.3418496241793
+ }, {
+ "x" : 354.31565624894574,
+ "y" : 144.13575767539442
+ }, {
+ "x" : 353.70463288901374,
+ "y" : 146.58520631399006
+ }, {
+ "x" : 367.12717580853496,
+ "y" : 150.7424310753122
+ }, {
+ "x" : 368.45434022159316,
+ "y" : 163.4933449467644
+ }, {
+ "x" : 359.47363025695086,
+ "y" : 162.93489299807698
+ }, {
+ "x" : 359.98465934442356,
+ "y" : 155.7200321815908
+ }, {
+ "x" : 351.9735184421297,
+ "y" : 153.5586938317865
+ }, {
+ "x" : 350.760408279486,
+ "y" : 158.41338745690882
+ }, {
+ "x" : 346.40559102990665,
+ "y" : 173.88797439076006
+ }, {
+ "x" : 344.8538431134075,
+ "y" : 180.17767675500363
+ }, {
+ "x" : 351.62934581167065,
+ "y" : 181.674311529845
+ }, {
+ "x" : 367.15069859765936,
+ "y" : 184.73398525919765
+ }, {
+ "x" : 366.93109179020394,
+ "y" : 196.7763401940465
+ }, {
+ "x" : 349.1672116734553,
+ "y" : 195.54371430631727
+ }, {
+ "x" : 330.6280033283401,
+ "y" : 191.91513324249536
+ }, {
+ "x" : 335.9227305104723,
+ "y" : 171.07595657277852
+ }, {
+ "x" : 338.03370864887256,
+ "y" : 162.76898230519146
+ }, {
+ "x" : 339.7766800012905,
+ "y" : 155.88490118738264
+ }, {
+ "x" : 343.41518760682084,
+ "y" : 141.5655657304451
+ }, {
+ "x" : 346.659271313576,
+ "y" : 128.79062327276915
+ }, {
+ "x" : 349.07094563147984,
+ "y" : 119.29214380308986
+ } ]
+ },
+ "id" : 48
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 140.11391512711998,
+ "y" : 154.51461593899876
+ }, {
+ "x" : 140.39852410228923,
+ "y" : 162.8688769256696
+ }, {
+ "x" : 140.6901483417023,
+ "y" : 171.45702533330768
+ }, {
+ "x" : 140.91670172207523,
+ "y" : 178.21827999968082
+ }, {
+ "x" : 141.1406801668927,
+ "y" : 184.8348069479689
+ }, {
+ "x" : 141.3842570190318,
+ "y" : 191.9749270826578
+ }, {
+ "x" : 141.61487597657833,
+ "y" : 198.8364551672712
+ }, {
+ "x" : 141.88651807024144,
+ "y" : 206.91212470456958
+ }, {
+ "x" : 142.143750410527,
+ "y" : 214.53113341052085
+ }, {
+ "x" : 119.35694391012657,
+ "y" : 215.46670982893556
+ }, {
+ "x" : 119.28079154074658,
+ "y" : 217.06632674019784
+ }, {
+ "x" : 111.43754424829967,
+ "y" : 217.65915585123003
+ }, {
+ "x" : 110.81433054129593,
+ "y" : 202.99605198018253
+ }, {
+ "x" : 127.28885091957636,
+ "y" : 200.73541721887887
+ }, {
+ "x" : 126.89966232329607,
+ "y" : 185.31247322726995
+ }, {
+ "x" : 126.76029833604116,
+ "y" : 181.268957298249
+ }, {
+ "x" : 123.50396556640044,
+ "y" : 181.3707899749279
+ }, {
+ "x" : 123.29512397386134,
+ "y" : 175.18869780935347
+ }, {
+ "x" : 126.60388136445545,
+ "y" : 175.07750250026584
+ }, {
+ "x" : 126.49370936467312,
+ "y" : 171.93619468063116
+ }, {
+ "x" : 120.4508833992295,
+ "y" : 170.56461828015745
+ }, {
+ "x" : 115.95539194019511,
+ "y" : 180.50486658141017
+ }, {
+ "x" : 110.54256747663021,
+ "y" : 187.62156741134822
+ }, {
+ "x" : 112.59780204482377,
+ "y" : 190.91732565127313
+ }, {
+ "x" : 101.1109120210167,
+ "y" : 204.6723144967109
+ }, {
+ "x" : 98.29525343934074,
+ "y" : 208.04897509049624
+ }, {
+ "x" : 100.23875418584794,
+ "y" : 210.46199691761285
+ }, {
+ "x" : 94.14562777383253,
+ "y" : 217.66708576586097
+ }, {
+ "x" : 74.19984419329558,
+ "y" : 244.56692515779287
+ }, {
+ "x" : 69.37509349861648,
+ "y" : 240.62170713115484
+ }, {
+ "x" : 61.61405924172141,
+ "y" : 251.1642245054245
+ }, {
+ "x" : 64.22344542038627,
+ "y" : 253.25471910182387
+ }, {
+ "x" : 62.83202414633706,
+ "y" : 254.78784167021513
+ }, {
+ "x" : 64.12699674488977,
+ "y" : 256.1220443826169
+ }, {
+ "x" : 57.79329167143442,
+ "y" : 262.0729357963428
+ }, {
+ "x" : 54.5241261406336,
+ "y" : 259.45957124140114
+ }, {
+ "x" : 43.61325538821984,
+ "y" : 273.80147332977504
+ }, {
+ "x" : 42.11333975731395,
+ "y" : 273.0278203552589
+ }, {
+ "x" : 39.084288958925754,
+ "y" : 276.7756212577224
+ }, {
+ "x" : 31.486210582079366,
+ "y" : 270.745564090088
+ }, {
+ "x" : 44.90581537678372,
+ "y" : 251.7482415549457
+ }, {
+ "x" : 51.4083189885132,
+ "y" : 243.6556499330327
+ }, {
+ "x" : 60.29762900050264,
+ "y" : 233.20670145191252
+ }, {
+ "x" : 81.3358219988877,
+ "y" : 207.24478936940432
+ }, {
+ "x" : 102.36518296902068,
+ "y" : 181.77220180165023
+ }, {
+ "x" : 108.1620205193758,
+ "y" : 174.74629702605307
+ }, {
+ "x" : 110.51805883378256,
+ "y" : 168.2165762130171
+ }, {
+ "x" : 113.04620617919136,
+ "y" : 159.890195437707
+ } ]
+ },
+ "id" : 49
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 274.1487800597679,
+ "y" : 161.29613697249442
+ }, {
+ "x" : 288.7212389141787,
+ "y" : 162.03163015376776
+ }, {
+ "x" : 288.4061139419209,
+ "y" : 171.3893316136673
+ }, {
+ "x" : 296.9302117067855,
+ "y" : 172.24383061472327
+ }, {
+ "x" : 296.5036009744508,
+ "y" : 174.74399934709072
+ }, {
+ "x" : 312.1764908421319,
+ "y" : 178.609715661034
+ }, {
+ "x" : 313.0174943289021,
+ "y" : 175.0776353413239
+ }, {
+ "x" : 296.6822029957548,
+ "y" : 170.7668115803972
+ }, {
+ "x" : 299.64177892915905,
+ "y" : 159.58444981835783
+ }, {
+ "x" : 300.57050325733144,
+ "y" : 156.09982735663652
+ }, {
+ "x" : 314.73668965965044,
+ "y" : 159.83692194521427
+ }, {
+ "x" : 318.7191829237854,
+ "y" : 144.80595272500068
+ }, {
+ "x" : 331.86717111011967,
+ "y" : 148.27514360379428
+ }, {
+ "x" : 327.8846443553921,
+ "y" : 163.3061045994982
+ }, {
+ "x" : 323.9962762054056,
+ "y" : 177.97307213861495
+ }, {
+ "x" : 320.30626190430485,
+ "y" : 191.83450482599437
+ }, {
+ "x" : 293.8847134927055,
+ "y" : 185.31476464588195
+ }, {
+ "x" : 265.6140091145644,
+ "y" : 183.5283040413633
+ }, {
+ "x" : 230.98731835070066,
+ "y" : 182.8186484090984
+ }, {
+ "x" : 214.68945491674822,
+ "y" : 182.48139366973191
+ }, {
+ "x" : 210.75398529251106,
+ "y" : 166.27147937752306
+ }, {
+ "x" : 207.4410492265597,
+ "y" : 152.57480547763407
+ }, {
+ "x" : 203.25108998350333,
+ "y" : 135.29933942947537
+ }, {
+ "x" : 222.1106468422804,
+ "y" : 131.85085191950202
+ }, {
+ "x" : 240.68661098973826,
+ "y" : 128.20373114198446
+ }, {
+ "x" : 257.51860655937344,
+ "y" : 124.62033905088902
+ }, {
+ "x" : 260.61343050422147,
+ "y" : 139.04403663240373
+ }, {
+ "x" : 255.60507230018266,
+ "y" : 140.11042067687958
+ }, {
+ "x" : 256.4407020297367,
+ "y" : 144.0327464491129
+ }, {
+ "x" : 250.78023460996337,
+ "y" : 145.23294579330832
+ }, {
+ "x" : 249.88666337239556,
+ "y" : 141.04164007212967
+ }, {
+ "x" : 243.72353575145826,
+ "y" : 142.35843779798597
+ }, {
+ "x" : 244.38619297672994,
+ "y" : 146.77561940532178
+ }, {
+ "x" : 237.653918380267,
+ "y" : 147.97312516439706
+ }, {
+ "x" : 236.77684880129527,
+ "y" : 143.07029716018587
+ }, {
+ "x" : 224.51762148342095,
+ "y" : 145.26113289035857
+ }, {
+ "x" : 217.4032017714344,
+ "y" : 146.31228270754218
+ }, {
+ "x" : 218.32293657888658,
+ "y" : 149.9481500443071
+ }, {
+ "x" : 221.74850147264078,
+ "y" : 163.61524439044297
+ }, {
+ "x" : 222.9828486482147,
+ "y" : 168.51897083315998
+ }, {
+ "x" : 230.89071379927918,
+ "y" : 168.66279800608754
+ }, {
+ "x" : 239.40864997415338,
+ "y" : 168.81604902353138
+ }, {
+ "x" : 239.60836590547115,
+ "y" : 161.55732688400894
+ }, {
+ "x" : 261.62079325993545,
+ "y" : 161.74214547220618
+ }, {
+ "x" : 261.7729827146977,
+ "y" : 169.60240923520178
+ }, {
+ "x" : 265.625603237655,
+ "y" : 169.69875261932611
+ }, {
+ "x" : 273.7189781391062,
+ "y" : 169.86001172009856
+ } ]
+ },
+ "id" : 50
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 325.00068592617754,
+ "y" : 258.8726211534813
+ }, {
+ "x" : 329.7450866580475,
+ "y" : 257.46362387761474
+ }, {
+ "x" : 339.23427010467276,
+ "y" : 254.63452729489654
+ }, {
+ "x" : 351.82084399845917,
+ "y" : 250.89729740377516
+ }, {
+ "x" : 367.96436110977083,
+ "y" : 246.08941593021154
+ }, {
+ "x" : 378.21946808707435,
+ "y" : 243.06366033665836
+ }, {
+ "x" : 396.92803360684775,
+ "y" : 237.46330392826349
+ }, {
+ "x" : 400.9509751783917,
+ "y" : 250.83912970870733
+ }, {
+ "x" : 382.25619443377946,
+ "y" : 256.4733139947057
+ }, {
+ "x" : 371.99886162544135,
+ "y" : 259.5657437760383
+ }, {
+ "x" : 355.8687501359964,
+ "y" : 264.4185686195269
+ }, {
+ "x" : 343.30263563781045,
+ "y" : 268.21210863348097
+ }, {
+ "x" : 333.8201580980094,
+ "y" : 271.0636757379398
+ }, {
+ "x" : 323.78818380460143,
+ "y" : 274.0970222344622
+ }, {
+ "x" : 309.9967050399864,
+ "y" : 278.24990486819297
+ }, {
+ "x" : 307.32107540150173,
+ "y" : 275.25583338271827
+ }, {
+ "x" : 313.0602161893621,
+ "y" : 253.15208896249533
+ }, {
+ "x" : 318.01166344899684,
+ "y" : 234.1037941556424
+ }, {
+ "x" : 320.44795189681463,
+ "y" : 222.325250367634
+ }, {
+ "x" : 324.2578210707288,
+ "y" : 207.7780264718458
+ }, {
+ "x" : 349.486374200671,
+ "y" : 212.14373572543263
+ }, {
+ "x" : 367.8224501009099,
+ "y" : 212.9617182519287
+ }, {
+ "x" : 367.73266217811033,
+ "y" : 226.2323375167325
+ }, {
+ "x" : 362.1137506805826,
+ "y" : 226.4213327402249
+ }, {
+ "x" : 361.5953344266163,
+ "y" : 233.41341980267316
+ }, {
+ "x" : 352.2135007402394,
+ "y" : 233.27538374904543
+ }, {
+ "x" : 352.31681876652874,
+ "y" : 227.11490965541452
+ }, {
+ "x" : 347.14391190058086,
+ "y" : 226.21744331903756
+ }, {
+ "x" : 335.87958413059823,
+ "y" : 222.29984661750495
+ }, {
+ "x" : 334.7882887076121,
+ "y" : 226.19066035095602
+ }, {
+ "x" : 331.19426858914085,
+ "y" : 238.0859708059579
+ }, {
+ "x" : 327.8481406002538,
+ "y" : 250.3567995755002
+ }, {
+ "x" : 322.4575163896661,
+ "y" : 252.16683061793447
+ }, {
+ "x" : 321.4861518013058,
+ "y" : 255.14933172799647
+ }, {
+ "x" : 319.10993018443696,
+ "y" : 266.0286705009639
+ }, {
+ "x" : 321.16556891356595,
+ "y" : 265.33019605930895
+ }, {
+ "x" : 326.466532209306,
+ "y" : 263.75079613085836
+ } ]
+ },
+ "id" : 51
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 141.6306351003277,
+ "y" : 116.83901793050784
+ }, {
+ "x" : 141.87407785240606,
+ "y" : 128.5904625324498
+ }, {
+ "x" : 146.64992685380682,
+ "y" : 128.49019010291423
+ }, {
+ "x" : 146.39773279475918,
+ "y" : 116.77177871782462
+ }, {
+ "x" : 145.89784854486646,
+ "y" : 116.78253681752702
+ }, {
+ "x" : 146.13927885240602,
+ "y" : 128.0008013367562
+ }, {
+ "x" : 142.36361193208882,
+ "y" : 128.08007421475259
+ }, {
+ "x" : 142.13052784683714,
+ "y" : 116.82866215978545
+ }, {
+ "x" : 141.6306351003277,
+ "y" : 116.83901793050784
+ }, {
+ "x" : 141.6306351003277,
+ "y" : 116.83901793050784
+ }, {
+ "x" : 141.87407785240606,
+ "y" : 128.5904625324498
+ }, {
+ "x" : 146.64992685380682,
+ "y" : 128.49019010291423
+ }, {
+ "x" : 146.39773279475918,
+ "y" : 116.77177871782462
+ }, {
+ "x" : 145.89784854486646,
+ "y" : 116.78253681752702
+ }, {
+ "x" : 146.13927885240602,
+ "y" : 128.0008013367562
+ }, {
+ "x" : 142.36361193208882,
+ "y" : 128.08007421475259
+ }, {
+ "x" : 142.13052784683714,
+ "y" : 116.82866215978545
+ }, {
+ "x" : 141.6306351003277,
+ "y" : 116.83901793050784
+ } ]
+ },
+ "id" : 258139208
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 183.36223962920806,
+ "y" : 99.17525606485874
+ }, {
+ "x" : 185.74794754937636,
+ "y" : 108.28736282386804
+ }, {
+ "x" : 192.16039841298857,
+ "y" : 106.5412362408522
+ }, {
+ "x" : 189.64268185690656,
+ "y" : 97.31639342306377
+ }, {
+ "x" : 189.16032451480947,
+ "y" : 97.4480421774256
+ }, {
+ "x" : 191.54631566579525,
+ "y" : 106.19024680697599
+ }, {
+ "x" : 186.10375833658165,
+ "y" : 107.67226892835474
+ }, {
+ "x" : 183.84593609842383,
+ "y" : 99.04861592245429
+ }, {
+ "x" : 183.36223962920806,
+ "y" : 99.17525606485874
+ }, {
+ "x" : 183.36223962920806,
+ "y" : 99.17525606485874
+ }, {
+ "x" : 185.74794754937636,
+ "y" : 108.28736282386804
+ }, {
+ "x" : 192.16039841298857,
+ "y" : 106.5412362408522
+ }, {
+ "x" : 189.64268185690656,
+ "y" : 97.31639342306377
+ }, {
+ "x" : 189.16032451480947,
+ "y" : 97.4480421774256
+ }, {
+ "x" : 191.54631566579525,
+ "y" : 106.19024680697599
+ }, {
+ "x" : 186.10375833658165,
+ "y" : 107.67226892835474
+ }, {
+ "x" : 183.84593609842383,
+ "y" : 99.04861592245429
+ }, {
+ "x" : 183.36223962920806,
+ "y" : 99.17525606485874
+ } ]
+ },
+ "id" : 258139205
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 143.92115343943564,
+ "y" : 168.69565355275918
+ }, {
+ "x" : 143.8295708812843,
+ "y" : 158.46319241869656
+ }, {
+ "x" : 147.9524496438901,
+ "y" : 158.453088570111
+ }, {
+ "x" : 148.04042161765545,
+ "y" : 168.57734735060853
+ }, {
+ "x" : 148.54040274306163,
+ "y" : 168.57300290155786
+ }, {
+ "x" : 148.44811333818495,
+ "y" : 157.95187235651085
+ }, {
+ "x" : 143.3250868078719,
+ "y" : 157.96442724530158
+ }, {
+ "x" : 143.42117346474575,
+ "y" : 168.70012847277175
+ }, {
+ "x" : 143.92115343943564,
+ "y" : 168.69565355275918
+ }, {
+ "x" : 143.92115343943564,
+ "y" : 168.69565355275918
+ }, {
+ "x" : 143.8295708812843,
+ "y" : 158.46319241869656
+ }, {
+ "x" : 147.9524496438901,
+ "y" : 158.453088570111
+ }, {
+ "x" : 148.04042161765545,
+ "y" : 168.57734735060853
+ }, {
+ "x" : 148.54040274306163,
+ "y" : 168.57300290155786
+ }, {
+ "x" : 148.44811333818495,
+ "y" : 157.95187235651085
+ }, {
+ "x" : 143.3250868078719,
+ "y" : 157.96442724530158
+ }, {
+ "x" : 143.42117346474575,
+ "y" : 168.70012847277175
+ }, {
+ "x" : 143.92115343943564,
+ "y" : 168.69565355275918
+ } ]
+ },
+ "id" : 258139209
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 143.16444930480793,
+ "y" : 313.8227388774976
+ }, {
+ "x" : 6.739023174857721,
+ "y" : 317.8117614351213
+ }, {
+ "x" : 0.4697507165838033,
+ "y" : 340.6656234366819
+ }, {
+ "x" : 41.346187320770696,
+ "y" : 373.5164463762194
+ }, {
+ "x" : 123.55259956466034,
+ "y" : 392.9602503068745
+ }, {
+ "x" : 138.0014330423437,
+ "y" : 393.5910988114774
+ }, {
+ "x" : 146.9120532188099,
+ "y" : 393.3457755940035
+ }, {
+ "x" : 146.17653927661013,
+ "y" : 355.70316960662603
+ } ]
+ },
+ "id" : -1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 188.7041750979025,
+ "y" : 158.69070027838583
+ }, {
+ "x" : 186.33297799111978,
+ "y" : 148.07219112430533
+ }, {
+ "x" : 189.2497066635849,
+ "y" : 147.42692357318728
+ }, {
+ "x" : 191.67341151847072,
+ "y" : 158.25968440859606
+ }, {
+ "x" : 192.1613478736064,
+ "y" : 158.15051429667483
+ }, {
+ "x" : 189.62873353653288,
+ "y" : 146.83098199201368
+ }, {
+ "x" : 185.73581088284294,
+ "y" : 147.6922128261164
+ }, {
+ "x" : 188.21619402101524,
+ "y" : 158.79967031371658
+ }, {
+ "x" : 188.7041750979025,
+ "y" : 158.69070027838583
+ }, {
+ "x" : 188.7041750979025,
+ "y" : 158.69070027838583
+ }, {
+ "x" : 186.33297799111978,
+ "y" : 148.07219112430533
+ }, {
+ "x" : 189.2497066635849,
+ "y" : 147.42692357318728
+ }, {
+ "x" : 191.67341151847072,
+ "y" : 158.25968440859606
+ }, {
+ "x" : 192.1613478736064,
+ "y" : 158.15051429667483
+ }, {
+ "x" : 189.62873353653288,
+ "y" : 146.83098199201368
+ }, {
+ "x" : 185.73581088284294,
+ "y" : 147.6922128261164
+ }, {
+ "x" : 188.21619402101524,
+ "y" : 158.79967031371658
+ }, {
+ "x" : 188.7041750979025,
+ "y" : 158.69070027838583
+ } ]
+ },
+ "id" : 258139207
+ } ],
+ "measurementAreas" : [ {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 174.26170542137697,
+ "y" : 209.04751699510962
+ }, {
+ "x" : 174.61771361227147,
+ "y" : 209.74932632502168
+ }, {
+ "x" : 175.113541209721,
+ "y" : 210.27782144676894
+ }, {
+ "x" : 182.6607723016059,
+ "y" : 213.83633342478424
+ }, {
+ "x" : 184.10732813342474,
+ "y" : 213.76263221725821
+ }, {
+ "x" : 185.31904005026445,
+ "y" : 213.14696692116559
+ }, {
+ "x" : 204.5742070877459,
+ "y" : 174.49715985544026
+ }, {
+ "x" : 204.74994148151018,
+ "y" : 173.2569348597899
+ }, {
+ "x" : 204.50031978392508,
+ "y" : 172.26942209340632
+ }, {
+ "x" : 187.9517537734937,
+ "y" : 141.78279261570424
+ }, {
+ "x" : 186.9525607401738,
+ "y" : 141.17059722729027
+ }, {
+ "x" : 185.81761501636356,
+ "y" : 140.83198922965676
+ }, {
+ "x" : 175.79074987163767,
+ "y" : 143.7100076181814
+ }, {
+ "x" : 174.8172851598356,
+ "y" : 144.5450926925987
+ }, {
+ "x" : 174.2315358541673,
+ "y" : 145.5823727948591
+ } ]
+ },
+ "id" : 169
+ } ],
+ "stairs" : [ ],
+ "targets" : [ {
+ "id" : 53,
+ "absorbing" : true,
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 21.4,
+ "y" : 178.2
+ }, {
+ "x" : 25.6,
+ "y" : 177.4
+ }, {
+ "x" : 21.2,
+ "y" : 160.6
+ }, {
+ "x" : 17.0,
+ "y" : 161.6
+ }, {
+ "x" : 21.2,
+ "y" : 178.0
+ } ]
+ },
+ "waitingTime" : 0.0,
+ "waitingTimeYellowPhase" : 0.0,
+ "parallelWaiters" : 0,
+ "individualWaiting" : true,
+ "deletionDistance" : 0.1,
+ "startingWithRedLight" : false,
+ "nextSpeed" : -1.0
+ }, {
+ "id" : -1,
+ "absorbing" : true,
+ "shape" : {
+ "x" : 186.3,
+ "y" : 304.0,
+ "width" : 0.1,
+ "height" : 10.0,
+ "type" : "RECTANGLE"
+ },
+ "waitingTime" : 0.0,
+ "waitingTimeYellowPhase" : 0.0,
+ "parallelWaiters" : 0,
+ "individualWaiting" : true,
+ "deletionDistance" : 0.1,
+ "startingWithRedLight" : false,
+ "nextSpeed" : -1.0
+ } ],
+ "absorbingAreas" : [ ],
+ "sources" : [ ],
+ "dynamicElements" : [ ],
+ "attributesPedestrian" : {
+ "radius" : 0.195,
+ "densityDependentSpeed" : false,
+ "speedDistributionMean" : 1.34,
+ "speedDistributionStandardDeviation" : 0.26,
+ "minimumSpeed" : 0.5,
+ "maximumSpeed" : 2.2,
+ "acceleration" : 2.0,
+ "footStepsToStore" : 4,
+ "searchRadius" : 1.0,
+ "angleCalculationType" : "USE_CENTER",
+ "targetOrientationAngleThreshold" : 45.0
+ },
+ "teleporter" : null,
+ "attributesCar" : {
+ "id" : -1,
+ "radius" : 0.195,
+ "densityDependentSpeed" : false,
+ "speedDistributionMean" : 1.34,
+ "speedDistributionStandardDeviation" : 0.26,
+ "minimumSpeed" : 0.5,
+ "maximumSpeed" : 2.2,
+ "acceleration" : 2.0,
+ "footStepsToStore" : 4,
+ "searchRadius" : 1.0,
+ "angleCalculationType" : "USE_CENTER",
+ "targetOrientationAngleThreshold" : 45.0,
+ "length" : 4.5,
+ "width" : 1.7,
+ "direction" : {
+ "x" : 1.0,
+ "y" : 0.0
+ }
+ }
+ },
+ "eventInfos" : [ ]
+ }
+}
\ No newline at end of file
diff --git a/VadereManager/testResources/testProject001/scenarios/mf_small_simple.scenario b/VadereManager/testResources/testProject001/scenarios/mf_small_simple.scenario
new file mode 100644
index 0000000000000000000000000000000000000000..80e97fd0830a957fadccda789d2e141515b8311a
--- /dev/null
+++ b/VadereManager/testResources/testProject001/scenarios/mf_small_simple.scenario
@@ -0,0 +1,1995 @@
+{
+ "name" : "mf_small_simple",
+ "description" : "",
+ "release" : "1.0",
+ "processWriters" : {
+ "files" : [ {
+ "type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
+ "filename" : "postvis.trajectories",
+ "processors" : [ 1, 2 ]
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOverlapOutputFile",
+ "filename" : "overlaps.csv",
+ "processors" : [ 3 ]
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.outputfile.NoDataKeyOutputFile",
+ "filename" : "overlapCount.txt",
+ "processors" : [ 4 ]
+ } ],
+ "processors" : [ {
+ "type" : "org.vadere.simulator.projects.dataprocessing.processor.PedestrianPositionProcessor",
+ "id" : 1
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.processor.PedestrianTargetIdProcessor",
+ "id" : 2
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.processor.PedestrianOverlapProcessor",
+ "id" : 3
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.processor.NumberOverlapsProcessor",
+ "id" : 4,
+ "attributesType" : "org.vadere.state.attributes.processor.AttributesNumberOverlapsProcessor",
+ "attributes" : {
+ "pedestrianOverlapProcessorId" : 3
+ }
+ } ],
+ "isTimestamped" : true,
+ "isWriteMetaData" : false
+ },
+ "scenario" : {
+ "mainModel" : "org.vadere.simulator.models.osm.OptimalStepsModel",
+ "attributesModel" : {
+ "org.vadere.state.attributes.models.AttributesOSM" : {
+ "stepCircleResolution" : 4,
+ "numberOfCircles" : 1,
+ "optimizationType" : "DISCRETE",
+ "varyStepDirection" : true,
+ "movementType" : "ARBITRARY",
+ "stepLengthIntercept" : 0.4625,
+ "stepLengthSlopeSpeed" : 0.2345,
+ "stepLengthSD" : 0.036,
+ "movementThreshold" : 0.0,
+ "minStepLength" : 0.1,
+ "minimumStepLength" : true,
+ "maxStepDuration" : 1.7976931348623157E308,
+ "dynamicStepLength" : true,
+ "updateType" : "EVENT_DRIVEN",
+ "seeSmallWalls" : false,
+ "targetPotentialModel" : "org.vadere.simulator.models.potential.fields.PotentialFieldTargetGrid",
+ "pedestrianPotentialModel" : "org.vadere.simulator.models.potential.PotentialFieldPedestrianCompactSoftshell",
+ "obstaclePotentialModel" : "org.vadere.simulator.models.potential.PotentialFieldObstacleCompactSoftshell",
+ "submodels" : [ ]
+ },
+ "org.vadere.state.attributes.models.AttributesPotentialCompactSoftshell" : {
+ "pedPotentialIntimateSpaceWidth" : 0.45,
+ "pedPotentialPersonalSpaceWidth" : 1.2,
+ "pedPotentialHeight" : 50.0,
+ "obstPotentialWidth" : 0.8,
+ "obstPotentialHeight" : 6.0,
+ "intimateSpaceFactor" : 1.2,
+ "personalSpacePower" : 1,
+ "intimateSpacePower" : 1
+ },
+ "org.vadere.state.attributes.models.AttributesFloorField" : {
+ "createMethod" : "HIGH_ACCURACY_FAST_MARCHING",
+ "potentialFieldResolution" : 0.3,
+ "obstacleGridPenalty" : 0.1,
+ "targetAttractionStrength" : 1.0,
+ "timeCostAttributes" : {
+ "standardDeviation" : 0.7,
+ "type" : "UNIT",
+ "obstacleDensityWeight" : 3.5,
+ "pedestrianSameTargetDensityWeight" : 3.5,
+ "pedestrianOtherTargetDensityWeight" : 3.5,
+ "pedestrianWeight" : 3.5,
+ "queueWidthLoading" : 1.0,
+ "pedestrianDynamicWeight" : 6.0,
+ "loadingType" : "CONSTANT",
+ "width" : 0.2,
+ "height" : 1.0
+ }
+ }
+ },
+ "attributesSimulation" : {
+ "finishTime" : 500.0,
+ "simTimeStepLength" : 0.4,
+ "realTimeSimTimeRatio" : 0.1,
+ "writeSimulationData" : true,
+ "visualizationEnabled" : true,
+ "printFPS" : false,
+ "digitsPerCoordinate" : 2,
+ "useFixedSeed" : true,
+ "fixedSeed" : -7492697142818052001,
+ "simulationSeed" : 0,
+ "useSalientBehavior" : false
+ },
+ "topography" : {
+ "attributes" : {
+ "bounds" : {
+ "x" : 0.0,
+ "y" : 0.0,
+ "width" : 416.0,
+ "height" : 394.0
+ },
+ "boundingBoxWidth" : 0.5,
+ "bounded" : true
+ },
+ "obstacles" : [ {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 132.49563939182553,
+ "y" : 9.706123710609972
+ }, {
+ "x" : 137.54908174742013,
+ "y" : 40.92949869018048
+ }, {
+ "x" : 91.29751981049776,
+ "y" : 46.538723167963326
+ }, {
+ "x" : 86.02559399825986,
+ "y" : 25.343919068574905
+ }, {
+ "x" : 97.37899205833673,
+ "y" : 23.088923882693052
+ }, {
+ "x" : 109.36867269373033,
+ "y" : 16.082200379110873
+ } ]
+ },
+ "id" : 1
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 147.48832788609434,
+ "y" : 266.0697437087074
+ }, {
+ "x" : 149.67207587813027,
+ "y" : 265.9874638039619
+ }, {
+ "x" : 149.44200104125775,
+ "y" : 260.21632443834096
+ }, {
+ "x" : 149.12462083762512,
+ "y" : 259.693836491555
+ }, {
+ "x" : 148.62762896576896,
+ "y" : 259.42120799049735
+ }, {
+ "x" : 147.89042185922153,
+ "y" : 259.42977830581367
+ }, {
+ "x" : 147.4237846584292,
+ "y" : 259.8034938145429
+ }, {
+ "x" : 147.25787687243428,
+ "y" : 260.30971815250814
+ } ]
+ },
+ "id" : 2
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 10.384619708871469,
+ "y" : 61.08531735651195
+ }, {
+ "x" : 0.0,
+ "y" : 64.41891782451421
+ }, {
+ "x" : 2.9493999496335164,
+ "y" : 74.55394606105983
+ }, {
+ "x" : 19.19943108758889,
+ "y" : 73.66508542746305
+ }, {
+ "x" : 31.100576703669503,
+ "y" : 101.38019937369972
+ }, {
+ "x" : 31.949724983191118,
+ "y" : 103.35584659036249
+ }, {
+ "x" : 41.280593269038945,
+ "y" : 100.58768412098289
+ }, {
+ "x" : 28.859270189888775,
+ "y" : 60.894355457276106
+ }, {
+ "x" : 11.654857782414183,
+ "y" : 66.03469680808485
+ } ]
+ },
+ "id" : 3
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 192.229625736014,
+ "y" : 120.62000664323568
+ }, {
+ "x" : 191.81950455647893,
+ "y" : 119.09303265996277
+ }, {
+ "x" : 192.49859879072756,
+ "y" : 117.93650711234659
+ }, {
+ "x" : 194.7720954598626,
+ "y" : 117.4010854549706
+ }, {
+ "x" : 195.87239499611314,
+ "y" : 118.10569510050118
+ }, {
+ "x" : 196.33082218794152,
+ "y" : 119.74555786699057
+ }, {
+ "x" : 195.59116808278486,
+ "y" : 120.71089836303145
+ }, {
+ "x" : 193.49836623796728,
+ "y" : 121.18564400728792
+ } ]
+ },
+ "id" : 4
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 398.2570426602615,
+ "y" : 113.85065295547247
+ }, {
+ "x" : 390.71402013581246,
+ "y" : 98.89869510382414
+ }, {
+ "x" : 386.1479702384677,
+ "y" : 89.26527027506381
+ }, {
+ "x" : 391.3245302303694,
+ "y" : 75.47620683908463
+ }, {
+ "x" : 408.15509718388785,
+ "y" : 68.18814485613257
+ }, {
+ "x" : 413.7977612769464,
+ "y" : 80.99547578953207
+ }, {
+ "x" : 402.5217649335973,
+ "y" : 85.81149602681398
+ }, {
+ "x" : 405.37487236689776,
+ "y" : 91.49302094988525
+ }, {
+ "x" : 413.1251486123074,
+ "y" : 107.14181248936802
+ } ]
+ },
+ "id" : 5
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 5.087338114157319,
+ "y" : 252.2672161431983
+ }, {
+ "x" : 7.846879991237074,
+ "y" : 248.34344168007374
+ }, {
+ "x" : 5.691728836623952,
+ "y" : 246.46852079685777
+ }, {
+ "x" : 4.200591969653033,
+ "y" : 244.32664728164673
+ }, {
+ "x" : 3.428918853867799,
+ "y" : 241.59702445194125
+ }, {
+ "x" : 3.5156201337231323,
+ "y" : 239.01865428686142
+ }, {
+ "x" : 3.983799320529215,
+ "y" : 236.16382985468954
+ }, {
+ "x" : 5.482151748845354,
+ "y" : 233.22125810477883
+ }, {
+ "x" : 7.4435759774642065,
+ "y" : 231.11759947706014
+ }, {
+ "x" : 9.459507467690855,
+ "y" : 229.8279892820865
+ }, {
+ "x" : 12.19882175035309,
+ "y" : 228.9409973444417
+ }, {
+ "x" : 15.008299414766952,
+ "y" : 228.62380398344249
+ }, {
+ "x" : 17.98526613228023,
+ "y" : 229.30247913487256
+ }, {
+ "x" : 20.479156968649477,
+ "y" : 230.84388276934624
+ }, {
+ "x" : 22.542557765729725,
+ "y" : 228.14284174889326
+ }, {
+ "x" : 21.80659459764138,
+ "y" : 223.24480162654072
+ }, {
+ "x" : 24.574454374960624,
+ "y" : 222.8372033080086
+ }, {
+ "x" : 38.09767436166294,
+ "y" : 208.9502873402089
+ }, {
+ "x" : 49.023094923002645,
+ "y" : 194.84251022245735
+ }, {
+ "x" : 51.10593294072896,
+ "y" : 195.76928466465324
+ }, {
+ "x" : 55.99496726808138,
+ "y" : 190.0590730123222
+ }, {
+ "x" : 60.37294866563752,
+ "y" : 193.788976511918
+ }, {
+ "x" : 61.68001871742308,
+ "y" : 192.10837434791028
+ }, {
+ "x" : 66.3333916827105,
+ "y" : 196.2814691029489
+ }, {
+ "x" : 49.21670819027349,
+ "y" : 217.63555298466235
+ }, {
+ "x" : 34.685886699706316,
+ "y" : 236.25058425217867
+ }, {
+ "x" : 16.642093724338338,
+ "y" : 260.6110338792205
+ } ]
+ },
+ "id" : 6
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 41.74883003497962,
+ "y" : 190.24749543890357
+ }, {
+ "x" : 37.50345266284421,
+ "y" : 191.20621130801737
+ }, {
+ "x" : 38.07997281313874,
+ "y" : 193.76238214224577
+ }, {
+ "x" : 32.889904009061866,
+ "y" : 194.92298040352762
+ }, {
+ "x" : 33.350157593144104,
+ "y" : 196.95230752788484
+ }, {
+ "x" : 25.804858991294168,
+ "y" : 198.6456461492926
+ }, {
+ "x" : 21.47831108281389,
+ "y" : 179.44091100711375
+ }, {
+ "x" : 38.4877230291022,
+ "y" : 175.6625866079703
+ }, {
+ "x" : 51.048396613565274,
+ "y" : 172.91406178940088
+ }, {
+ "x" : 62.713481448590755,
+ "y" : 170.23557582311332
+ }, {
+ "x" : 77.38477420189884,
+ "y" : 167.14642967190593
+ }, {
+ "x" : 82.72628087643534,
+ "y" : 169.45122427958995
+ }, {
+ "x" : 84.18529482756276,
+ "y" : 176.30956331081688
+ }, {
+ "x" : 80.6027994803153,
+ "y" : 181.01783756539226
+ }, {
+ "x" : 65.72854327911045,
+ "y" : 184.16690391860902
+ }, {
+ "x" : 53.97243263828568,
+ "y" : 186.67542703077197
+ }, {
+ "x" : 53.56763716065325,
+ "y" : 184.32530236896127
+ }, {
+ "x" : 41.006986524909735,
+ "y" : 187.07382106035948
+ } ]
+ },
+ "id" : 7
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 338.03569119493477,
+ "y" : 99.72761433850974
+ }, {
+ "x" : 203.25108998350333,
+ "y" : 135.29933942947537
+ }, {
+ "x" : 210.75398529251106,
+ "y" : 166.27147937752306
+ }, {
+ "x" : 214.68945491674822,
+ "y" : 182.48139366973191
+ }, {
+ "x" : 320.30626190430485,
+ "y" : 191.83450482599437
+ }, {
+ "x" : 323.9962762054056,
+ "y" : 177.97307213861495
+ }, {
+ "x" : 327.8846443553921,
+ "y" : 163.3061045994982
+ }, {
+ "x" : 331.86717111011967,
+ "y" : 148.27514360379428
+ }, {
+ "x" : 341.47734665311873,
+ "y" : 108.71117755398154
+ } ]
+ },
+ "id" : 8
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 373.60014810448047,
+ "y" : 100.45835386309773
+ }, {
+ "x" : 351.6492524778005,
+ "y" : 109.48774266242981
+ }, {
+ "x" : 349.07094563147984,
+ "y" : 119.29214380308986
+ }, {
+ "x" : 339.7766800012905,
+ "y" : 155.88490118738264
+ }, {
+ "x" : 330.6280033283401,
+ "y" : 191.91513324249536
+ }, {
+ "x" : 349.1672116734553,
+ "y" : 195.54371430631727
+ }, {
+ "x" : 374.9429138553096,
+ "y" : 197.36892197839916
+ }, {
+ "x" : 390.5927082701819,
+ "y" : 196.39415188878775
+ }, {
+ "x" : 414.13796314341016,
+ "y" : 191.51312353368849
+ }, {
+ "x" : 415.2447087839246,
+ "y" : 190.03724455274642
+ } ]
+ },
+ "id" : 9
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 324.2578210707288,
+ "y" : 207.7780264718458
+ }, {
+ "x" : 320.44795189681463,
+ "y" : 222.325250367634
+ }, {
+ "x" : 307.32107540150173,
+ "y" : 275.25583338271827
+ }, {
+ "x" : 309.9967050399864,
+ "y" : 278.24990486819297
+ }, {
+ "x" : 323.78818380460143,
+ "y" : 274.0970222344622
+ }, {
+ "x" : 371.99886162544135,
+ "y" : 259.5657437760383
+ }, {
+ "x" : 400.9509751783917,
+ "y" : 250.83912970870733
+ }, {
+ "x" : 403.44669234380126,
+ "y" : 229.34937280602753
+ }, {
+ "x" : 401.9039858386386,
+ "y" : 222.77739096339792
+ }, {
+ "x" : 398.72115259221755,
+ "y" : 209.65239937789738
+ } ]
+ },
+ "id" : 10
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 402.47574361914303,
+ "y" : 259.26859607733786
+ }, {
+ "x" : 385.35885682550725,
+ "y" : 264.46638219989836
+ }, {
+ "x" : 306.8875765139237,
+ "y" : 288.34797645080835
+ }, {
+ "x" : 302.5591517527355,
+ "y" : 290.0046521956101
+ }, {
+ "x" : 297.9911242470844,
+ "y" : 294.1344191096723
+ }, {
+ "x" : 295.2179503674852,
+ "y" : 304.8668809533119
+ }, {
+ "x" : 289.74562628986314,
+ "y" : 327.8919776920229
+ }, {
+ "x" : 292.22550660697743,
+ "y" : 338.24503855314106
+ }, {
+ "x" : 307.9627013136633,
+ "y" : 335.3259130381048
+ }, {
+ "x" : 345.46696896187495,
+ "y" : 328.3668885510415
+ }, {
+ "x" : 373.27785574435256,
+ "y" : 322.3499027583748
+ }, {
+ "x" : 392.51854601397645,
+ "y" : 318.1805127309635
+ }, {
+ "x" : 405.37718827079516,
+ "y" : 269.0351012656465
+ } ]
+ },
+ "id" : 11
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 394.93131833150983,
+ "y" : 331.62447317223996
+ }, {
+ "x" : 273.723095261259,
+ "y" : 356.52547006402165
+ }, {
+ "x" : 274.41165184625424,
+ "y" : 379.402006813325
+ }, {
+ "x" : 349.21245901077054,
+ "y" : 390.85583183914423
+ }, {
+ "x" : 355.873663465376,
+ "y" : 388.8883651131764
+ }, {
+ "x" : 398.5138815200189,
+ "y" : 348.56812652014196
+ } ]
+ },
+ "id" : 12
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 383.8831806560047,
+ "y" : 11.10479134041816
+ }, {
+ "x" : 338.00738965556957,
+ "y" : 16.1461473274976
+ }, {
+ "x" : 323.51135834795423,
+ "y" : 22.634070438332856
+ }, {
+ "x" : 348.98994402075186,
+ "y" : 79.26822689548135
+ }, {
+ "x" : 397.99125810340047,
+ "y" : 58.33271599095315
+ } ]
+ },
+ "id" : 13
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 245.454217336257,
+ "y" : 198.62656102329493
+ }, {
+ "x" : 221.20493738504592,
+ "y" : 200.54724023025483
+ }, {
+ "x" : 240.4165817425819,
+ "y" : 273.30329787544906
+ }, {
+ "x" : 242.98562469799072,
+ "y" : 282.780356916599
+ }, {
+ "x" : 244.98278176831082,
+ "y" : 289.34533510077745
+ }, {
+ "x" : 265.94549771468155,
+ "y" : 283.33090760651976
+ }, {
+ "x" : 293.9075710645411,
+ "y" : 275.0377352302894
+ }, {
+ "x" : 298.4178367025452,
+ "y" : 258.4779797429219
+ }, {
+ "x" : 307.29833707376383,
+ "y" : 225.09785598982126
+ }, {
+ "x" : 308.3878437280655,
+ "y" : 220.81755857355893
+ }, {
+ "x" : 312.22271020920016,
+ "y" : 205.7482358692214
+ }, {
+ "x" : 280.2954425984062,
+ "y" : 200.47841310407966
+ }, {
+ "x" : 264.80746851093136,
+ "y" : 199.52296201791614
+ } ]
+ },
+ "id" : 14
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 279.58093583746813,
+ "y" : 295.08322514779866
+ }, {
+ "x" : 249.2923338660039,
+ "y" : 304.16597416158766
+ }, {
+ "x" : 259.52564410783816,
+ "y" : 340.0255707418546
+ }, {
+ "x" : 273.80563075933605,
+ "y" : 336.6122348792851
+ }, {
+ "x" : 279.42014936893247,
+ "y" : 315.7726633278653
+ }, {
+ "x" : 283.5895808194764,
+ "y" : 300.2695431280881
+ } ]
+ },
+ "id" : 15
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 143.16444930480793,
+ "y" : 313.8227388774976
+ }, {
+ "x" : 6.739023174857721,
+ "y" : 317.8117614351213
+ }, {
+ "x" : 0.4697507165838033,
+ "y" : 340.6656234366819
+ }, {
+ "x" : 41.346187320770696,
+ "y" : 373.5164463762194
+ }, {
+ "x" : 123.55259956466034,
+ "y" : 392.9602503068745
+ }, {
+ "x" : 138.0014330423437,
+ "y" : 393.5910988114774
+ }, {
+ "x" : 146.9120532188099,
+ "y" : 393.3457755940035
+ }, {
+ "x" : 146.17653927661013,
+ "y" : 355.70316960662603
+ } ]
+ },
+ "id" : 16
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 140.11391512711998,
+ "y" : 154.51461593899876
+ }, {
+ "x" : 113.04620617919136,
+ "y" : 159.890195437707
+ }, {
+ "x" : 44.90581537678372,
+ "y" : 251.7482415549457
+ }, {
+ "x" : 14.169676488032565,
+ "y" : 295.17497979011387
+ }, {
+ "x" : 14.203284389455803,
+ "y" : 300.5945857455954
+ }, {
+ "x" : 33.32364832912572,
+ "y" : 300.436525718309
+ }, {
+ "x" : 49.417912491364405,
+ "y" : 300.17674558609724
+ }, {
+ "x" : 145.05923254950903,
+ "y" : 297.5531679727137
+ }, {
+ "x" : 144.68991099356208,
+ "y" : 278.0030469596386
+ }, {
+ "x" : 142.80199658451602,
+ "y" : 224.61141097079962
+ } ]
+ },
+ "id" : 17
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 137.2231975501636,
+ "y" : 51.4995901864022
+ }, {
+ "x" : 121.13527868466917,
+ "y" : 51.77050573565066
+ }, {
+ "x" : 104.6069155826699,
+ "y" : 55.39789929706603
+ }, {
+ "x" : 97.21966983948369,
+ "y" : 57.69729004986584
+ }, {
+ "x" : 44.79267056565732,
+ "y" : 74.06960068270564
+ }, {
+ "x" : 49.7183491056785,
+ "y" : 90.29041692242026
+ }, {
+ "x" : 76.56449194485322,
+ "y" : 90.1809058105573
+ }, {
+ "x" : 137.73858611402102,
+ "y" : 81.31301099155098
+ } ]
+ },
+ "id" : 18
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 137.46003352757543,
+ "y" : 89.37016474828124
+ }, {
+ "x" : 119.58136252115946,
+ "y" : 89.76996902283281
+ }, {
+ "x" : 83.71383533114567,
+ "y" : 93.40322850365192
+ }, {
+ "x" : 26.302181491046213,
+ "y" : 107.27150216139853
+ }, {
+ "x" : 13.461438397294842,
+ "y" : 137.603720869869
+ }, {
+ "x" : 18.03574552037753,
+ "y" : 160.51068524550647
+ }, {
+ "x" : 98.80507549608592,
+ "y" : 143.1111324876547
+ }, {
+ "x" : 138.10882872948423,
+ "y" : 134.464410639368
+ }, {
+ "x" : 138.14997701102402,
+ "y" : 119.96829866990447
+ } ]
+ },
+ "id" : 19
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 185.93127037596423,
+ "y" : 4.973188903182745
+ }, {
+ "x" : 169.75496158958413,
+ "y" : 9.635868145152926
+ }, {
+ "x" : 172.55675540678203,
+ "y" : 20.389101441949606
+ }, {
+ "x" : 181.55402404651977,
+ "y" : 35.72345955949277
+ }, {
+ "x" : 244.81837488571182,
+ "y" : 31.789185896515846
+ }, {
+ "x" : 272.04072085686494,
+ "y" : 23.170525611378253
+ }, {
+ "x" : 291.89023351855576,
+ "y" : 15.316198794171214
+ }, {
+ "x" : 288.335027924506,
+ "y" : 6.384482720866799
+ } ]
+ },
+ "id" : 20
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 60.273445224855095,
+ "y" : 0.0
+ }, {
+ "x" : 51.26553867990151,
+ "y" : 2.4563426533713937
+ }, {
+ "x" : 41.38614885136485,
+ "y" : 5.150420036166906
+ }, {
+ "x" : 29.538105807616375,
+ "y" : 8.3902533557266
+ }, {
+ "x" : 29.798538877279498,
+ "y" : 43.14622634649277
+ }, {
+ "x" : 34.33702121011447,
+ "y" : 58.708681798540056
+ }, {
+ "x" : 47.0932943855878,
+ "y" : 55.02098180167377
+ }, {
+ "x" : 64.66521250014193,
+ "y" : 14.611816671676934
+ } ]
+ },
+ "id" : 21
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 141.6306351003277,
+ "y" : 116.83901793050784
+ }, {
+ "x" : 141.87407785240606,
+ "y" : 128.5904625324498
+ }, {
+ "x" : 146.64992685380682,
+ "y" : 128.49019010291423
+ }, {
+ "x" : 146.39773279475918,
+ "y" : 116.77177871782462
+ }, {
+ "x" : 145.89784854486646,
+ "y" : 116.78253681752702
+ }, {
+ "x" : 146.13927885240602,
+ "y" : 128.0008013367562
+ }, {
+ "x" : 142.36361193208882,
+ "y" : 128.08007421475259
+ }, {
+ "x" : 142.13052784683714,
+ "y" : 116.82866215978545
+ }, {
+ "x" : 141.6306351003277,
+ "y" : 116.83901793050784
+ }, {
+ "x" : 141.6306351003277,
+ "y" : 116.83901793050784
+ }, {
+ "x" : 141.87407785240606,
+ "y" : 128.5904625324498
+ }, {
+ "x" : 146.64992685380682,
+ "y" : 128.49019010291423
+ }, {
+ "x" : 146.39773279475918,
+ "y" : 116.77177871782462
+ }, {
+ "x" : 145.89784854486646,
+ "y" : 116.78253681752702
+ }, {
+ "x" : 146.13927885240602,
+ "y" : 128.0008013367562
+ }, {
+ "x" : 142.36361193208882,
+ "y" : 128.08007421475259
+ }, {
+ "x" : 142.13052784683714,
+ "y" : 116.82866215978545
+ }, {
+ "x" : 141.6306351003277,
+ "y" : 116.83901793050784
+ } ]
+ },
+ "id" : 22
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 143.92115343943564,
+ "y" : 168.69565355275918
+ }, {
+ "x" : 143.8295708812843,
+ "y" : 158.46319241869656
+ }, {
+ "x" : 147.9524496438901,
+ "y" : 158.453088570111
+ }, {
+ "x" : 148.04042161765545,
+ "y" : 168.57734735060853
+ }, {
+ "x" : 148.54040274306163,
+ "y" : 168.57300290155786
+ }, {
+ "x" : 148.44811333818495,
+ "y" : 157.95187235651085
+ }, {
+ "x" : 143.3250868078719,
+ "y" : 157.96442724530158
+ }, {
+ "x" : 143.42117346474575,
+ "y" : 168.70012847277175
+ }, {
+ "x" : 143.92115343943564,
+ "y" : 168.69565355275918
+ }, {
+ "x" : 143.92115343943564,
+ "y" : 168.69565355275918
+ }, {
+ "x" : 143.8295708812843,
+ "y" : 158.46319241869656
+ }, {
+ "x" : 147.9524496438901,
+ "y" : 158.453088570111
+ }, {
+ "x" : 148.04042161765545,
+ "y" : 168.57734735060853
+ }, {
+ "x" : 148.54040274306163,
+ "y" : 168.57300290155786
+ }, {
+ "x" : 148.44811333818495,
+ "y" : 157.95187235651085
+ }, {
+ "x" : 143.3250868078719,
+ "y" : 157.96442724530158
+ }, {
+ "x" : 143.42117346474575,
+ "y" : 168.70012847277175
+ }, {
+ "x" : 143.92115343943564,
+ "y" : 168.69565355275918
+ } ]
+ },
+ "id" : 258139209
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 188.7041750979025,
+ "y" : 158.69070027838583
+ }, {
+ "x" : 186.33297799111978,
+ "y" : 148.07219112430533
+ }, {
+ "x" : 189.2497066635849,
+ "y" : 147.42692357318728
+ }, {
+ "x" : 191.67341151847072,
+ "y" : 158.25968440859606
+ }, {
+ "x" : 192.1613478736064,
+ "y" : 158.15051429667483
+ }, {
+ "x" : 189.62873353653288,
+ "y" : 146.83098199201368
+ }, {
+ "x" : 185.73581088284294,
+ "y" : 147.6922128261164
+ }, {
+ "x" : 188.21619402101524,
+ "y" : 158.79967031371658
+ }, {
+ "x" : 188.7041750979025,
+ "y" : 158.69070027838583
+ }, {
+ "x" : 188.7041750979025,
+ "y" : 158.69070027838583
+ }, {
+ "x" : 186.33297799111978,
+ "y" : 148.07219112430533
+ }, {
+ "x" : 189.2497066635849,
+ "y" : 147.42692357318728
+ }, {
+ "x" : 191.67341151847072,
+ "y" : 158.25968440859606
+ }, {
+ "x" : 192.1613478736064,
+ "y" : 158.15051429667483
+ }, {
+ "x" : 189.62873353653288,
+ "y" : 146.83098199201368
+ }, {
+ "x" : 185.73581088284294,
+ "y" : 147.6922128261164
+ }, {
+ "x" : 188.21619402101524,
+ "y" : 158.79967031371658
+ }, {
+ "x" : 188.7041750979025,
+ "y" : 158.69070027838583
+ } ]
+ },
+ "id" : 24
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 188.261242747794,
+ "y" : 294.0484465407503
+ }, {
+ "x" : 181.6824518049997,
+ "y" : 295.6227589882707
+ }, {
+ "x" : 182.08438824431738,
+ "y" : 221.3026442560818
+ }, {
+ "x" : 188.84126911950128,
+ "y" : 219.60664249463255
+ }, {
+ "x" : 190.02978186829608,
+ "y" : 224.72626733047719
+ }, {
+ "x" : 195.81308696624853,
+ "y" : 223.40219032999948
+ }, {
+ "x" : 194.56729329889654,
+ "y" : 218.02247281869427
+ }, {
+ "x" : 194.39055891388224,
+ "y" : 217.25059867861336
+ }, {
+ "x" : 212.00589001654996,
+ "y" : 213.55386180363712
+ }, {
+ "x" : 211.903197453717,
+ "y" : 213.0645211885858
+ }, {
+ "x" : 193.7895223977315,
+ "y" : 216.86584005852532
+ }, {
+ "x" : 194.08004405776148,
+ "y" : 218.13467156797256
+ }, {
+ "x" : 195.21289463065494,
+ "y" : 223.0266663054666
+ }, {
+ "x" : 190.40410551607104,
+ "y" : 224.127629674842
+ }, {
+ "x" : 189.21321723391563,
+ "y" : 218.99777201683918
+ }, {
+ "x" : 181.5864930240181,
+ "y" : 220.912107630122
+ }, {
+ "x" : 181.1790125138196,
+ "y" : 296.2573495805463
+ }, {
+ "x" : 188.37760789108174,
+ "y" : 294.53471719936306
+ }, {
+ "x" : 188.261242747794,
+ "y" : 294.0484465407503
+ }, {
+ "x" : 188.261242747794,
+ "y" : 294.0484465407503
+ }, {
+ "x" : 181.6824518049997,
+ "y" : 295.6227589882707
+ }, {
+ "x" : 182.08438824431738,
+ "y" : 221.3026442560818
+ }, {
+ "x" : 188.84126911950128,
+ "y" : 219.60664249463255
+ }, {
+ "x" : 190.02978186829608,
+ "y" : 224.72626733047719
+ }, {
+ "x" : 195.81308696624853,
+ "y" : 223.40219032999948
+ }, {
+ "x" : 194.56729329889654,
+ "y" : 218.02247281869427
+ }, {
+ "x" : 194.39055891388224,
+ "y" : 217.25059867861336
+ }, {
+ "x" : 212.00589001654996,
+ "y" : 213.55386180363712
+ }, {
+ "x" : 211.903197453717,
+ "y" : 213.0645211885858
+ }, {
+ "x" : 193.7895223977315,
+ "y" : 216.86584005852532
+ }, {
+ "x" : 194.08004405776148,
+ "y" : 218.13467156797256
+ }, {
+ "x" : 195.21289463065494,
+ "y" : 223.0266663054666
+ }, {
+ "x" : 190.40410551607104,
+ "y" : 224.127629674842
+ }, {
+ "x" : 189.21321723391563,
+ "y" : 218.99777201683918
+ }, {
+ "x" : 181.5864930240181,
+ "y" : 220.912107630122
+ }, {
+ "x" : 181.1790125138196,
+ "y" : 296.2573495805463
+ }, {
+ "x" : 188.37760789108174,
+ "y" : 294.53471719936306
+ }, {
+ "x" : 188.261242747794,
+ "y" : 294.0484465407503
+ } ]
+ },
+ "id" : 25
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 223.62854100579008,
+ "y" : 236.65078827364152
+ }, {
+ "x" : 213.7328236597783,
+ "y" : 239.4160865812076
+ }, {
+ "x" : 214.1884810493256,
+ "y" : 246.799697115433
+ }, {
+ "x" : 210.69399859554673,
+ "y" : 247.264218837464
+ }, {
+ "x" : 208.72271608763106,
+ "y" : 240.24130564141169
+ }, {
+ "x" : 202.7253132101539,
+ "y" : 241.4333823126283
+ }, {
+ "x" : 204.2249019352705,
+ "y" : 260.8671731021297
+ }, {
+ "x" : 205.56309977290982,
+ "y" : 273.75519545602515
+ }, {
+ "x" : 206.0604260668548,
+ "y" : 273.7035567365317
+ }, {
+ "x" : 204.72291120518753,
+ "y" : 260.82211204204134
+ }, {
+ "x" : 203.25796673098375,
+ "y" : 241.837290435237
+ }, {
+ "x" : 208.36636589824403,
+ "y" : 240.82191701461485
+ }, {
+ "x" : 210.32984346818475,
+ "y" : 247.81702425100463
+ }, {
+ "x" : 214.71623033593156,
+ "y" : 247.23394163197565
+ }, {
+ "x" : 214.25677735580024,
+ "y" : 239.78882619678214
+ }, {
+ "x" : 223.7631076490359,
+ "y" : 237.13233974391812
+ }, {
+ "x" : 223.62854100579008,
+ "y" : 236.65078827364152
+ }, {
+ "x" : 223.62854100579008,
+ "y" : 236.65078827364152
+ }, {
+ "x" : 213.7328236597783,
+ "y" : 239.4160865812076
+ }, {
+ "x" : 214.1884810493256,
+ "y" : 246.799697115433
+ }, {
+ "x" : 210.69399859554673,
+ "y" : 247.264218837464
+ }, {
+ "x" : 208.72271608763106,
+ "y" : 240.24130564141169
+ }, {
+ "x" : 202.7253132101539,
+ "y" : 241.4333823126283
+ }, {
+ "x" : 204.2249019352705,
+ "y" : 260.8671731021297
+ }, {
+ "x" : 205.56309977290982,
+ "y" : 273.75519545602515
+ }, {
+ "x" : 206.0604260668548,
+ "y" : 273.7035567365317
+ }, {
+ "x" : 204.72291120518753,
+ "y" : 260.82211204204134
+ }, {
+ "x" : 203.25796673098375,
+ "y" : 241.837290435237
+ }, {
+ "x" : 208.36636589824403,
+ "y" : 240.82191701461485
+ }, {
+ "x" : 210.32984346818475,
+ "y" : 247.81702425100463
+ }, {
+ "x" : 214.71623033593156,
+ "y" : 247.23394163197565
+ }, {
+ "x" : 214.25677735580024,
+ "y" : 239.78882619678214
+ }, {
+ "x" : 223.7631076490359,
+ "y" : 237.13233974391812
+ }, {
+ "x" : 223.62854100579008,
+ "y" : 236.65078827364152
+ } ]
+ },
+ "id" : 26
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 191.14101024044038,
+ "y" : 290.68055406282355
+ }, {
+ "x" : 189.2625605540796,
+ "y" : 281.1477805084606
+ }, {
+ "x" : 186.81866768929717,
+ "y" : 278.874414297216
+ }, {
+ "x" : 186.27408206257633,
+ "y" : 277.1792667869229
+ }, {
+ "x" : 191.4552172729711,
+ "y" : 275.9238098876115
+ }, {
+ "x" : 187.87847354488625,
+ "y" : 260.82178336901484
+ }, {
+ "x" : 191.8301939067407,
+ "y" : 259.9572612753003
+ }, {
+ "x" : 190.40267412892808,
+ "y" : 251.61978285597948
+ }, {
+ "x" : 189.90984566470343,
+ "y" : 251.70416356971177
+ }, {
+ "x" : 191.2567638853128,
+ "y" : 259.57088581865395
+ }, {
+ "x" : 187.27470502311246,
+ "y" : 260.44204509856525
+ }, {
+ "x" : 190.85404019407338,
+ "y" : 275.55501342401516
+ }, {
+ "x" : 185.63350065257745,
+ "y" : 276.8200185086826
+ }, {
+ "x" : 186.38255184101243,
+ "y" : 279.15161191632245
+ }, {
+ "x" : 188.80333116674078,
+ "y" : 281.4034773738045
+ }, {
+ "x" : 190.6504437376064,
+ "y" : 290.77722104941796
+ }, {
+ "x" : 191.14101024044038,
+ "y" : 290.68055406282355
+ }, {
+ "x" : 191.14101024044038,
+ "y" : 290.68055406282355
+ }, {
+ "x" : 189.2625605540796,
+ "y" : 281.1477805084606
+ }, {
+ "x" : 186.81866768929717,
+ "y" : 278.874414297216
+ }, {
+ "x" : 186.27408206257633,
+ "y" : 277.1792667869229
+ }, {
+ "x" : 191.4552172729711,
+ "y" : 275.9238098876115
+ }, {
+ "x" : 187.87847354488625,
+ "y" : 260.82178336901484
+ }, {
+ "x" : 191.8301939067407,
+ "y" : 259.9572612753003
+ }, {
+ "x" : 190.40267412892808,
+ "y" : 251.61978285597948
+ }, {
+ "x" : 189.90984566470343,
+ "y" : 251.70416356971177
+ }, {
+ "x" : 191.2567638853128,
+ "y" : 259.57088581865395
+ }, {
+ "x" : 187.27470502311246,
+ "y" : 260.44204509856525
+ }, {
+ "x" : 190.85404019407338,
+ "y" : 275.55501342401516
+ }, {
+ "x" : 185.63350065257745,
+ "y" : 276.8200185086826
+ }, {
+ "x" : 186.38255184101243,
+ "y" : 279.15161191632245
+ }, {
+ "x" : 188.80333116674078,
+ "y" : 281.4034773738045
+ }, {
+ "x" : 190.6504437376064,
+ "y" : 290.77722104941796
+ }, {
+ "x" : 191.14101024044038,
+ "y" : 290.68055406282355
+ } ]
+ },
+ "id" : 27
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 253.10746822459623,
+ "y" : 109.49587658513337
+ }, {
+ "x" : 247.25828132592142,
+ "y" : 84.02009022049606
+ }, {
+ "x" : 237.88826663477812,
+ "y" : 86.61971308942884
+ }, {
+ "x" : 233.96614258363843,
+ "y" : 87.92296005040407
+ }, {
+ "x" : 241.16180197289214,
+ "y" : 112.32030882965773
+ }, {
+ "x" : 197.9725924783852,
+ "y" : 119.62279816251248
+ }, {
+ "x" : 186.40300052892417,
+ "y" : 76.33056942280382
+ }, {
+ "x" : 185.6906587301055,
+ "y" : 78.25368800759315
+ }, {
+ "x" : 184.95731510897167,
+ "y" : 79.25262115057558
+ }, {
+ "x" : 183.84003816137556,
+ "y" : 79.71569891553372
+ }, {
+ "x" : 182.4172965285834,
+ "y" : 79.52317374199629
+ }, {
+ "x" : 181.45835167332552,
+ "y" : 78.37827474158257
+ }, {
+ "x" : 178.6594244283624,
+ "y" : 68.42621949594468
+ }, {
+ "x" : 178.83487060724292,
+ "y" : 66.75206073001027
+ }, {
+ "x" : 179.69092215038836,
+ "y" : 65.64599409233779
+ }, {
+ "x" : 180.93642902979627,
+ "y" : 65.35412475839257
+ }, {
+ "x" : 182.21640441799536,
+ "y" : 65.58634942304343
+ }, {
+ "x" : 183.4846372572938,
+ "y" : 65.061594276689
+ }, {
+ "x" : 179.81917368178256,
+ "y" : 49.22796857729554
+ }, {
+ "x" : 220.66547932173125,
+ "y" : 45.86302188318223
+ }, {
+ "x" : 229.96712470578495,
+ "y" : 74.92638423852623
+ }, {
+ "x" : 236.62050045945216,
+ "y" : 72.75822418462485
+ }, {
+ "x" : 277.6587907563662,
+ "y" : 61.478258199989796
+ }, {
+ "x" : 280.5443220587913,
+ "y" : 60.674194771796465
+ }, {
+ "x" : 283.9440121684456,
+ "y" : 73.33909497596323
+ }, {
+ "x" : 285.6788162436569,
+ "y" : 72.88570446707308
+ }, {
+ "x" : 286.70718946889974,
+ "y" : 77.71575237438083
+ }, {
+ "x" : 288.1162804366322,
+ "y" : 77.42941472493112
+ }, {
+ "x" : 292.39265175373293,
+ "y" : 94.7857476156205
+ }, {
+ "x" : 291.1333462370094,
+ "y" : 95.26627447456121
+ }, {
+ "x" : 291.67905621160753,
+ "y" : 100.5028681922704
+ }, {
+ "x" : 273.77138191321865,
+ "y" : 105.96366146299988
+ }, {
+ "x" : 272.42098819767125,
+ "y" : 101.4120556525886
+ }, {
+ "x" : 270.499185876688,
+ "y" : 101.89253185782582
+ }, {
+ "x" : 265.0126954622101,
+ "y" : 79.13261679559946
+ }, {
+ "x" : 260.71065174532123,
+ "y" : 80.22278142627329
+ }, {
+ "x" : 266.70502792624757,
+ "y" : 106.24866008479148
+ } ]
+ },
+ "id" : 37
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 189.93112884389086,
+ "y" : 251.82846871064686
+ }, {
+ "x" : 181.91470869188646,
+ "y" : 252.67726613850613
+ }, {
+ "x" : 181.91470869188663,
+ "y" : 252.67726613850613
+ }, {
+ "x" : 181.6824518049997,
+ "y" : 295.6227589882706
+ }, {
+ "x" : 181.6824518049999,
+ "y" : 295.6227589882706
+ }, {
+ "x" : 188.261242747794,
+ "y" : 294.0484465407503
+ }, {
+ "x" : 188.32684776119535,
+ "y" : 294.3225990246783
+ }, {
+ "x" : 188.32684776119527,
+ "y" : 294.3225990246783
+ }, {
+ "x" : 191.5,
+ "y" : 293.6
+ }, {
+ "x" : 190.94251631689755,
+ "y" : 290.719667637304
+ }, {
+ "x" : 190.94251631689735,
+ "y" : 290.719667637304
+ }, {
+ "x" : 190.6504437376064,
+ "y" : 290.77722104941796
+ }, {
+ "x" : 188.80333116674078,
+ "y" : 281.4034773738045
+ }, {
+ "x" : 186.38255184101243,
+ "y" : 279.15161191632245
+ }, {
+ "x" : 185.63350065257745,
+ "y" : 276.8200185086826
+ }, {
+ "x" : 190.85404019407338,
+ "y" : 275.55501342401516
+ }, {
+ "x" : 187.27470502311246,
+ "y" : 260.44204509856525
+ }, {
+ "x" : 191.2567638853128,
+ "y" : 259.57088581865395
+ }, {
+ "x" : 189.93112884389072,
+ "y" : 251.82846871064686
+ } ]
+ },
+ "id" : 29
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 211.40925366880512,
+ "y" : 240.24316304064652
+ }, {
+ "x" : 206.7546340139987,
+ "y" : 219.2040493108693
+ }, {
+ "x" : 202.11836580699853,
+ "y" : 220.28525077121697
+ }, {
+ "x" : 199.64654153149257,
+ "y" : 220.86169453915633
+ }, {
+ "x" : 199.76009744562526,
+ "y" : 221.34862888212822
+ }, {
+ "x" : 202.2319149179628,
+ "y" : 220.77218670144592
+ }, {
+ "x" : 206.37568165232085,
+ "y" : 219.80583910342253
+ }, {
+ "x" : 210.92105844656797,
+ "y" : 240.351169637597
+ }, {
+ "x" : 211.40925366880512,
+ "y" : 240.24316304064652
+ }, {
+ "x" : 211.40925366880512,
+ "y" : 240.24316304064652
+ }, {
+ "x" : 206.7546340139987,
+ "y" : 219.2040493108693
+ }, {
+ "x" : 202.11836580699853,
+ "y" : 220.28525077121697
+ }, {
+ "x" : 199.64654153149257,
+ "y" : 220.86169453915633
+ }, {
+ "x" : 199.76009744562526,
+ "y" : 221.34862888212822
+ }, {
+ "x" : 202.2319149179628,
+ "y" : 220.77218670144592
+ }, {
+ "x" : 206.37568165232085,
+ "y" : 219.80583910342253
+ }, {
+ "x" : 210.92105844656797,
+ "y" : 240.351169637597
+ }, {
+ "x" : 211.40925366880512,
+ "y" : 240.24316304064652
+ } ]
+ },
+ "id" : -111495
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 205.26478867001163,
+ "y" : 234.85693554280522
+ }, {
+ "x" : 202.42038394500298,
+ "y" : 220.48019794820073
+ }, {
+ "x" : 201.92989164298604,
+ "y" : 220.57724073083875
+ }, {
+ "x" : 204.77429636799468,
+ "y" : 234.95397832544325
+ }, {
+ "x" : 205.26478867001163,
+ "y" : 234.85693554280522
+ }, {
+ "x" : 205.26478867001163,
+ "y" : 234.85693554280522
+ }, {
+ "x" : 202.42038394500298,
+ "y" : 220.48019794820073
+ }, {
+ "x" : 201.92989164298604,
+ "y" : 220.57724073083875
+ }, {
+ "x" : 204.77429636799468,
+ "y" : 234.95397832544325
+ }, {
+ "x" : 205.26478867001163,
+ "y" : 234.85693554280522
+ } ]
+ },
+ "id" : -111500
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 208.7,
+ "y" : 240.3
+ }, {
+ "x" : 204.7,
+ "y" : 221.9
+ }, {
+ "x" : 204.0,
+ "y" : 221.9
+ }, {
+ "x" : 208.1,
+ "y" : 240.6
+ } ]
+ },
+ "id" : 28
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 206.8,
+ "y" : 219.7
+ }, {
+ "x" : 213.7,
+ "y" : 218.3
+ }, {
+ "x" : 213.5,
+ "y" : 217.6
+ }, {
+ "x" : 206.7,
+ "y" : 219.2
+ } ]
+ },
+ "id" : 30
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 321.854868881288,
+ "y" : 88.83518527355045
+ }, {
+ "x" : 298.37761748046614,
+ "y" : 97.43507448770106
+ }, {
+ "x" : 293.5620523635298,
+ "y" : 85.70159294549376
+ }, {
+ "x" : 313.6981557297986,
+ "y" : 77.28956364933401
+ }, {
+ "x" : 307.07636212860234,
+ "y" : 61.27838537469506
+ }, {
+ "x" : 313.6925600928953,
+ "y" : 59.33158536348492
+ }, {
+ "x" : 304.0370127824135,
+ "y" : 36.80951383151114
+ }, {
+ "x" : 288.91018132376485,
+ "y" : 43.242897134274244
+ }, {
+ "x" : 298.54421544249635,
+ "y" : 65.74196350947022
+ }, {
+ "x" : 287.30660094344057,
+ "y" : 70.52612006943673
+ }, {
+ "x" : 272.26854399975855,
+ "y" : 35.41708060540259
+ }, {
+ "x" : 291.63630389841273,
+ "y" : 27.05697866808623
+ }, {
+ "x" : 311.2453782290686,
+ "y" : 18.827454746700823
+ }, {
+ "x" : 326.2973781025503,
+ "y" : 53.95932933688164
+ }, {
+ "x" : 320.5729502077447,
+ "y" : 56.392326892353594
+ }, {
+ "x" : 333.522137411288,
+ "y" : 84.5551242409274
+ } ]
+ },
+ "id" : 38
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 183.36223962920806,
+ "y" : 99.17525606485874
+ }, {
+ "x" : 185.74794754937636,
+ "y" : 108.28736282386804
+ }, {
+ "x" : 192.16039841298857,
+ "y" : 106.5412362408522
+ }, {
+ "x" : 189.64268185690656,
+ "y" : 97.31639342306377
+ }, {
+ "x" : 189.16032451480947,
+ "y" : 97.4480421774256
+ }, {
+ "x" : 191.54631566579525,
+ "y" : 106.19024680697599
+ }, {
+ "x" : 186.10375833658165,
+ "y" : 107.67226892835474
+ }, {
+ "x" : 183.84593609842383,
+ "y" : 99.04861592245429
+ }, {
+ "x" : 183.36223962920806,
+ "y" : 99.17525606485874
+ }, {
+ "x" : 183.36223962920806,
+ "y" : 99.17525606485874
+ }, {
+ "x" : 185.74794754937636,
+ "y" : 108.28736282386804
+ }, {
+ "x" : 192.16039841298857,
+ "y" : 106.5412362408522
+ }, {
+ "x" : 189.64268185690656,
+ "y" : 97.31639342306377
+ }, {
+ "x" : 189.16032451480947,
+ "y" : 97.4480421774256
+ }, {
+ "x" : 191.54631566579525,
+ "y" : 106.19024680697599
+ }, {
+ "x" : 186.10375833658165,
+ "y" : 107.67226892835474
+ }, {
+ "x" : 183.84593609842383,
+ "y" : 99.04861592245429
+ }, {
+ "x" : 183.36223962920806,
+ "y" : 99.17525606485874
+ } ]
+ },
+ "id" : 258139205
+ } ],
+ "measurementAreas" : [ {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 189.62873353653288,
+ "y" : 146.83098199201368
+ }, {
+ "x" : 192.1613478736064,
+ "y" : 158.15051429667483
+ }, {
+ "x" : 191.67341151847072,
+ "y" : 158.25968440859606
+ }, {
+ "x" : 189.2497066635849,
+ "y" : 147.42692357318728
+ }, {
+ "x" : 186.33297799111978,
+ "y" : 148.07219112430533
+ }, {
+ "x" : 188.7041750979025,
+ "y" : 158.69070027838583
+ }, {
+ "x" : 188.21619402101524,
+ "y" : 158.79967031371658
+ }, {
+ "x" : 185.73581088284294,
+ "y" : 147.6922128261164
+ }, {
+ "x" : 189.62873353653288,
+ "y" : 146.83098199201368
+ }, {
+ "x" : 185.81761501636356,
+ "y" : 140.83198922965676
+ }, {
+ "x" : 175.79074987163767,
+ "y" : 143.7100076181814
+ }, {
+ "x" : 174.8172851598356,
+ "y" : 144.5450926925987
+ }, {
+ "x" : 174.2315358541673,
+ "y" : 145.5823727948591
+ }, {
+ "x" : 174.26170542137697,
+ "y" : 209.04751699510962
+ }, {
+ "x" : 174.61771361227147,
+ "y" : 209.74932632502168
+ }, {
+ "x" : 175.113541209721,
+ "y" : 210.27782144676894
+ }, {
+ "x" : 182.6607723016059,
+ "y" : 213.83633342478424
+ }, {
+ "x" : 184.10732813342474,
+ "y" : 213.76263221725821
+ }, {
+ "x" : 185.31904005026445,
+ "y" : 213.14696692116559
+ }, {
+ "x" : 204.5742070877459,
+ "y" : 174.49715985544026
+ }, {
+ "x" : 204.74994148151018,
+ "y" : 173.2569348597899
+ }, {
+ "x" : 204.50031978392508,
+ "y" : 172.26942209340632
+ }, {
+ "x" : 187.9517537734937,
+ "y" : 141.78279261570424
+ }, {
+ "x" : 186.9525607401738,
+ "y" : 141.17059722729027
+ }, {
+ "x" : 185.81761501636356,
+ "y" : 140.83198922965676
+ } ]
+ },
+ "id" : 169
+ } ],
+ "stairs" : [ ],
+ "targets" : [ {
+ "id" : 53,
+ "absorbing" : true,
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 21.4,
+ "y" : 178.2
+ }, {
+ "x" : 25.6,
+ "y" : 177.4
+ }, {
+ "x" : 21.2,
+ "y" : 160.6
+ }, {
+ "x" : 17.0,
+ "y" : 161.6
+ }, {
+ "x" : 21.2,
+ "y" : 178.0
+ } ]
+ },
+ "waitingTime" : 0.0,
+ "waitingTimeYellowPhase" : 0.0,
+ "parallelWaiters" : 0,
+ "individualWaiting" : true,
+ "deletionDistance" : 0.1,
+ "startingWithRedLight" : false,
+ "nextSpeed" : -1.0
+ } ],
+ "absorbingAreas" : [ ],
+ "sources" : [ {
+ "id" : 23,
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 147.9524496438901,
+ "y" : 158.453088570111
+ }, {
+ "x" : 143.8295708812843,
+ "y" : 158.46319241869656
+ }, {
+ "x" : 143.85764593174972,
+ "y" : 161.60000000000002
+ }, {
+ "x" : 147.97979386886047,
+ "y" : 161.60000000000002
+ }, {
+ "x" : 147.9524496438901,
+ "y" : 158.453088570111
+ } ]
+ },
+ "interSpawnTimeDistribution" : "org.vadere.state.scenario.ConstantDistribution",
+ "distributionParameters" : [ 1.0 ],
+ "spawnNumber" : 1,
+ "maxSpawnNumberTotal" : -1,
+ "startTime" : 0.0,
+ "endTime" : 0.0,
+ "spawnAtRandomPositions" : false,
+ "useFreeSpaceOnly" : true,
+ "targetIds" : [ 53 ],
+ "groupSizeDistribution" : [ 1.0 ],
+ "dynamicElementType" : "PEDESTRIAN"
+ } ],
+ "dynamicElements" : [ ],
+ "attributesPedestrian" : {
+ "radius" : 0.195,
+ "densityDependentSpeed" : false,
+ "speedDistributionMean" : 1.34,
+ "speedDistributionStandardDeviation" : 0.26,
+ "minimumSpeed" : 0.5,
+ "maximumSpeed" : 2.2,
+ "acceleration" : 2.0,
+ "footStepsToStore" : 4,
+ "searchRadius" : 1.0,
+ "angleCalculationType" : "USE_CENTER",
+ "targetOrientationAngleThreshold" : 45.0
+ },
+ "teleporter" : null,
+ "attributesCar" : {
+ "id" : -1,
+ "radius" : 0.195,
+ "densityDependentSpeed" : false,
+ "speedDistributionMean" : 1.34,
+ "speedDistributionStandardDeviation" : 0.26,
+ "minimumSpeed" : 0.5,
+ "maximumSpeed" : 2.2,
+ "acceleration" : 2.0,
+ "footStepsToStore" : 4,
+ "searchRadius" : 1.0,
+ "angleCalculationType" : "USE_CENTER",
+ "targetOrientationAngleThreshold" : 45.0,
+ "length" : 4.5,
+ "width" : 1.7,
+ "direction" : {
+ "x" : 1.0,
+ "y" : 0.0
+ }
+ }
+ },
+ "eventInfos" : [ ]
+ }
+}
diff --git a/VadereManager/testResources/testProject001/scenarios/roVerTest001.scenario b/VadereManager/testResources/testProject001/scenarios/roVerTest001.scenario
new file mode 100644
index 0000000000000000000000000000000000000000..20c1c03e2feaa12b08dfee032c41f066058f02a2
--- /dev/null
+++ b/VadereManager/testResources/testProject001/scenarios/roVerTest001.scenario
@@ -0,0 +1,295 @@
+{
+ "name" : "roVerTest001",
+ "description" : "",
+ "release" : "1.0",
+ "processWriters" : {
+ "files" : [ {
+ "type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
+ "filename" : "postvis.trajectories",
+ "processors" : [ 1, 2 ]
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOverlapOutputFile",
+ "filename" : "overlaps.csv",
+ "processors" : [ 3 ]
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.outputfile.NoDataKeyOutputFile",
+ "filename" : "overlapCount.txt",
+ "processors" : [ 4 ]
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.outputfile.BonnMotionTrajectoryFile",
+ "filename" : "bonnmotion.txt",
+ "processors" : [ 5 ]
+ } ],
+ "processors" : [ {
+ "type" : "org.vadere.simulator.projects.dataprocessing.processor.PedestrianPositionProcessor",
+ "id" : 1
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.processor.PedestrianTargetIdProcessor",
+ "id" : 2
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.processor.PedestrianOverlapProcessor",
+ "id" : 3
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.processor.NumberOverlapsProcessor",
+ "id" : 4,
+ "attributesType" : "org.vadere.state.attributes.processor.AttributesNumberOverlapsProcessor",
+ "attributes" : {
+ "pedestrianOverlapProcessorId" : 3
+ }
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.processor.BonnMotionTrajectoryProcessor",
+ "id" : 5,
+ "attributesType" : "org.vadere.state.attributes.processor.AttributesBonnMotionTrajectoryProcessor",
+ "attributes" : {
+ "pedestrianPositionProcessorId" : 1,
+ "scale" : {
+ "x" : 1.0,
+ "y" : -1.0
+ },
+ "translate" : {
+ "x" : 0.0,
+ "y" : 250.0
+ }
+ }
+ } ],
+ "isTimestamped" : true,
+ "isWriteMetaData" : false
+ },
+ "scenario" : {
+ "mainModel" : "org.vadere.simulator.models.osm.OptimalStepsModel",
+ "attributesModel" : {
+ "org.vadere.state.attributes.models.AttributesOSM" : {
+ "stepCircleResolution" : 4,
+ "numberOfCircles" : 1,
+ "optimizationType" : "DISCRETE",
+ "varyStepDirection" : true,
+ "movementType" : "ARBITRARY",
+ "stepLengthIntercept" : 0.4625,
+ "stepLengthSlopeSpeed" : 0.2345,
+ "stepLengthSD" : 0.036,
+ "movementThreshold" : 0.0,
+ "minStepLength" : 0.1,
+ "minimumStepLength" : true,
+ "maxStepDuration" : 1.7976931348623157E308,
+ "dynamicStepLength" : true,
+ "updateType" : "EVENT_DRIVEN",
+ "seeSmallWalls" : false,
+ "targetPotentialModel" : "org.vadere.simulator.models.potential.fields.PotentialFieldTargetGrid",
+ "pedestrianPotentialModel" : "org.vadere.simulator.models.potential.PotentialFieldPedestrianCompactSoftshell",
+ "obstaclePotentialModel" : "org.vadere.simulator.models.potential.PotentialFieldObstacleCompactSoftshell",
+ "submodels" : [ ]
+ },
+ "org.vadere.state.attributes.models.AttributesPotentialCompactSoftshell" : {
+ "pedPotentialIntimateSpaceWidth" : 0.45,
+ "pedPotentialPersonalSpaceWidth" : 1.2,
+ "pedPotentialHeight" : 50.0,
+ "obstPotentialWidth" : 0.8,
+ "obstPotentialHeight" : 6.0,
+ "intimateSpaceFactor" : 1.2,
+ "personalSpacePower" : 1,
+ "intimateSpacePower" : 1
+ },
+ "org.vadere.state.attributes.models.AttributesFloorField" : {
+ "createMethod" : "HIGH_ACCURACY_FAST_MARCHING",
+ "potentialFieldResolution" : 0.1,
+ "obstacleGridPenalty" : 0.1,
+ "targetAttractionStrength" : 1.0,
+ "timeCostAttributes" : {
+ "standardDeviation" : 0.7,
+ "type" : "UNIT",
+ "obstacleDensityWeight" : 3.5,
+ "pedestrianSameTargetDensityWeight" : 3.5,
+ "pedestrianOtherTargetDensityWeight" : 3.5,
+ "pedestrianWeight" : 3.5,
+ "queueWidthLoading" : 1.0,
+ "pedestrianDynamicWeight" : 6.0,
+ "loadingType" : "CONSTANT",
+ "width" : 0.2,
+ "height" : 1.0
+ }
+ }
+ },
+ "attributesSimulation" : {
+ "finishTime" : 800.0,
+ "simTimeStepLength" : 0.4,
+ "realTimeSimTimeRatio" : 0.1,
+ "writeSimulationData" : true,
+ "visualizationEnabled" : true,
+ "printFPS" : false,
+ "digitsPerCoordinate" : 2,
+ "useFixedSeed" : true,
+ "fixedSeed" : -359668230868604320,
+ "simulationSeed" : 0,
+ "useSalientBehavior" : false
+ },
+ "topography" : {
+ "attributes" : {
+ "bounds" : {
+ "x" : 0.0,
+ "y" : 0.0,
+ "width" : 250.0,
+ "height" : 250.0
+ },
+ "boundingBoxWidth" : 0.5,
+ "bounded" : true
+ },
+ "obstacles" : [ {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 213.3,
+ "y" : -1.0
+ }, {
+ "x" : 213.3,
+ "y" : 120.0
+ }, {
+ "x" : 160.0,
+ "y" : 120.0
+ }, {
+ "x" : 160.0,
+ "y" : -1.0
+ } ]
+ },
+ "id" : 3
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 249.5,
+ "y" : 180.0
+ }, {
+ "x" : 249.5,
+ "y" : 223.8
+ }, {
+ "x" : 158.6,
+ "y" : 223.8
+ }, {
+ "x" : 158.6,
+ "y" : 180.0
+ } ]
+ },
+ "id" : 4
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 236.60000000000002,
+ "y" : 44.3
+ }, {
+ "x" : 236.60000000000002,
+ "y" : 149.5
+ }, {
+ "x" : 236.1999999999998,
+ "y" : 149.5000000000003
+ }, {
+ "x" : 236.2,
+ "y" : 159.0
+ }, {
+ "x" : 130.5,
+ "y" : 158.99999999999997
+ }, {
+ "x" : 130.5,
+ "y" : 250.0
+ }, {
+ "x" : 41.0,
+ "y" : 250.0
+ }, {
+ "x" : 41.0,
+ "y" : 29.0
+ }, {
+ "x" : 130.5,
+ "y" : 29.0
+ }, {
+ "x" : 130.5,
+ "y" : 136.7
+ }, {
+ "x" : 224.3,
+ "y" : 136.7
+ }, {
+ "x" : 224.3,
+ "y" : 44.3
+ } ]
+ },
+ "id" : 5
+ } ],
+ "measurementAreas" : [ ],
+ "stairs" : [ ],
+ "targets" : [ {
+ "id" : 2,
+ "absorbing" : true,
+ "shape" : {
+ "x" : 212.4,
+ "y" : 227.1,
+ "width" : 29.5,
+ "height" : 21.0,
+ "type" : "RECTANGLE"
+ },
+ "waitingTime" : 0.0,
+ "waitingTimeYellowPhase" : 0.0,
+ "parallelWaiters" : 0,
+ "individualWaiting" : true,
+ "deletionDistance" : 0.1,
+ "startingWithRedLight" : false,
+ "nextSpeed" : -1.0
+ } ],
+ "absorbingAreas" : [ ],
+ "sources" : [ {
+ "id" : 1,
+ "shape" : {
+ "x" : 1.4,
+ "y" : 179.5,
+ "width" : 8.6,
+ "height" : 41.0,
+ "type" : "RECTANGLE"
+ },
+ "interSpawnTimeDistribution" : "org.vadere.state.scenario.ConstantDistribution",
+ "distributionParameters" : [ 1.0 ],
+ "spawnNumber" : 5,
+ "maxSpawnNumberTotal" : 15,
+ "startTime" : 0.0,
+ "endTime" : 10.0,
+ "spawnAtRandomPositions" : false,
+ "useFreeSpaceOnly" : true,
+ "targetIds" : [ 2 ],
+ "groupSizeDistribution" : [ 1.0 ],
+ "dynamicElementType" : "PEDESTRIAN"
+ } ],
+ "dynamicElements" : [ ],
+ "attributesPedestrian" : {
+ "radius" : 0.2,
+ "densityDependentSpeed" : false,
+ "speedDistributionMean" : 1.34,
+ "speedDistributionStandardDeviation" : 0.26,
+ "minimumSpeed" : 0.5,
+ "maximumSpeed" : 2.2,
+ "acceleration" : 2.0,
+ "footStepsToStore" : 4,
+ "searchRadius" : 1.0,
+ "angleCalculationType" : "USE_CENTER",
+ "targetOrientationAngleThreshold" : 45.0
+ },
+ "teleporter" : null,
+ "attributesCar" : {
+ "id" : -1,
+ "radius" : 0.2,
+ "densityDependentSpeed" : false,
+ "speedDistributionMean" : 1.34,
+ "speedDistributionStandardDeviation" : 0.26,
+ "minimumSpeed" : 0.5,
+ "maximumSpeed" : 2.2,
+ "acceleration" : 2.0,
+ "footStepsToStore" : 4,
+ "searchRadius" : 1.0,
+ "angleCalculationType" : "USE_CENTER",
+ "targetOrientationAngleThreshold" : 45.0,
+ "length" : 4.5,
+ "width" : 1.7,
+ "direction" : {
+ "x" : 1.0,
+ "y" : 0.0
+ }
+ }
+ },
+ "eventInfos" : [ ]
+ }
+}
\ No newline at end of file
diff --git a/VadereManager/testResources/testProject001/scenarios/scenario001.scenario b/VadereManager/testResources/testProject001/scenarios/scenario001.scenario
new file mode 100644
index 0000000000000000000000000000000000000000..8403c2afe391268e6173a6bb0e3cf6a3ef1a430e
--- /dev/null
+++ b/VadereManager/testResources/testProject001/scenarios/scenario001.scenario
@@ -0,0 +1,216 @@
+{
+ "name" : "scenario001",
+ "description" : "",
+ "release" : "1.0",
+ "processWriters" : {
+ "files" : [ {
+ "type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
+ "filename" : "postvis.trajectories",
+ "processors" : [ 1, 2 ]
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOverlapOutputFile",
+ "filename" : "overlaps.csv",
+ "processors" : [ 3 ]
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.outputfile.NoDataKeyOutputFile",
+ "filename" : "overlapCount.txt",
+ "processors" : [ 4 ]
+ } ],
+ "processors" : [ {
+ "type" : "org.vadere.simulator.projects.dataprocessing.processor.PedestrianPositionProcessor",
+ "id" : 1
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.processor.PedestrianTargetIdProcessor",
+ "id" : 2
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.processor.PedestrianOverlapProcessor",
+ "id" : 3
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.processor.NumberOverlapsProcessor",
+ "id" : 4,
+ "attributesType" : "org.vadere.state.attributes.processor.AttributesNumberOverlapsProcessor",
+ "attributes" : {
+ "pedestrianOverlapProcessorId" : 3
+ }
+ } ],
+ "isTimestamped" : true,
+ "isWriteMetaData" : false
+ },
+ "scenario" : {
+ "mainModel" : "org.vadere.simulator.models.osm.OptimalStepsModel",
+ "attributesModel" : {
+ "org.vadere.state.attributes.models.AttributesOSM" : {
+ "stepCircleResolution" : 4,
+ "numberOfCircles" : 1,
+ "optimizationType" : "NELDER_MEAD",
+ "varyStepDirection" : true,
+ "movementType" : "ARBITRARY",
+ "stepLengthIntercept" : 0.4625,
+ "stepLengthSlopeSpeed" : 0.2345,
+ "stepLengthSD" : 0.036,
+ "movementThreshold" : 0.0,
+ "minStepLength" : 0.1,
+ "minimumStepLength" : true,
+ "maxStepDuration" : 1.7976931348623157E308,
+ "dynamicStepLength" : true,
+ "updateType" : "EVENT_DRIVEN",
+ "seeSmallWalls" : false,
+ "targetPotentialModel" : "org.vadere.simulator.models.potential.fields.PotentialFieldTargetGrid",
+ "pedestrianPotentialModel" : "org.vadere.simulator.models.potential.PotentialFieldPedestrianCompactSoftshell",
+ "obstaclePotentialModel" : "org.vadere.simulator.models.potential.PotentialFieldObstacleCompactSoftshell",
+ "submodels" : [ ]
+ },
+ "org.vadere.state.attributes.models.AttributesPotentialCompactSoftshell" : {
+ "pedPotentialIntimateSpaceWidth" : 0.45,
+ "pedPotentialPersonalSpaceWidth" : 1.2,
+ "pedPotentialHeight" : 50.0,
+ "obstPotentialWidth" : 0.8,
+ "obstPotentialHeight" : 6.0,
+ "intimateSpaceFactor" : 1.2,
+ "personalSpacePower" : 1,
+ "intimateSpacePower" : 1
+ },
+ "org.vadere.state.attributes.models.AttributesFloorField" : {
+ "createMethod" : "HIGH_ACCURACY_FAST_MARCHING",
+ "potentialFieldResolution" : 0.1,
+ "obstacleGridPenalty" : 0.1,
+ "targetAttractionStrength" : 1.0,
+ "timeCostAttributes" : {
+ "standardDeviation" : 0.7,
+ "type" : "UNIT",
+ "obstacleDensityWeight" : 3.5,
+ "pedestrianSameTargetDensityWeight" : 3.5,
+ "pedestrianOtherTargetDensityWeight" : 3.5,
+ "pedestrianWeight" : 3.5,
+ "queueWidthLoading" : 1.0,
+ "pedestrianDynamicWeight" : 6.0,
+ "loadingType" : "CONSTANT",
+ "width" : 0.2,
+ "height" : 1.0
+ }
+ }
+ },
+ "attributesSimulation" : {
+ "finishTime" : 50.0,
+ "simTimeStepLength" : 0.4,
+ "realTimeSimTimeRatio" : 0.1,
+ "writeSimulationData" : true,
+ "visualizationEnabled" : true,
+ "printFPS" : false,
+ "digitsPerCoordinate" : 2,
+ "useFixedSeed" : true,
+ "fixedSeed" : 183115877309837713,
+ "simulationSeed" : 0,
+ "useSalientBehavior" : false
+ },
+ "topography" : {
+ "attributes" : {
+ "bounds" : {
+ "x" : 0.0,
+ "y" : 0.0,
+ "width" : 10.0,
+ "height" : 10.0
+ },
+ "boundingBoxWidth" : 0.5,
+ "bounded" : true
+ },
+ "obstacles" : [ {
+ "shape" : {
+ "x" : 0.5,
+ "y" : 5.3,
+ "width" : 6.7,
+ "height" : 1.0,
+ "type" : "RECTANGLE"
+ },
+ "id" : 3
+ }, {
+ "shape" : {
+ "x" : 2.0,
+ "y" : 2.7,
+ "width" : 7.5,
+ "height" : 1.3,
+ "type" : "RECTANGLE"
+ },
+ "id" : 4
+ } ],
+ "measurementAreas" : [ ],
+ "stairs" : [ ],
+ "targets" : [ {
+ "id" : 2,
+ "absorbing" : true,
+ "shape" : {
+ "x" : 6.6,
+ "y" : 0.8,
+ "width" : 2.4,
+ "height" : 1.6,
+ "type" : "RECTANGLE"
+ },
+ "waitingTime" : 0.0,
+ "waitingTimeYellowPhase" : 0.0,
+ "parallelWaiters" : 0,
+ "individualWaiting" : true,
+ "deletionDistance" : 0.1,
+ "startingWithRedLight" : false,
+ "nextSpeed" : -1.0
+ } ],
+ "absorbingAreas" : [ ],
+ "sources" : [ {
+ "id" : 1,
+ "shape" : {
+ "x" : 1.0,
+ "y" : 7.504761904761905,
+ "width" : 2.0095238095238095,
+ "height" : 1.4952380952380953,
+ "type" : "RECTANGLE"
+ },
+ "interSpawnTimeDistribution" : "org.vadere.state.scenario.ConstantDistribution",
+ "distributionParameters" : [ 20.0 ],
+ "spawnNumber" : 4,
+ "maxSpawnNumberTotal" : 8,
+ "startTime" : 0.0,
+ "endTime" : 50.0,
+ "spawnAtRandomPositions" : true,
+ "useFreeSpaceOnly" : true,
+ "targetIds" : [ 2 ],
+ "groupSizeDistribution" : [ 1.0 ],
+ "dynamicElementType" : "PEDESTRIAN"
+ } ],
+ "dynamicElements" : [ ],
+ "attributesPedestrian" : {
+ "radius" : 0.2,
+ "densityDependentSpeed" : false,
+ "speedDistributionMean" : 1.34,
+ "speedDistributionStandardDeviation" : 0.26,
+ "minimumSpeed" : 0.5,
+ "maximumSpeed" : 2.2,
+ "acceleration" : 2.0,
+ "footStepsToStore" : 4,
+ "searchRadius" : 1.0,
+ "angleCalculationType" : "USE_CENTER",
+ "targetOrientationAngleThreshold" : 45.0
+ },
+ "teleporter" : null,
+ "attributesCar" : {
+ "id" : -1,
+ "radius" : 0.2,
+ "densityDependentSpeed" : false,
+ "speedDistributionMean" : 1.34,
+ "speedDistributionStandardDeviation" : 0.26,
+ "minimumSpeed" : 0.5,
+ "maximumSpeed" : 2.2,
+ "acceleration" : 2.0,
+ "footStepsToStore" : 4,
+ "searchRadius" : 1.0,
+ "angleCalculationType" : "USE_CENTER",
+ "targetOrientationAngleThreshold" : 45.0,
+ "length" : 4.5,
+ "width" : 1.7,
+ "direction" : {
+ "x" : 1.0,
+ "y" : 0.0
+ }
+ }
+ },
+ "eventInfos" : [ ]
+ }
+}
\ No newline at end of file
diff --git a/VadereManager/testResources/testProject001/scenarios/scenario002.scenario b/VadereManager/testResources/testProject001/scenarios/scenario002.scenario
new file mode 100644
index 0000000000000000000000000000000000000000..de3918fd39459c04d5a65ef8892a3c8eb043398a
--- /dev/null
+++ b/VadereManager/testResources/testProject001/scenarios/scenario002.scenario
@@ -0,0 +1,293 @@
+{
+ "name" : "scenario002",
+ "description" : "",
+ "release" : "1.0",
+ "processWriters" : {
+ "files" : [ {
+ "type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
+ "filename" : "postvis.trajectories",
+ "processors" : [ 1, 2 ]
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOverlapOutputFile",
+ "filename" : "overlaps.csv",
+ "processors" : [ 3 ]
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.outputfile.NoDataKeyOutputFile",
+ "filename" : "overlapCount.txt",
+ "processors" : [ 4 ]
+ } ],
+ "processors" : [ {
+ "type" : "org.vadere.simulator.projects.dataprocessing.processor.PedestrianPositionProcessor",
+ "id" : 1
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.processor.PedestrianTargetIdProcessor",
+ "id" : 2
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.processor.PedestrianOverlapProcessor",
+ "id" : 3
+ }, {
+ "type" : "org.vadere.simulator.projects.dataprocessing.processor.NumberOverlapsProcessor",
+ "id" : 4,
+ "attributesType" : "org.vadere.state.attributes.processor.AttributesNumberOverlapsProcessor",
+ "attributes" : {
+ "pedestrianOverlapProcessorId" : 3
+ }
+ } ],
+ "isTimestamped" : true,
+ "isWriteMetaData" : false
+ },
+ "scenario" : {
+ "mainModel" : "org.vadere.simulator.models.osm.OptimalStepsModel",
+ "attributesModel" : {
+ "org.vadere.state.attributes.models.AttributesOSM" : {
+ "stepCircleResolution" : 4,
+ "numberOfCircles" : 1,
+ "optimizationType" : "NELDER_MEAD",
+ "varyStepDirection" : true,
+ "movementType" : "ARBITRARY",
+ "stepLengthIntercept" : 0.4625,
+ "stepLengthSlopeSpeed" : 0.2345,
+ "stepLengthSD" : 0.036,
+ "movementThreshold" : 0.0,
+ "minStepLength" : 0.1,
+ "minimumStepLength" : true,
+ "maxStepDuration" : 1.7976931348623157E308,
+ "dynamicStepLength" : true,
+ "updateType" : "EVENT_DRIVEN",
+ "seeSmallWalls" : false,
+ "targetPotentialModel" : "org.vadere.simulator.models.potential.fields.PotentialFieldTargetGrid",
+ "pedestrianPotentialModel" : "org.vadere.simulator.models.potential.PotentialFieldPedestrianCompactSoftshell",
+ "obstaclePotentialModel" : "org.vadere.simulator.models.potential.PotentialFieldObstacleCompactSoftshell",
+ "submodels" : [ ]
+ },
+ "org.vadere.state.attributes.models.AttributesPotentialCompactSoftshell" : {
+ "pedPotentialIntimateSpaceWidth" : 0.45,
+ "pedPotentialPersonalSpaceWidth" : 1.2,
+ "pedPotentialHeight" : 50.0,
+ "obstPotentialWidth" : 0.8,
+ "obstPotentialHeight" : 6.0,
+ "intimateSpaceFactor" : 1.2,
+ "personalSpacePower" : 1,
+ "intimateSpacePower" : 1
+ },
+ "org.vadere.state.attributes.models.AttributesFloorField" : {
+ "createMethod" : "HIGH_ACCURACY_FAST_MARCHING",
+ "potentialFieldResolution" : 0.1,
+ "obstacleGridPenalty" : 0.1,
+ "targetAttractionStrength" : 1.0,
+ "timeCostAttributes" : {
+ "standardDeviation" : 0.7,
+ "type" : "UNIT",
+ "obstacleDensityWeight" : 3.5,
+ "pedestrianSameTargetDensityWeight" : 3.5,
+ "pedestrianOtherTargetDensityWeight" : 3.5,
+ "pedestrianWeight" : 3.5,
+ "queueWidthLoading" : 1.0,
+ "pedestrianDynamicWeight" : 6.0,
+ "loadingType" : "CONSTANT",
+ "width" : 0.2,
+ "height" : 1.0
+ }
+ }
+ },
+ "attributesSimulation" : {
+ "finishTime" : 50.0,
+ "simTimeStepLength" : 0.4,
+ "realTimeSimTimeRatio" : 0.1,
+ "writeSimulationData" : true,
+ "visualizationEnabled" : true,
+ "printFPS" : false,
+ "digitsPerCoordinate" : 2,
+ "useFixedSeed" : true,
+ "fixedSeed" : 183115877309837713,
+ "simulationSeed" : 0,
+ "useSalientBehavior" : false
+ },
+ "topography" : {
+ "attributes" : {
+ "bounds" : {
+ "x" : 0.0,
+ "y" : 0.0,
+ "width" : 10.0,
+ "height" : 10.0
+ },
+ "boundingBoxWidth" : 0.5,
+ "bounded" : true
+ },
+ "obstacles" : [ {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 4.038095238095238,
+ "y" : 3.0
+ }, {
+ "x" : 4.038095238095238,
+ "y" : 3.6
+ }, {
+ "x" : 0.5,
+ "y" : 3.6
+ }, {
+ "x" : 0.5,
+ "y" : 3.0
+ } ]
+ },
+ "id" : 4
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 9.5,
+ "y" : 3.0
+ }, {
+ "x" : 9.5,
+ "y" : 3.6
+ }, {
+ "x" : 5.961904761904762,
+ "y" : 3.6
+ }, {
+ "x" : 5.961904761904762,
+ "y" : 3.0
+ } ]
+ },
+ "id" : 5
+ }, {
+ "shape" : {
+ "type" : "POLYGON",
+ "points" : [ {
+ "x" : 8.4196748078264,
+ "y" : 6.990370356126214
+ }, {
+ "x" : 5.178391040736634,
+ "y" : 6.990370356126214
+ }, {
+ "x" : 5.178391040736634,
+ "y" : 7.010726909982895
+ }, {
+ "x" : 4.614300219392282,
+ "y" : 7.010726909982895
+ }, {
+ "x" : 4.614300219392282,
+ "y" : 6.990370356126215
+ }, {
+ "x" : 1.4356932102296667,
+ "y" : 6.990370356126215
+ }, {
+ "x" : 1.4356932102296667,
+ "y" : 6.332264397891138
+ }, {
+ "x" : 4.614300219392282,
+ "y" : 6.332264397891138
+ }, {
+ "x" : 4.614300219392282,
+ "y" : 0.5033259106661707
+ }, {
+ "x" : 5.178391040736634,
+ "y" : 0.5033259106661707
+ }, {
+ "x" : 5.178391040736634,
+ "y" : 6.4262795347818615
+ }, {
+ "x" : 8.4196748078264,
+ "y" : 6.426279534781862
+ } ]
+ },
+ "id" : 6
+ } ],
+ "measurementAreas" : [ ],
+ "stairs" : [ ],
+ "targets" : [ {
+ "id" : 2,
+ "absorbing" : true,
+ "shape" : {
+ "x" : 7.542857142857143,
+ "y" : 0.7,
+ "width" : 1.757142857142858,
+ "height" : 1.0142857142857136,
+ "type" : "RECTANGLE"
+ },
+ "waitingTime" : 0.0,
+ "waitingTimeYellowPhase" : 0.0,
+ "parallelWaiters" : 0,
+ "individualWaiting" : true,
+ "deletionDistance" : 0.1,
+ "startingWithRedLight" : false,
+ "nextSpeed" : -1.0
+ }, {
+ "id" : 3,
+ "absorbing" : true,
+ "shape" : {
+ "x" : 0.742857142857142,
+ "y" : 0.7,
+ "width" : 1.757142857142858,
+ "height" : 1.0142857142857136,
+ "type" : "RECTANGLE"
+ },
+ "waitingTime" : 0.0,
+ "waitingTimeYellowPhase" : 0.0,
+ "parallelWaiters" : 0,
+ "individualWaiting" : true,
+ "deletionDistance" : 0.1,
+ "startingWithRedLight" : false,
+ "nextSpeed" : -1.0
+ } ],
+ "absorbingAreas" : [ ],
+ "sources" : [ {
+ "id" : 1,
+ "shape" : {
+ "x" : 4.2,
+ "y" : 8.457142857142857,
+ "width" : 2.0095238095238095,
+ "height" : 0.9428571428571431,
+ "type" : "RECTANGLE"
+ },
+ "interSpawnTimeDistribution" : "org.vadere.state.scenario.ConstantDistribution",
+ "distributionParameters" : [ 20.0 ],
+ "spawnNumber" : 4,
+ "maxSpawnNumberTotal" : 4,
+ "startTime" : 0.0,
+ "endTime" : 50.0,
+ "spawnAtRandomPositions" : true,
+ "useFreeSpaceOnly" : true,
+ "targetIds" : [ 2 ],
+ "groupSizeDistribution" : [ 1.0 ],
+ "dynamicElementType" : "PEDESTRIAN"
+ } ],
+ "dynamicElements" : [ ],
+ "attributesPedestrian" : {
+ "radius" : 0.2,
+ "densityDependentSpeed" : false,
+ "speedDistributionMean" : 1.34,
+ "speedDistributionStandardDeviation" : 0.26,
+ "minimumSpeed" : 0.5,
+ "maximumSpeed" : 2.2,
+ "acceleration" : 2.0,
+ "footStepsToStore" : 4,
+ "searchRadius" : 1.0,
+ "angleCalculationType" : "USE_CENTER",
+ "targetOrientationAngleThreshold" : 45.0
+ },
+ "teleporter" : null,
+ "attributesCar" : {
+ "id" : -1,
+ "radius" : 0.2,
+ "densityDependentSpeed" : false,
+ "speedDistributionMean" : 1.34,
+ "speedDistributionStandardDeviation" : 0.26,
+ "minimumSpeed" : 0.5,
+ "maximumSpeed" : 2.2,
+ "acceleration" : 2.0,
+ "footStepsToStore" : 4,
+ "searchRadius" : 1.0,
+ "angleCalculationType" : "USE_CENTER",
+ "targetOrientationAngleThreshold" : 45.0,
+ "length" : 4.5,
+ "width" : 1.7,
+ "direction" : {
+ "x" : 1.0,
+ "y" : 0.0
+ }
+ }
+ },
+ "eventInfos" : [ ]
+ }
+}
\ No newline at end of file
diff --git a/VadereManager/testResources/testProject001/vadere.project b/VadereManager/testResources/testProject001/vadere.project
new file mode 100644
index 0000000000000000000000000000000000000000..fe15fe316e4ac3d5c6acd1ccb65c392045873e0d
--- /dev/null
+++ b/VadereManager/testResources/testProject001/vadere.project
@@ -0,0 +1 @@
+testProject001
\ No newline at end of file
diff --git a/VadereManager/testResources/testTCP b/VadereManager/testResources/testTCP
new file mode 100644
index 0000000000000000000000000000000000000000..b3e0bd841efd00a16ab3ee026a47d330eda3fd90
--- /dev/null
+++ b/VadereManager/testResources/testTCP
@@ -0,0 +1,2 @@
+cat getVersionTest | xxd -r -p | nc -p 9998 -o out.txt '127.0.0.1' 9999
+
diff --git a/VadereManager/tests/org/vadere/manager/TraCISocketTest.java b/VadereManager/tests/org/vadere/manager/TraCISocketTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..11f965b494694d8a8db45d51c8a5013ea2cf5547
--- /dev/null
+++ b/VadereManager/tests/org/vadere/manager/TraCISocketTest.java
@@ -0,0 +1,19 @@
+package org.vadere.manager;
+
+import org.junit.Test;
+
+public class TraCISocketTest {
+
+ @Test
+ public void unisgnedChar(){
+ int a = 130;
+ byte b = (byte)a;
+ byte c = (byte)(a - 256);
+
+ System.out.printf("%032X %d\n", a, a);
+ System.out.printf("%032X %d\n", b, b);
+ System.out.printf("%032X %d\n", c, c);
+ System.out.println("xxx");
+ }
+
+}
\ No newline at end of file
diff --git a/VadereManager/tests/org/vadere/manager/traci/ByteArrayOutputStreamTraCIWriterTest.java b/VadereManager/tests/org/vadere/manager/traci/ByteArrayOutputStreamTraCIWriterTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..48ab54d7661e37ba09e63c05971c18eadf42d7c6
--- /dev/null
+++ b/VadereManager/tests/org/vadere/manager/traci/ByteArrayOutputStreamTraCIWriterTest.java
@@ -0,0 +1,375 @@
+package org.vadere.manager.traci;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.vadere.manager.TraCIException;
+import org.vadere.manager.traci.sumo.LightPhase;
+import org.vadere.manager.traci.sumo.RoadMapPosition;
+import org.vadere.manager.traci.sumo.TrafficLightPhase;
+import org.vadere.manager.traci.writer.ByteArrayOutputStreamTraCIWriter;
+import org.vadere.util.geometry.Vector3D;
+import org.vadere.util.geometry.shapes.VPoint;
+
+import java.awt.*;
+import java.nio.ByteBuffer;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.stream.IntStream;
+
+import static org.hamcrest.core.IsEqual.equalTo;
+import static org.junit.Assert.assertThat;
+
+public class ByteArrayOutputStreamTraCIWriterTest {
+
+ ByteArrayOutputStreamTraCIWriter writer;
+
+ @Before
+ public void before(){
+ writer = new ByteArrayOutputStreamTraCIWriter();
+ }
+
+ @After
+ public void after(){
+ writer.rest();
+ }
+
+ @Test
+ public void getAsByteBuffer() {
+ ByteBuffer buf = writer.asByteBuffer();
+ assertThat(buf.limit(), equalTo(0));
+ }
+
+ @Test
+ public void getAsByteArray() {
+ byte[] buf = writer.asByteArray();
+ assertThat(buf.length, equalTo(0));
+
+ }
+
+ @Test
+ public void writeByte() {
+ writer.writeByte(33);
+ writer.writeByte(-33);
+ writer.writeByte(0);
+
+ byte[] buf = writer.asByteArray();
+
+ assertThat(buf.length, equalTo(3));
+ assertThat(buf[0], equalTo((byte)33));
+ assertThat(buf[1], equalTo((byte)-33));
+ assertThat(buf[2], equalTo((byte)0));
+ }
+
+
+ @Test
+ public void writeUnsignedByte() {
+ writer.writeUnsignedByte(33);
+ writer.writeUnsignedByte(200);
+ writer.writeUnsignedByte(0);
+
+ byte[] buf = writer.asByteArray();
+
+ assertThat(buf.length, equalTo(3));
+ assertThat((int)buf[0] & 0xff, equalTo(33));
+ assertThat((int)buf[1] & 0xff, equalTo(200));
+ assertThat((int)buf[2] & 0xff, equalTo(0));
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void writeUnsignedByte1() {
+ writer.writeUnsignedByte(999);
+ }
+
+ @Test
+ public void writeBytes() {
+ byte[] dataIn = new byte[]{18,19, 20};
+
+ writer.writeBytes(dataIn);
+
+ byte[] dataOut = writer.asByteArray();
+ assertThat(dataOut, equalTo(dataIn));
+ }
+
+ @Test
+ public void writeBytes1() {
+ byte[] dataIn = new byte[]{18, 19, 20, 21, 22};
+
+ writer.writeBytes(dataIn, 1, 2);
+
+ byte[] dataOut = writer.asByteArray();
+ assertThat(dataOut, equalTo(new byte[]{19, 20} ));
+
+ }
+
+ @Test
+ public void writeEmptyString(){
+ writer.writeString("");
+
+
+ ByteBuffer buf= writer.asByteBuffer();
+
+ assertThat(buf.capacity(), equalTo(4));
+ assertThat(buf.getInt(), equalTo(0));
+
+ // buf must be empty
+ checkEmpty(buf);
+ }
+
+ @Test
+ public void writeString() {
+ String str = "Hello World !";
+ int strLen = str.getBytes(StandardCharsets.US_ASCII).length;
+
+
+ writer.writeString(str);
+ ByteBuffer buf = writer.asByteBuffer();
+
+ // preceding int value holding length of string
+ assertThat(buf.capacity(), equalTo(4 + strLen));
+
+ checkString(buf, str);
+
+ // buf must be empty
+ checkEmpty(buf);
+ }
+
+ @Test
+ public void writeStringList() {
+ String s1 = "Hello World.";
+ int strLen1 = s1.getBytes(StandardCharsets.US_ASCII).length;
+ String s2 = "Hello TraCI from Vadere.";
+ int strLen2 = s2.getBytes(StandardCharsets.US_ASCII).length;
+
+ ArrayList stringList = new ArrayList<>();
+ stringList.add(s1);
+ stringList.add(s2);
+
+ writer.writeStringList(stringList);
+
+ ByteBuffer buf = writer.asByteBuffer();
+
+ assertThat(buf.capacity(), equalTo(4 + 4 + strLen1 + 4 + strLen2));
+ // number of strings
+ assertThat(buf.getInt(), equalTo(2));
+
+ // check first string
+ checkString(buf, s1);
+
+ // check second string
+ checkString(buf, s2);
+
+ // must be empty
+ checkEmpty(buf);
+ }
+
+ @Test
+ public void write2DPosition() {
+ writer.write2DPosition(new VPoint(23.456,3.3));
+ ByteBuffer buf = writer.asByteBuffer();
+
+ // id (ubyte)
+ checkIdentifier(buf.get(), TraCIDataType.POS_2D.id);
+
+ // check x, y
+ assertThat(buf.getDouble(), equalTo(23.456));
+ assertThat(buf.getDouble(), equalTo(3.3));
+
+ // buf must be empty
+ checkEmpty(buf);
+ }
+
+ @Test
+ public void write3DPosition() {
+ writer.write3DPosition(new Vector3D(3.34, 12.33, 56.8889));
+ ByteBuffer buf = writer.asByteBuffer();
+
+ // id (ubyte)
+ checkIdentifier(buf.get(), TraCIDataType.POS_3D.id);
+
+ // check x, y, z
+ assertThat(buf.getDouble(), equalTo(3.34));
+ assertThat(buf.getDouble(), equalTo(12.33));
+ assertThat(buf.getDouble(), equalTo(56.8889));
+
+ // buf must be empty
+ checkEmpty(buf);
+ }
+
+ @Test
+ public void writeRoadMapPosition() {
+
+ writer.writeRoadMapPosition(new RoadMapPosition("r001", 12.4, 3));
+ int roadIdLen = "r001".getBytes(StandardCharsets.US_ASCII).length;
+ ByteBuffer buf = writer.asByteBuffer();
+
+ // id (ubyte)
+ checkIdentifier(buf.get(), TraCIDataType.POS_ROAD_MAP.id);
+
+ // check roadId
+ checkString(buf, "r001");
+
+ // check pos
+ assertThat(buf.getDouble(), equalTo(12.4));
+
+ // check laneId (ubyte)
+ assertThat(buf.get() & 0xff, equalTo(3));
+
+ // buf must be empty
+ checkEmpty(buf);
+ }
+
+ @Test
+ public void writeLonLatPosition() {
+ writer.writeLonLatPosition(new VPoint(49.3345, 10.10453));
+ ByteBuffer buf = writer.asByteBuffer();
+
+ // id (ubyte)
+ checkIdentifier(buf.get(), TraCIDataType.POS_LON_LAT.id);
+
+ // check lon, lat
+ assertThat(buf.getDouble(), equalTo(49.3345));
+ assertThat(buf.getDouble(), equalTo(10.10453));
+
+ // buf must be empty
+ checkEmpty(buf);
+ }
+
+ @Test
+ public void writeLonLatAltPosition() {
+ writer.writeLonLatAltPosition(new Vector3D(49.33, 15.223, 12.33));
+ ByteBuffer buf = writer.asByteBuffer();
+
+ // id (ubyte)
+ checkIdentifier(buf.get(), TraCIDataType.POS_LON_LAT_ALT.id);
+
+ // check lon, lat, alt
+ assertThat(buf.getDouble(), equalTo(49.33));
+ assertThat(buf.getDouble(), equalTo(15.223));
+ assertThat(buf.getDouble(), equalTo(12.33));
+
+ // buf must be empty
+ checkEmpty(buf);
+ }
+
+ @Test(expected = TraCIException.class)
+ public void writePolygonWithError(){
+ ArrayList points = new ArrayList<>();
+ IntStream.range(0, 300).forEach( i -> points.add(new VPoint(i,i)));
+
+ writer.writePolygon(points);
+ }
+
+ @Test
+ public void writePolygon() {
+ ArrayList points = new ArrayList<>();
+ points.add(new VPoint(3.3, 4.4));
+ points.add(new VPoint(5.0, 10.0));
+ points.add(new VPoint(10.1, 1.0));
+
+ writer.writePolygon(points);
+ ByteBuffer buf = writer.asByteBuffer();
+
+ // id (ubyte)
+ checkIdentifier(buf.get(), TraCIDataType.POLYGON.id);
+
+ // check number of points (ubyte)
+ assertThat(buf.get() & 0xff, equalTo(3));
+
+ // check x,y for each point
+ assertThat(buf.getDouble(), equalTo(3.3));
+ assertThat(buf.getDouble(), equalTo(4.4));
+
+ assertThat(buf.getDouble(), equalTo(5.0));
+ assertThat(buf.getDouble(), equalTo(10.0));
+
+ assertThat(buf.getDouble(), equalTo(10.1));
+ assertThat(buf.getDouble(), equalTo(1.0));
+
+ // buf must be empty
+ checkEmpty(buf);
+ }
+
+
+ @Test(expected = TraCIException.class)
+ public void writeTrafficLightPhaseListError(){
+ ArrayList phases = new ArrayList<>();
+ IntStream.range(0, 256)
+ .forEach( i -> phases.add(
+ new TrafficLightPhase("", "",
+ LightPhase.GREEN)));
+ writer.writeTrafficLightPhaseList(phases);
+ }
+
+ @Test
+ public void writeTrafficLightPhaseList() {
+ ArrayList phases = new ArrayList<>();
+
+ phases.add(new TrafficLightPhase("road001", "road002",
+ LightPhase.GREEN));
+ writer.writeTrafficLightPhaseList(phases);
+ ByteBuffer buf = writer.asByteBuffer();
+
+ // id (ubyte)
+ checkIdentifier(buf.get(), TraCIDataType.TRAFFIC_LIGHT_PHASE_LIST.id);
+
+ // check number of phases
+ assertThat(buf.get() & 0xff, equalTo(1));
+
+ // check precRoad and succRoad
+ checkString(buf, "road001");
+ checkString(buf, "road002");
+
+ // check phase
+ assertThat(buf.get() & 0xff, equalTo(LightPhase.GREEN.id));
+
+ // buf must be empty
+ checkEmpty(buf);
+ }
+
+ @Test
+ public void writeColor() {
+ writer.writeColor(new Color(10, 20, 40, 50));
+ ByteBuffer buf = writer.asByteBuffer();
+
+ // id (ubyte)
+ checkIdentifier(buf.get(), TraCIDataType.COLOR.id);
+
+ // check color rgba
+ assertThat(buf.get() & 0xff, equalTo(10) );
+ assertThat(buf.get() & 0xff, equalTo(20) );
+ assertThat(buf.get() & 0xff, equalTo(40) );
+ assertThat(buf.get() & 0xff, equalTo(50) );
+
+ // buf must be empty
+ checkEmpty(buf);
+ }
+
+
+ private void checkString(ByteBuffer buf, String str){
+
+ int byteLen = str.getBytes(StandardCharsets.US_ASCII).length;
+ byte[] matchWith = str.getBytes(StandardCharsets.US_ASCII);
+
+ // string length
+ assertThat("String length wrong", buf.getInt(), equalTo(byteLen));
+
+ byte[] actual = getBytes(buf, byteLen);
+ assertThat("String bytes do not match", actual, equalTo(matchWith));
+ }
+
+ private byte[] getBytes(ByteBuffer buf, int len){
+ byte[] bytes = new byte[len];
+ buf.get(bytes, 0, bytes.length);
+ return bytes;
+ }
+
+
+ private void checkIdentifier(byte actual, int matchWith){
+ assertThat("Wrong Identifer", (int)actual & 0xff, equalTo(matchWith));
+ }
+
+ private void checkEmpty(ByteBuffer buf){
+ assertThat("Buffer must be empty at this point",buf.hasRemaining(), equalTo(false));
+ }
+}
\ No newline at end of file
diff --git a/VadereManager/tests/org/vadere/manager/traci/TraCIReaderTest.java b/VadereManager/tests/org/vadere/manager/traci/TraCIReaderTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..bc2bf5205bd2f1fa0a7f7b17932993f2d59c2769
--- /dev/null
+++ b/VadereManager/tests/org/vadere/manager/traci/TraCIReaderTest.java
@@ -0,0 +1,240 @@
+package org.vadere.manager.traci;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.vadere.manager.traci.reader.TraCIByteBuffer;
+import org.vadere.manager.traci.sumo.LightPhase;
+import org.vadere.manager.traci.sumo.RoadMapPosition;
+import org.vadere.manager.traci.sumo.TrafficLightPhase;
+import org.vadere.manager.traci.writer.ByteArrayOutputStreamTraCIWriter;
+import org.vadere.util.geometry.GeometryUtils;
+import org.vadere.util.geometry.Vector3D;
+import org.vadere.util.geometry.shapes.VPoint;
+import org.vadere.util.geometry.shapes.VPolygon;
+
+import java.awt.*;
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.hamcrest.core.IsEqual.equalTo;
+import static org.junit.Assert.assertThat;
+
+public class TraCIReaderTest {
+
+ ByteArrayOutputStreamTraCIWriter writer;
+ TraCIByteBuffer reader;
+
+ @Before
+ public void before(){
+ writer = new ByteArrayOutputStreamTraCIWriter();
+ }
+
+ @After
+ public void after(){
+ writer.rest();
+ }
+
+ private void createReader(){
+ reader = TraCIByteBuffer.wrap(writer.asByteArray());
+ }
+
+ private void checkEmpty(){
+ assertThat("TraCIByteBuffer must be empty at this point", reader.hasRemaining(), equalTo(false));
+ }
+
+ private void checkIdentifier( int matchWith){
+ int identifier = reader.readUnsignedByte();
+ assertThat("Wrong Identifer", identifier, equalTo(matchWith));
+ }
+
+ @Test
+ public void readByte() {
+ writer.writeByte(33);
+ createReader();
+
+ assertThat(reader.readByte(), equalTo((byte)33));
+
+ // buf must be empty
+ checkEmpty();
+ }
+
+ @Test
+ public void readBytes() {
+ byte[] data = new byte[]{22, 33, 44};
+ writer.writeBytes(data);
+ createReader();
+
+ assertThat(reader.readBytes(3), equalTo(data));
+
+ // buf must be empty
+ checkEmpty();
+ }
+
+ @Test
+ public void readInt() {
+ writer.writeInt(3);
+ writer.writeInt(99);
+ createReader();
+
+ assertThat(reader.readInt(), equalTo(3));
+ assertThat(reader.readInt(), equalTo(99));
+
+ // buf must be empty
+ checkEmpty();
+ }
+
+ @Test
+ public void readDouble() {
+ writer.writeDouble(3.1415);
+ createReader();
+
+ assertThat(reader.readDouble(), equalTo(3.1415));
+
+ // buf must be empty
+ checkEmpty();
+ }
+
+ @Test
+ public void readString() {
+ writer.writeString("Hello World from Vadere");
+ createReader();
+
+ assertThat(reader.readString(), equalTo("Hello World from Vadere"));
+
+ // buf must be empty
+ checkEmpty();
+ }
+
+ @Test
+ public void readStringList() {
+ List strList = new ArrayList<>();
+ strList.add("Hello World!");
+ strList.add("Goodbye World.");
+ writer.writeStringList(strList);
+ createReader();
+
+ List strListOut = reader.readStringList();
+ assertThat(strListOut, equalTo(strList));
+
+ // buf must be empty
+ checkEmpty();
+ }
+
+ @Test
+ public void read2DPosition() {
+ writer.write2DPosition(new VPoint(22.3, 4.0));
+ createReader();
+
+ checkIdentifier(TraCIDataType.POS_2D.id);
+ VPoint p = reader.read2DPosition();
+ assertThat(p.x, equalTo(22.3));
+ assertThat(p.y, equalTo(4.0));
+
+ // buf must be empty
+ checkEmpty();
+ }
+
+ @Test
+ public void read3DPosition() {
+ writer.write3DPosition(new Vector3D(11.1, 22.2, 33.3));
+ createReader();
+
+ checkIdentifier(TraCIDataType.POS_3D.id);
+ Vector3D vec = reader.read3DPosition();
+ assertThat(vec.x, equalTo(11.1));
+ assertThat(vec.y, equalTo(22.2));
+ assertThat(vec.z, equalTo(33.3));
+
+ // buf must be empty
+ checkEmpty();
+ }
+
+ @Test
+ public void readRoadMapPosition() {
+ writer.writeRoadMapPosition(new RoadMapPosition("road_001", 12.5, 0));
+ createReader();
+
+ checkIdentifier(TraCIDataType.POS_ROAD_MAP.id);
+ RoadMapPosition roadMapPosition = reader.readRoadMapPosition();
+ assertThat(roadMapPosition.getRoadId(), equalTo("road_001"));
+ assertThat(roadMapPosition.getPos(), equalTo(12.5));
+ assertThat(roadMapPosition.getLaneId(), equalTo(0));
+
+ // buf must be empty
+ checkEmpty();
+ }
+
+ @Test
+ public void readLonLatPosition() {
+ writer.writeLonLatPosition(new VPoint(23.3, 11.9));
+ createReader();
+
+ checkIdentifier(TraCIDataType.POS_LON_LAT.id);
+ VPoint lonLat = reader.readLonLatPosition();
+ assertThat(lonLat.x, equalTo(23.3));
+ assertThat(lonLat.y, equalTo(11.9));
+
+ // buf must be empty
+ checkEmpty();
+ }
+
+ @Test
+ public void readLonLatAltPosition() {
+ writer.writeLonLatAltPosition(new Vector3D(34.5, 34.0, 11.3436));
+ createReader();
+
+ checkIdentifier(TraCIDataType.POS_LON_LAT_ALT.id);
+ Vector3D lonlatalt = reader.readLonLatAltPosition();
+ assertThat(lonlatalt.x, equalTo(34.5));
+ assertThat(lonlatalt.y, equalTo(34.0));
+ assertThat(lonlatalt.z, equalTo(11.3436));
+
+ // buf must be empty
+ checkEmpty();
+ }
+
+ @Test
+ public void readPolygon() {
+ VPoint[] points = new VPoint[]{new VPoint(4.4, 2.4), new VPoint(11.3, 34.0)};
+ writer.writePolygon(points);
+ createReader();
+
+ VPolygon match = GeometryUtils.polygonFromPoints2D(points);
+ checkIdentifier(TraCIDataType.POLYGON.id);
+ VPolygon actual = reader.readPolygon();
+ assertThat(actual, equalTo(match));
+
+ // buf must be empty
+ checkEmpty();
+ }
+
+ @Test
+ public void readTrafficLightPhaseList() {
+ List phases = new ArrayList<>();
+ phases.add(new TrafficLightPhase("r001", "r002", LightPhase.OFF_BLINK));
+ phases.add(new TrafficLightPhase("r004", "r099", LightPhase.RED));
+ writer.writeTrafficLightPhaseList(phases);
+ createReader();
+
+ checkIdentifier(TraCIDataType.TRAFFIC_LIGHT_PHASE_LIST.id);
+ List actualPhases = reader.readTrafficLightPhaseList();
+ assertThat(actualPhases, equalTo(phases));
+
+ // buf must be empty
+ checkEmpty();
+ }
+
+ @Test
+ public void readColor() {
+ Color color = new Color(3,4,5,9);
+ writer.writeColor(color);
+ createReader();
+
+ checkIdentifier(TraCIDataType.COLOR.id);
+ assertThat(reader.readColor(), equalTo(color));
+
+ // buf must be empty
+ checkEmpty();
+ }
+}
\ No newline at end of file
diff --git a/VadereManager/tests/org/vadere/manager/traci/respons/StatusResponseTest.java b/VadereManager/tests/org/vadere/manager/traci/respons/StatusResponseTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..db39e617b5b8b0557ccf09d4439e9e7da2147131
--- /dev/null
+++ b/VadereManager/tests/org/vadere/manager/traci/respons/StatusResponseTest.java
@@ -0,0 +1,79 @@
+package org.vadere.manager.traci.respons;
+
+import org.junit.Test;
+import org.vadere.manager.traci.TraCICmd;
+
+import java.nio.ByteBuffer;
+
+import static org.hamcrest.core.IsEqual.equalTo;
+import static org.hamcrest.core.IsNot.not;
+import static org.junit.Assert.assertThat;
+
+public class StatusResponseTest {
+
+
+
+
+ @Test
+ public void createFromByteBuffer() {
+ //length removed
+ byte[] data = new byte[]{(byte)TraCICmd.GET_VERSION.id, (byte)TraCIStatusResponse.OK.id, 0, 0, 0, 0};
+
+ StatusResponse r = StatusResponse.createFromByteBuffer(ByteBuffer.wrap(data));
+
+ assertThat(r.getCmdIdentifier(), equalTo(TraCICmd.GET_VERSION));
+ assertThat(r.getResponse(), equalTo(TraCIStatusResponse.OK));
+ assertThat(r.getDescription(), equalTo(""));
+ }
+
+ @Test
+ public void getCmdIdentifier() {
+ StatusResponse r = new StatusResponse(TraCICmd.GET_EDGE_VALUE, TraCIStatusResponse.ERR, "Test");
+ assertThat(r.getCmdIdentifier(), equalTo(TraCICmd.GET_EDGE_VALUE));
+ }
+
+ @Test
+ public void setCmdIdentifier() {
+ StatusResponse r = new StatusResponse(TraCICmd.GET_EDGE_VALUE, TraCIStatusResponse.ERR, "Test");
+ r.setCmdIdentifier(TraCICmd.SEND_FILE);
+ assertThat(r.getCmdIdentifier(), equalTo(TraCICmd.SEND_FILE));
+ }
+
+ @Test
+ public void getResponse() {
+ StatusResponse r = new StatusResponse(TraCICmd.GET_EDGE_VALUE, TraCIStatusResponse.ERR, "Test");
+ assertThat(r.getResponse(), equalTo(TraCIStatusResponse.ERR));
+ }
+
+ @Test
+ public void setResponse() {
+ StatusResponse r = new StatusResponse(TraCICmd.GET_EDGE_VALUE, TraCIStatusResponse.ERR, "Test");
+ r.setResponse(TraCIStatusResponse.NOT_IMPLEMENTED);
+ assertThat(r.getResponse(), equalTo(TraCIStatusResponse.NOT_IMPLEMENTED));
+ }
+
+ @Test
+ public void getDescription() {
+ StatusResponse r = new StatusResponse(TraCICmd.GET_EDGE_VALUE, TraCIStatusResponse.ERR, "Test");
+ assertThat(r.getDescription(), equalTo("Test"));
+ }
+
+ @Test
+ public void setDescription() {
+ StatusResponse r = new StatusResponse(TraCICmd.GET_EDGE_VALUE, TraCIStatusResponse.ERR, "Test");
+ r.setDescription("Test2");
+ assertThat(r.getDescription(), equalTo("Test2"));
+ }
+
+ @Test
+ public void equals1() {
+ StatusResponse r1 = new StatusResponse(TraCICmd.GET_EDGE_VALUE, TraCIStatusResponse.ERR, "Test");
+ StatusResponse r2 = new StatusResponse(TraCICmd.GET_EDGE_VALUE, TraCIStatusResponse.ERR, "Test");
+ StatusResponse r3 = new StatusResponse(TraCICmd.GET_EDGE_VALUE, TraCIStatusResponse.OK, "Test");
+
+ assertThat(r1, equalTo(r2));
+ assertThat(r1, not(equalTo(r3)));
+ assertThat(r2, not(equalTo(r3)));
+ }
+
+}
\ No newline at end of file
diff --git a/VadereManager/tests/org/vadere/manager/traci/respons/TraCIGetResponseTest.java b/VadereManager/tests/org/vadere/manager/traci/respons/TraCIGetResponseTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..2aac62f02d19228518a1a4fb5d88fa1f2d827caf
--- /dev/null
+++ b/VadereManager/tests/org/vadere/manager/traci/respons/TraCIGetResponseTest.java
@@ -0,0 +1,31 @@
+package org.vadere.manager.traci.respons;
+
+import org.junit.Test;
+import org.vadere.manager.traci.commandHandler.variables.PersonVar;
+import org.vadere.manager.traci.TraCICmd;
+import org.vadere.manager.traci.TraCIDataType;
+import org.vadere.manager.traci.reader.TraCICommandBuffer;
+
+import static org.hamcrest.core.IsEqual.equalTo;
+import static org.junit.Assert.assertThat;
+
+public class TraCIGetResponseTest {
+
+
+ @Test
+ public void createFromBuffer(){
+ byte[] data = new byte[]{(byte) PersonVar.COUNT.id, 0,0,0,2, 65, 65, (byte)TraCIDataType.INTEGER.id, 0,0,0,78};
+ TraCIGetResponse response = new TraCIGetResponse(
+ new StatusResponse(TraCICmd.GET_PERSON_VALUE, TraCIStatusResponse.OK, ""),
+ TraCICmd.RESPONSE_GET_PERSON_VALUE,
+ TraCICommandBuffer.wrap(data)
+ );
+
+ assertThat(response.getStatusResponse(), equalTo(new StatusResponse(TraCICmd.GET_PERSON_VALUE, TraCIStatusResponse.OK, "")));
+ assertThat(response.getResponseIdentifier(), equalTo(TraCICmd.RESPONSE_GET_PERSON_VALUE));
+ assertThat(response.getElementIdentifier(), equalTo("AA"));
+ assertThat(response.getResponseData(), equalTo(78));
+ assertThat(response.getResponseDataType(), equalTo(TraCIDataType.INTEGER));
+ }
+
+}
\ No newline at end of file
diff --git a/VadereManager/tests/org/vadere/manager/traci/respons/TraCIGetVersionResponseTest.java b/VadereManager/tests/org/vadere/manager/traci/respons/TraCIGetVersionResponseTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..98cfcb6c5cbe0e8f0e9df65da7cdb0062bbefaa3
--- /dev/null
+++ b/VadereManager/tests/org/vadere/manager/traci/respons/TraCIGetVersionResponseTest.java
@@ -0,0 +1,27 @@
+package org.vadere.manager.traci.respons;
+
+import org.junit.Test;
+import org.vadere.manager.traci.TraCICmd;
+import org.vadere.manager.traci.reader.TraCICommandBuffer;
+
+import static org.hamcrest.core.IsEqual.equalTo;
+import static org.junit.Assert.assertThat;
+
+public class TraCIGetVersionResponseTest {
+
+
+ @Test
+ public void createFromBuffer(){
+ byte[] data = new byte[]{0,0,0,34, 0,0,0,2, 65, 65};
+ TraCIGetVersionResponse response = new TraCIGetVersionResponse(
+ new StatusResponse(TraCICmd.GET_VERSION, TraCIStatusResponse.OK, ""),
+ TraCICommandBuffer.wrap(data)
+ );
+
+ assertThat(response.getStatusResponse(), equalTo(new StatusResponse(TraCICmd.GET_VERSION, TraCIStatusResponse.OK, "")));
+ assertThat(response.getResponseIdentifier(), equalTo(TraCICmd.GET_VERSION));
+ assertThat(response.getVersionString(), equalTo("AA"));
+ assertThat(response.getVersionId(), equalTo(34));
+ }
+
+}
\ No newline at end of file
diff --git a/VadereModelCalibration/TestOSMGroup_calibration/scenarios/groupBaseScenario.scenario b/VadereModelCalibration/TestOSMGroup_calibration/scenarios/groupBaseScenario.scenario
index 36f7ee5ab53bed43446017e8b916c4a778c4ff2a..e3a57c79a8c0f3034f38c905c88fed2a8e4b5ccf 100644
--- a/VadereModelCalibration/TestOSMGroup_calibration/scenarios/groupBaseScenario.scenario
+++ b/VadereModelCalibration/TestOSMGroup_calibration/scenarios/groupBaseScenario.scenario
@@ -1,8 +1,7 @@
{
"name" : "groupBaseScenario.scenario",
"description" : "",
- "release" : "0.8",
- "commithash" : "warning: no commit hash",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -127,81 +126,82 @@
"id" : 30,
"attributesType" : "org.vadere.state.attributes.processor.AttributesFundamentalDiagramCProcessor",
"attributes" : {
- "pedestrianVelocityProcessorId" : 16,
- "measurementAreaId" : 1
+ "measurementAreaId" : 1,
+ "pedestrianVelocityProcessorId" : 16
}
}, {
"type" : "org.vadere.simulator.projects.dataprocessing.processor.FundamentalDiagramDProcessor",
"id" : 31,
"attributesType" : "org.vadere.state.attributes.processor.AttributesFundamentalDiagramDProcessor",
"attributes" : {
- "pedestrianVelocityProcessorId" : 16,
"measurementAreaId" : 1,
- "voronoiMeasurementAreaId" : 1
+ "voronoiMeasurementAreaId" : 1,
+ "pedestrianVelocityProcessorId" : 16
}
}, {
"type" : "org.vadere.simulator.projects.dataprocessing.processor.FundamentalDiagramEProcessor",
"id" : 32,
"attributesType" : "org.vadere.state.attributes.processor.AttributesFundamentalDiagramEProcessor",
"attributes" : {
- "pedestrianVelocityProcessorId" : 16,
"measurementAreaId" : 1,
- "voronoiMeasurementAreaId" : 1
+ "voronoiMeasurementAreaId" : 1,
+ "pedestrianVelocityProcessorId" : 16
}
}, {
"type" : "org.vadere.simulator.projects.dataprocessing.processor.FundamentalDiagramCProcessor",
"id" : 50,
"attributesType" : "org.vadere.state.attributes.processor.AttributesFundamentalDiagramCProcessor",
"attributes" : {
- "pedestrianVelocityProcessorId" : 16,
- "measurementAreaId" : 2
+ "measurementAreaId" : 2,
+ "pedestrianVelocityProcessorId" : 16
}
}, {
"type" : "org.vadere.simulator.projects.dataprocessing.processor.FundamentalDiagramDProcessor",
"id" : 51,
"attributesType" : "org.vadere.state.attributes.processor.AttributesFundamentalDiagramDProcessor",
"attributes" : {
- "pedestrianVelocityProcessorId" : 16,
"measurementAreaId" : 2,
- "voronoiMeasurementAreaId" : 2
+ "voronoiMeasurementAreaId" : 2,
+ "pedestrianVelocityProcessorId" : 16
}
}, {
"type" : "org.vadere.simulator.projects.dataprocessing.processor.FundamentalDiagramDProcessor",
"id" : 71,
"attributesType" : "org.vadere.state.attributes.processor.AttributesFundamentalDiagramDProcessor",
"attributes" : {
- "pedestrianVelocityProcessorId" : 16,
"measurementAreaId" : 3,
- "voronoiMeasurementAreaId" : 3
+ "voronoiMeasurementAreaId" : 3,
+ "pedestrianVelocityProcessorId" : 16
}
}, {
"type" : "org.vadere.simulator.projects.dataprocessing.processor.FundamentalDiagramEProcessor",
"id" : 52,
"attributesType" : "org.vadere.state.attributes.processor.AttributesFundamentalDiagramEProcessor",
"attributes" : {
- "pedestrianVelocityProcessorId" : 16,
"measurementAreaId" : 2,
- "voronoiMeasurementAreaId" : 2
+ "voronoiMeasurementAreaId" : 2,
+ "pedestrianVelocityProcessorId" : 16
}
}, {
"type" : "org.vadere.simulator.projects.dataprocessing.processor.FundamentalDiagramCProcessor",
"id" : 70,
"attributesType" : "org.vadere.state.attributes.processor.AttributesFundamentalDiagramCProcessor",
"attributes" : {
- "pedestrianVelocityProcessorId" : 16,
- "measurementAreaId" : 3
+ "measurementAreaId" : 3,
+ "pedestrianVelocityProcessorId" : 16
}
}, {
"type" : "org.vadere.simulator.projects.dataprocessing.processor.FundamentalDiagramEProcessor",
"id" : 72,
"attributesType" : "org.vadere.state.attributes.processor.AttributesFundamentalDiagramEProcessor",
"attributes" : {
- "pedestrianVelocityProcessorId" : 16,
"measurementAreaId" : 3,
- "voronoiMeasurementAreaId" : 3
+ "voronoiMeasurementAreaId" : 3,
+ "pedestrianVelocityProcessorId" : 16
}
} ],
- "isTimestamped" : true
+ "isTimestamped" : true,
+ "isWriteMetaData" : false
},
"scenario" : {
"mainModel" : "org.vadere.simulator.models.osm.OptimalStepsModel",
@@ -211,6 +211,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 2.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -220,7 +222,9 @@
"pedestrianWeight" : 3.5,
"queueWidthLoading" : 1.0,
"pedestrianDynamicWeight" : 6.0,
- "loadingType" : "CONSTANT"
+ "loadingType" : "CONSTANT",
+ "width" : 0.2,
+ "height" : 1.0
}
},
"org.vadere.state.attributes.models.AttributesOSM" : {
@@ -269,27 +273,9 @@
"digitsPerCoordinate" : 2,
"useFixedSeed" : true,
"fixedSeed" : 1,
- "simulationSeed" : 1
+ "simulationSeed" : 1,
+ "useSalientBehavior" : false
},
- "eventInfos" : [ {
- "eventTimeframe" : {
- "startTime" : 0.0,
- "endTime" : 120.0,
- "repeat" : false,
- "waitTimeBetweenRepetition" : 0.0
- },
- "events" : [ {
- "type" : "WaitInAreaEvent",
- "targets" : [ ],
- "area" : {
- "x" : 45.5,
- "y" : 0.0,
- "width" : 5.0,
- "height" : 10.0,
- "type" : "RECTANGLE"
- }
- } ]
- } ],
"topography" : {
"attributes" : {
"bounds" : {
@@ -302,6 +288,34 @@
"bounded" : true
},
"obstacles" : [ ],
+ "measurementAreas" : [ {
+ "shape" : {
+ "x" : 35.0,
+ "y" : 0.5,
+ "width" : 2.0,
+ "height" : 4.0,
+ "type" : "RECTANGLE"
+ },
+ "id" : 1
+ }, {
+ "shape" : {
+ "x" : 50.0,
+ "y" : 0.5,
+ "width" : 2.0,
+ "height" : 4.0,
+ "type" : "RECTANGLE"
+ },
+ "id" : 2
+ }, {
+ "shape" : {
+ "x" : 70.0,
+ "y" : 0.5,
+ "width" : 2.0,
+ "height" : 4.0,
+ "type" : "RECTANGLE"
+ },
+ "id" : 3
+ } ],
"stairs" : [ ],
"targets" : [ {
"id" : 1,
@@ -351,38 +365,33 @@
"speedDistributionStandardDeviation" : 0.26,
"minimumSpeed" : 0.5,
"maximumSpeed" : 2.2,
- "acceleration" : 2.0
+ "acceleration" : 2.0,
+ "footStepsToStore" : 4,
+ "searchRadius" : 1.0,
+ "angleCalculationType" : "USE_CENTER",
+ "targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : null,
- "measurementAreas" : [ {
- "shape" : {
- "x" : 35.0,
- "y" : 0.5,
- "width" : 2.0,
- "height" : 4.0,
- "type" : "RECTANGLE"
- },
- "id" : 1
- }, {
- "shape" : {
- "x" : 50.0,
- "y" : 0.5,
- "width" : 2.0,
- "height" : 4.0,
- "type" : "RECTANGLE"
- },
- "id" : 2
- }, {
- "shape" : {
- "x" : 70.0,
- "y" : 0.5,
- "width" : 2.0,
- "height" : 4.0,
+ "attributesCar" : null
+ },
+ "eventInfos" : [ {
+ "eventTimeframe" : {
+ "startTime" : 0.0,
+ "endTime" : 120.0,
+ "repeat" : false,
+ "waitTimeBetweenRepetition" : 0.0
+ },
+ "events" : [ {
+ "type" : "WaitInAreaEvent",
+ "targets" : [ ],
+ "area" : {
+ "x" : 45.5,
+ "y" : 0.0,
+ "width" : 5.0,
+ "height" : 10.0,
"type" : "RECTANGLE"
- },
- "id" : 3
+ }
} ]
- }
+ } ]
}
}
\ No newline at end of file
diff --git a/VadereModelCalibration/TestOSMGroup_calibration/scenarios/group_OSM_CGM_density_flow_2group.scenario b/VadereModelCalibration/TestOSMGroup_calibration/scenarios/group_OSM_CGM_density_flow_2group.scenario
index 4e4722f685892f2730135fa6d89c3a2912a82af4..112116501e91af176da534ec645098ef6ddc1e0b 100644
--- a/VadereModelCalibration/TestOSMGroup_calibration/scenarios/group_OSM_CGM_density_flow_2group.scenario
+++ b/VadereModelCalibration/TestOSMGroup_calibration/scenarios/group_OSM_CGM_density_flow_2group.scenario
@@ -1,8 +1,7 @@
{
"name" : "group_OSM_CGM_density_flow_2group",
"description" : "",
- "release" : "0.8",
- "commithash" : "warning: no commit hash",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -40,7 +39,8 @@
"type" : "org.vadere.simulator.projects.dataprocessing.processor.PedestrianGroupSizeProcessor",
"id" : 6
} ],
- "isTimestamped" : true
+ "isTimestamped" : true,
+ "isWriteMetaData" : false
},
"scenario" : {
"mainModel" : "org.vadere.simulator.models.osm.OptimalStepsModel",
@@ -50,6 +50,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -59,7 +61,9 @@
"pedestrianWeight" : 3.5,
"queueWidthLoading" : 1.0,
"pedestrianDynamicWeight" : 6.0,
- "loadingType" : "CONSTANT"
+ "loadingType" : "CONSTANT",
+ "width" : 0.2,
+ "height" : 1.0
}
},
"org.vadere.state.attributes.models.AttributesOSM" : {
@@ -108,9 +112,9 @@
"digitsPerCoordinate" : 2,
"useFixedSeed" : true,
"fixedSeed" : -8686918998450722109,
- "simulationSeed" : 0
+ "simulationSeed" : 0,
+ "useSalientBehavior" : false
},
- "eventInfos" : [ ],
"topography" : {
"attributes" : {
"bounds" : {
@@ -153,6 +157,7 @@
},
"id" : 4
} ],
+ "measurementAreas" : [ ],
"stairs" : [ ],
"targets" : [ {
"id" : 2,
@@ -220,25 +225,15 @@
"speedDistributionStandardDeviation" : 0.26,
"minimumSpeed" : 0.5,
"maximumSpeed" : 2.2,
- "acceleration" : 2.0
+ "acceleration" : 2.0,
+ "footStepsToStore" : 4,
+ "searchRadius" : 1.0,
+ "angleCalculationType" : "USE_CENTER",
+ "targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.5,
- "maximumSpeed" : 2.2,
- "acceleration" : 2.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
- }
+ "attributesCar" : null
+ },
+ "eventInfos" : [ ]
}
}
\ No newline at end of file
diff --git a/VadereModelCalibration/TestOSMGroup_calibration/scenarios/group_OSM_CGM_density_flow_2group_sparse.scenario b/VadereModelCalibration/TestOSMGroup_calibration/scenarios/group_OSM_CGM_density_flow_2group_sparse.scenario
index ac413146113ea6df0e2c1d6db7579326d1ddc4a6..220b46959fc479ef9bc042a9ae123908f336fbcd 100644
--- a/VadereModelCalibration/TestOSMGroup_calibration/scenarios/group_OSM_CGM_density_flow_2group_sparse.scenario
+++ b/VadereModelCalibration/TestOSMGroup_calibration/scenarios/group_OSM_CGM_density_flow_2group_sparse.scenario
@@ -1,8 +1,7 @@
{
"name" : "group_OSM_CGM_density_flow_2group_sparse",
"description" : "",
- "release" : "0.8",
- "commithash" : "warning: no commit hash",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -40,7 +39,8 @@
"type" : "org.vadere.simulator.projects.dataprocessing.processor.PedestrianGroupSizeProcessor",
"id" : 6
} ],
- "isTimestamped" : true
+ "isTimestamped" : true,
+ "isWriteMetaData" : false
},
"scenario" : {
"mainModel" : "org.vadere.simulator.models.osm.OptimalStepsModel",
@@ -50,6 +50,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -59,25 +61,27 @@
"pedestrianWeight" : 3.5,
"queueWidthLoading" : 1.0,
"pedestrianDynamicWeight" : 6.0,
- "loadingType" : "CONSTANT"
+ "loadingType" : "CONSTANT",
+ "width" : 0.2,
+ "height" : 1.0
}
},
"org.vadere.state.attributes.models.AttributesOSM" : {
"stepCircleResolution" : 4,
"numberOfCircles" : 1,
+ "optimizationType" : "NELDER_MEAD",
"varyStepDirection" : true,
+ "movementType" : "ARBITRARY",
"stepLengthIntercept" : 0.4625,
"stepLengthSlopeSpeed" : 0.2345,
"stepLengthSD" : 0.036,
"movementThreshold" : 0.0,
"minStepLength" : 0.17,
+ "minimumStepLength" : true,
"maxStepDuration" : 3.0,
- "optimizationType" : "NELDER_MEAD",
- "movementType" : "ARBITRARY",
"dynamicStepLength" : true,
"updateType" : "EVENT_DRIVEN",
"seeSmallWalls" : true,
- "minimumStepLength" : true,
"targetPotentialModel" : "org.vadere.simulator.models.potential.fields.PotentialFieldTargetGrid",
"pedestrianPotentialModel" : "org.vadere.simulator.models.potential.PotentialFieldPedestrianCompactSoftshell",
"obstaclePotentialModel" : "org.vadere.simulator.models.potential.PotentialFieldObstacleCompactSoftshell",
@@ -108,9 +112,9 @@
"digitsPerCoordinate" : 2,
"useFixedSeed" : true,
"fixedSeed" : -8686918998450722109,
- "simulationSeed" : 0
+ "simulationSeed" : 0,
+ "useSalientBehavior" : false
},
- "eventInfos" : [ ],
"topography" : {
"attributes" : {
"bounds" : {
@@ -153,6 +157,7 @@
},
"id" : 4
} ],
+ "measurementAreas" : [ ],
"stairs" : [ ],
"targets" : [ {
"id" : 2,
@@ -181,6 +186,7 @@
"startingWithRedLight" : false,
"nextSpeed" : -1.0
} ],
+ "absorbingAreas" : [ ],
"sources" : [ {
"id" : 1,
"shape" : {
@@ -219,25 +225,15 @@
"speedDistributionStandardDeviation" : 0.26,
"minimumSpeed" : 0.5,
"maximumSpeed" : 2.2,
- "acceleration" : 2.0
+ "acceleration" : 2.0,
+ "footStepsToStore" : 4,
+ "searchRadius" : 1.0,
+ "angleCalculationType" : "USE_CENTER",
+ "targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.5,
- "maximumSpeed" : 2.2,
- "acceleration" : 2.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
- }
+ "attributesCar" : null
+ },
+ "eventInfos" : [ ]
}
-}
+}
\ No newline at end of file
diff --git a/VadereModelCalibration/TestOSMGroup_calibration/scenarios/group_OSM_CGM_density_flow_3group.scenario b/VadereModelCalibration/TestOSMGroup_calibration/scenarios/group_OSM_CGM_density_flow_3group.scenario
index eba8c03fdf205206f49e2e8ab21e961d067d76e8..f092ba5817a5957bbd794ecf28f51283518843d9 100644
--- a/VadereModelCalibration/TestOSMGroup_calibration/scenarios/group_OSM_CGM_density_flow_3group.scenario
+++ b/VadereModelCalibration/TestOSMGroup_calibration/scenarios/group_OSM_CGM_density_flow_3group.scenario
@@ -1,8 +1,7 @@
{
"name" : "group_OSM_CGM_density_flow_3group",
"description" : "",
- "release" : "0.8",
- "commithash" : "warning: no commit hash",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -40,7 +39,8 @@
"type" : "org.vadere.simulator.projects.dataprocessing.processor.PedestrianGroupSizeProcessor",
"id" : 6
} ],
- "isTimestamped" : true
+ "isTimestamped" : true,
+ "isWriteMetaData" : false
},
"scenario" : {
"mainModel" : "org.vadere.simulator.models.osm.OptimalStepsModel",
@@ -50,6 +50,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -59,7 +61,9 @@
"pedestrianWeight" : 3.5,
"queueWidthLoading" : 1.0,
"pedestrianDynamicWeight" : 6.0,
- "loadingType" : "CONSTANT"
+ "loadingType" : "CONSTANT",
+ "width" : 0.2,
+ "height" : 1.0
}
},
"org.vadere.state.attributes.models.AttributesOSM" : {
@@ -108,9 +112,9 @@
"digitsPerCoordinate" : 2,
"useFixedSeed" : true,
"fixedSeed" : -8686918998450722109,
- "simulationSeed" : 0
+ "simulationSeed" : 0,
+ "useSalientBehavior" : false
},
- "eventInfos" : [ ],
"topography" : {
"attributes" : {
"bounds" : {
@@ -153,6 +157,7 @@
},
"id" : 4
} ],
+ "measurementAreas" : [ ],
"stairs" : [ ],
"targets" : [ {
"id" : 2,
@@ -220,25 +225,15 @@
"speedDistributionStandardDeviation" : 0.26,
"minimumSpeed" : 0.5,
"maximumSpeed" : 2.2,
- "acceleration" : 2.0
+ "acceleration" : 2.0,
+ "footStepsToStore" : 4,
+ "searchRadius" : 1.0,
+ "angleCalculationType" : "USE_CENTER",
+ "targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.5,
- "maximumSpeed" : 2.2,
- "acceleration" : 2.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
- }
+ "attributesCar" : null
+ },
+ "eventInfos" : [ ]
}
}
\ No newline at end of file
diff --git a/VadereModelCalibration/TestOSMGroup_calibration/scenarios/group_OSM_CGM_density_flow_3group_sparse.scenario b/VadereModelCalibration/TestOSMGroup_calibration/scenarios/group_OSM_CGM_density_flow_3group_sparse.scenario
index f0ab7b2f3b829444301dc192bd66364f00f9923f..7ab6e7e072ea93738a5c68c6a05193fd68ffa3b8 100644
--- a/VadereModelCalibration/TestOSMGroup_calibration/scenarios/group_OSM_CGM_density_flow_3group_sparse.scenario
+++ b/VadereModelCalibration/TestOSMGroup_calibration/scenarios/group_OSM_CGM_density_flow_3group_sparse.scenario
@@ -1,8 +1,7 @@
{
"name" : "group_OSM_CGM_density_flow_3group_sparse",
"description" : "",
- "release" : "0.8",
- "commithash" : "warning: no commit hash",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -40,7 +39,8 @@
"type" : "org.vadere.simulator.projects.dataprocessing.processor.PedestrianGroupSizeProcessor",
"id" : 6
} ],
- "isTimestamped" : true
+ "isTimestamped" : true,
+ "isWriteMetaData" : false
},
"scenario" : {
"mainModel" : "org.vadere.simulator.models.osm.OptimalStepsModel",
@@ -50,6 +50,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -59,25 +61,27 @@
"pedestrianWeight" : 3.5,
"queueWidthLoading" : 1.0,
"pedestrianDynamicWeight" : 6.0,
- "loadingType" : "CONSTANT"
+ "loadingType" : "CONSTANT",
+ "width" : 0.2,
+ "height" : 1.0
}
},
"org.vadere.state.attributes.models.AttributesOSM" : {
"stepCircleResolution" : 4,
"numberOfCircles" : 1,
+ "optimizationType" : "NELDER_MEAD",
"varyStepDirection" : true,
+ "movementType" : "ARBITRARY",
"stepLengthIntercept" : 0.4625,
"stepLengthSlopeSpeed" : 0.2345,
"stepLengthSD" : 0.036,
"movementThreshold" : 0.0,
"minStepLength" : 0.17,
+ "minimumStepLength" : true,
"maxStepDuration" : 3.0,
- "optimizationType" : "NELDER_MEAD",
- "movementType" : "ARBITRARY",
"dynamicStepLength" : true,
"updateType" : "EVENT_DRIVEN",
"seeSmallWalls" : true,
- "minimumStepLength" : true,
"targetPotentialModel" : "org.vadere.simulator.models.potential.fields.PotentialFieldTargetGrid",
"pedestrianPotentialModel" : "org.vadere.simulator.models.potential.PotentialFieldPedestrianCompactSoftshell",
"obstaclePotentialModel" : "org.vadere.simulator.models.potential.PotentialFieldObstacleCompactSoftshell",
@@ -108,9 +112,9 @@
"digitsPerCoordinate" : 2,
"useFixedSeed" : true,
"fixedSeed" : -8686918998450722109,
- "simulationSeed" : 0
+ "simulationSeed" : 0,
+ "useSalientBehavior" : false
},
- "eventInfos" : [ ],
"topography" : {
"attributes" : {
"bounds" : {
@@ -153,6 +157,7 @@
},
"id" : 4
} ],
+ "measurementAreas" : [ ],
"stairs" : [ ],
"targets" : [ {
"id" : 2,
@@ -181,6 +186,7 @@
"startingWithRedLight" : false,
"nextSpeed" : -1.0
} ],
+ "absorbingAreas" : [ ],
"sources" : [ {
"id" : 1,
"shape" : {
@@ -219,25 +225,15 @@
"speedDistributionStandardDeviation" : 0.26,
"minimumSpeed" : 0.5,
"maximumSpeed" : 2.2,
- "acceleration" : 2.0
+ "acceleration" : 2.0,
+ "footStepsToStore" : 4,
+ "searchRadius" : 1.0,
+ "angleCalculationType" : "USE_CENTER",
+ "targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.5,
- "maximumSpeed" : 2.2,
- "acceleration" : 2.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
- }
+ "attributesCar" : null
+ },
+ "eventInfos" : [ ]
}
-}
+}
\ No newline at end of file
diff --git a/VadereModelCalibration/TestOSMGroup_calibration/scenarios/group_OSM_CGM_density_flow_4group.scenario b/VadereModelCalibration/TestOSMGroup_calibration/scenarios/group_OSM_CGM_density_flow_4group.scenario
index 99e6ecc45f706647bceb3ddf12268e5b9394bd5b..c2d956c1fad72d9bdcabd1a4472d47d954b99665 100644
--- a/VadereModelCalibration/TestOSMGroup_calibration/scenarios/group_OSM_CGM_density_flow_4group.scenario
+++ b/VadereModelCalibration/TestOSMGroup_calibration/scenarios/group_OSM_CGM_density_flow_4group.scenario
@@ -1,8 +1,7 @@
{
"name" : "group_OSM_CGM_density_flow_4group",
"description" : "",
- "release" : "0.8",
- "commithash" : "warning: no commit hash",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -40,7 +39,8 @@
"type" : "org.vadere.simulator.projects.dataprocessing.processor.PedestrianGroupSizeProcessor",
"id" : 6
} ],
- "isTimestamped" : true
+ "isTimestamped" : true,
+ "isWriteMetaData" : false
},
"scenario" : {
"mainModel" : "org.vadere.simulator.models.osm.OptimalStepsModel",
@@ -50,6 +50,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -59,7 +61,9 @@
"pedestrianWeight" : 3.5,
"queueWidthLoading" : 1.0,
"pedestrianDynamicWeight" : 6.0,
- "loadingType" : "CONSTANT"
+ "loadingType" : "CONSTANT",
+ "width" : 0.2,
+ "height" : 1.0
}
},
"org.vadere.state.attributes.models.AttributesOSM" : {
@@ -108,9 +112,9 @@
"digitsPerCoordinate" : 2,
"useFixedSeed" : true,
"fixedSeed" : -8686918998450722109,
- "simulationSeed" : 0
+ "simulationSeed" : 0,
+ "useSalientBehavior" : false
},
- "eventInfos" : [ ],
"topography" : {
"attributes" : {
"bounds" : {
@@ -153,6 +157,7 @@
},
"id" : 4
} ],
+ "measurementAreas" : [ ],
"stairs" : [ ],
"targets" : [ {
"id" : 2,
@@ -220,25 +225,15 @@
"speedDistributionStandardDeviation" : 0.26,
"minimumSpeed" : 0.5,
"maximumSpeed" : 2.2,
- "acceleration" : 2.0
+ "acceleration" : 2.0,
+ "footStepsToStore" : 4,
+ "searchRadius" : 1.0,
+ "angleCalculationType" : "USE_CENTER",
+ "targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.5,
- "maximumSpeed" : 2.2,
- "acceleration" : 2.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
- }
+ "attributesCar" : null
+ },
+ "eventInfos" : [ ]
}
}
\ No newline at end of file
diff --git a/VadereModelCalibration/TestOSMGroup_calibration/scenarios/group_OSM_CGM_density_flow_4group_sparse.scenario b/VadereModelCalibration/TestOSMGroup_calibration/scenarios/group_OSM_CGM_density_flow_4group_sparse.scenario
index f5d6bd187f908a7f0d2b13e7899cba3a79c09c60..aaa7f13b36af294621e5d34e59b9739c9de1cfde 100644
--- a/VadereModelCalibration/TestOSMGroup_calibration/scenarios/group_OSM_CGM_density_flow_4group_sparse.scenario
+++ b/VadereModelCalibration/TestOSMGroup_calibration/scenarios/group_OSM_CGM_density_flow_4group_sparse.scenario
@@ -1,8 +1,7 @@
{
"name" : "group_OSM_CGM_density_flow_4group_sparse",
"description" : "",
- "release" : "0.8",
- "commithash" : "warning: no commit hash",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -40,7 +39,8 @@
"type" : "org.vadere.simulator.projects.dataprocessing.processor.PedestrianGroupSizeProcessor",
"id" : 6
} ],
- "isTimestamped" : true
+ "isTimestamped" : true,
+ "isWriteMetaData" : false
},
"scenario" : {
"mainModel" : "org.vadere.simulator.models.osm.OptimalStepsModel",
@@ -50,6 +50,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -59,25 +61,27 @@
"pedestrianWeight" : 3.5,
"queueWidthLoading" : 1.0,
"pedestrianDynamicWeight" : 6.0,
- "loadingType" : "CONSTANT"
+ "loadingType" : "CONSTANT",
+ "width" : 0.2,
+ "height" : 1.0
}
},
"org.vadere.state.attributes.models.AttributesOSM" : {
"stepCircleResolution" : 4,
"numberOfCircles" : 1,
+ "optimizationType" : "NELDER_MEAD",
"varyStepDirection" : true,
+ "movementType" : "ARBITRARY",
"stepLengthIntercept" : 0.4625,
"stepLengthSlopeSpeed" : 0.2345,
"stepLengthSD" : 0.036,
"movementThreshold" : 0.0,
"minStepLength" : 0.17,
+ "minimumStepLength" : true,
"maxStepDuration" : 3.0,
- "optimizationType" : "NELDER_MEAD",
- "movementType" : "ARBITRARY",
"dynamicStepLength" : true,
"updateType" : "EVENT_DRIVEN",
"seeSmallWalls" : true,
- "minimumStepLength" : true,
"targetPotentialModel" : "org.vadere.simulator.models.potential.fields.PotentialFieldTargetGrid",
"pedestrianPotentialModel" : "org.vadere.simulator.models.potential.PotentialFieldPedestrianCompactSoftshell",
"obstaclePotentialModel" : "org.vadere.simulator.models.potential.PotentialFieldObstacleCompactSoftshell",
@@ -108,9 +112,9 @@
"digitsPerCoordinate" : 2,
"useFixedSeed" : true,
"fixedSeed" : -8686918998450722109,
- "simulationSeed" : 0
+ "simulationSeed" : 0,
+ "useSalientBehavior" : false
},
- "eventInfos" : [ ],
"topography" : {
"attributes" : {
"bounds" : {
@@ -153,6 +157,7 @@
},
"id" : 4
} ],
+ "measurementAreas" : [ ],
"stairs" : [ ],
"targets" : [ {
"id" : 2,
@@ -181,6 +186,7 @@
"startingWithRedLight" : false,
"nextSpeed" : -1.0
} ],
+ "absorbingAreas" : [ ],
"sources" : [ {
"id" : 1,
"shape" : {
@@ -219,25 +225,15 @@
"speedDistributionStandardDeviation" : 0.26,
"minimumSpeed" : 0.5,
"maximumSpeed" : 2.2,
- "acceleration" : 2.0
+ "acceleration" : 2.0,
+ "footStepsToStore" : 4,
+ "searchRadius" : 1.0,
+ "angleCalculationType" : "USE_CENTER",
+ "targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.5,
- "maximumSpeed" : 2.2,
- "acceleration" : 2.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
- }
+ "attributesCar" : null
+ },
+ "eventInfos" : [ ]
}
-}
+}
\ No newline at end of file
diff --git a/VadereModelCalibration/TestOSMGroup_calibration/scenarios/group_OSM_CGM_density_flow_5group.scenario b/VadereModelCalibration/TestOSMGroup_calibration/scenarios/group_OSM_CGM_density_flow_5group.scenario
index 911d00c9b8a166f72f36bf00d8f2a9f5dd2fd238..b18e0f485ad65854db69da3f33162b9f1d109b52 100644
--- a/VadereModelCalibration/TestOSMGroup_calibration/scenarios/group_OSM_CGM_density_flow_5group.scenario
+++ b/VadereModelCalibration/TestOSMGroup_calibration/scenarios/group_OSM_CGM_density_flow_5group.scenario
@@ -1,8 +1,7 @@
{
"name" : "group_OSM_CGM_density_flow_5group",
"description" : "",
- "release" : "0.8",
- "commithash" : "warning: no commit hash",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -40,7 +39,8 @@
"type" : "org.vadere.simulator.projects.dataprocessing.processor.PedestrianGroupSizeProcessor",
"id" : 6
} ],
- "isTimestamped" : true
+ "isTimestamped" : true,
+ "isWriteMetaData" : false
},
"scenario" : {
"mainModel" : "org.vadere.simulator.models.osm.OptimalStepsModel",
@@ -50,6 +50,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -59,7 +61,9 @@
"pedestrianWeight" : 3.5,
"queueWidthLoading" : 1.0,
"pedestrianDynamicWeight" : 6.0,
- "loadingType" : "CONSTANT"
+ "loadingType" : "CONSTANT",
+ "width" : 0.2,
+ "height" : 1.0
}
},
"org.vadere.state.attributes.models.AttributesOSM" : {
@@ -108,9 +112,9 @@
"digitsPerCoordinate" : 2,
"useFixedSeed" : true,
"fixedSeed" : -8686918998450722109,
- "simulationSeed" : 0
+ "simulationSeed" : 0,
+ "useSalientBehavior" : false
},
- "eventInfos" : [ ],
"topography" : {
"attributes" : {
"bounds" : {
@@ -153,6 +157,7 @@
},
"id" : 4
} ],
+ "measurementAreas" : [ ],
"stairs" : [ ],
"targets" : [ {
"id" : 2,
@@ -220,25 +225,15 @@
"speedDistributionStandardDeviation" : 0.26,
"minimumSpeed" : 0.5,
"maximumSpeed" : 2.2,
- "acceleration" : 2.0
+ "acceleration" : 2.0,
+ "footStepsToStore" : 4,
+ "searchRadius" : 1.0,
+ "angleCalculationType" : "USE_CENTER",
+ "targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.5,
- "maximumSpeed" : 2.2,
- "acceleration" : 2.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
- }
+ "attributesCar" : null
+ },
+ "eventInfos" : [ ]
}
}
\ No newline at end of file
diff --git a/VadereModelCalibration/TestOSMGroup_calibration/scenarios/group_OSM_CGM_density_flow_5group_sparse.scenario b/VadereModelCalibration/TestOSMGroup_calibration/scenarios/group_OSM_CGM_density_flow_5group_sparse.scenario
index e00135751576ded94a6f035e304c8561a8efab6f..0d9fd5a78d75dc664e1d84aff8f7098582d44831 100644
--- a/VadereModelCalibration/TestOSMGroup_calibration/scenarios/group_OSM_CGM_density_flow_5group_sparse.scenario
+++ b/VadereModelCalibration/TestOSMGroup_calibration/scenarios/group_OSM_CGM_density_flow_5group_sparse.scenario
@@ -1,8 +1,7 @@
{
"name" : "group_OSM_CGM_density_flow_5group_sparse.scenario",
"description" : "",
- "release" : "0.8",
- "commithash" : "warning: no commit hash",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -40,7 +39,8 @@
"type" : "org.vadere.simulator.projects.dataprocessing.processor.PedestrianGroupSizeProcessor",
"id" : 6
} ],
- "isTimestamped" : true
+ "isTimestamped" : true,
+ "isWriteMetaData" : false
},
"scenario" : {
"mainModel" : "org.vadere.simulator.models.osm.OptimalStepsModel",
@@ -50,6 +50,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -59,25 +61,27 @@
"pedestrianWeight" : 3.5,
"queueWidthLoading" : 1.0,
"pedestrianDynamicWeight" : 6.0,
- "loadingType" : "CONSTANT"
+ "loadingType" : "CONSTANT",
+ "width" : 0.2,
+ "height" : 1.0
}
},
"org.vadere.state.attributes.models.AttributesOSM" : {
"stepCircleResolution" : 4,
"numberOfCircles" : 1,
+ "optimizationType" : "NELDER_MEAD",
"varyStepDirection" : true,
+ "movementType" : "ARBITRARY",
"stepLengthIntercept" : 0.4625,
"stepLengthSlopeSpeed" : 0.2345,
"stepLengthSD" : 0.036,
"movementThreshold" : 0.0,
"minStepLength" : 0.17,
+ "minimumStepLength" : true,
"maxStepDuration" : 3.0,
- "optimizationType" : "NELDER_MEAD",
- "movementType" : "ARBITRARY",
"dynamicStepLength" : true,
"updateType" : "EVENT_DRIVEN",
"seeSmallWalls" : true,
- "minimumStepLength" : true,
"targetPotentialModel" : "org.vadere.simulator.models.potential.fields.PotentialFieldTargetGrid",
"pedestrianPotentialModel" : "org.vadere.simulator.models.potential.PotentialFieldPedestrianCompactSoftshell",
"obstaclePotentialModel" : "org.vadere.simulator.models.potential.PotentialFieldObstacleCompactSoftshell",
@@ -108,9 +112,9 @@
"digitsPerCoordinate" : 2,
"useFixedSeed" : true,
"fixedSeed" : -8686918998450722109,
- "simulationSeed" : 0
+ "simulationSeed" : 0,
+ "useSalientBehavior" : false
},
- "eventInfos" : [ ],
"topography" : {
"attributes" : {
"bounds" : {
@@ -153,6 +157,7 @@
},
"id" : 4
} ],
+ "measurementAreas" : [ ],
"stairs" : [ ],
"targets" : [ {
"id" : 2,
@@ -181,6 +186,7 @@
"startingWithRedLight" : false,
"nextSpeed" : -1.0
} ],
+ "absorbingAreas" : [ ],
"sources" : [ {
"id" : 1,
"shape" : {
@@ -219,25 +225,15 @@
"speedDistributionStandardDeviation" : 0.26,
"minimumSpeed" : 0.5,
"maximumSpeed" : 2.2,
- "acceleration" : 2.0
+ "acceleration" : 2.0,
+ "footStepsToStore" : 4,
+ "searchRadius" : 1.0,
+ "angleCalculationType" : "USE_CENTER",
+ "targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.5,
- "maximumSpeed" : 2.2,
- "acceleration" : 2.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
- }
+ "attributesCar" : null
+ },
+ "eventInfos" : [ ]
}
-}
+}
\ No newline at end of file
diff --git a/VadereModelCalibration/TestOSM_calibration/scenarios/groupBaseScenario.scenario b/VadereModelCalibration/TestOSM_calibration/scenarios/groupBaseScenario.scenario
index 3784c95eea22995ae9cda1452ea1efcdd0a935b9..c790e1957177e4570e2fa6fdd4057a4b7ee95e9c 100644
--- a/VadereModelCalibration/TestOSM_calibration/scenarios/groupBaseScenario.scenario
+++ b/VadereModelCalibration/TestOSM_calibration/scenarios/groupBaseScenario.scenario
@@ -1,7 +1,7 @@
{
"name" : "g2_osm_calibration_minStepSize_0_11",
"description" : "",
- "release" : "0.7",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -83,13 +83,7 @@
"id" : 11,
"attributesType" : "org.vadere.state.attributes.processor.AttributesFundamentalDiagramCProcessor",
"attributes" : {
- "measurementArea" : {
- "x" : 50.0,
- "y" : 0.5,
- "width" : 2.0,
- "height" : 4.0,
- "type" : "RECTANGLE"
- },
+ "measurementAreaId" : 1,
"pedestrianVelocityProcessorId" : 16
}
}, {
@@ -97,20 +91,8 @@
"id" : 12,
"attributesType" : "org.vadere.state.attributes.processor.AttributesFundamentalDiagramDProcessor",
"attributes" : {
- "measurementArea" : {
- "x" : 50.0,
- "y" : 0.5,
- "width" : 2.0,
- "height" : 4.0,
- "type" : "RECTANGLE"
- },
- "voronoiArea" : {
- "x" : 50.0,
- "y" : 0.5,
- "width" : 2.0,
- "height" : 4.0,
- "type" : "RECTANGLE"
- },
+ "measurementAreaId" : 1,
+ "voronoiMeasurementAreaId" : 1,
"pedestrianVelocityProcessorId" : 16
}
}, {
@@ -118,20 +100,8 @@
"id" : 13,
"attributesType" : "org.vadere.state.attributes.processor.AttributesFundamentalDiagramEProcessor",
"attributes" : {
- "measurementArea" : {
- "x" : 50.0,
- "y" : 0.5,
- "width" : 2.0,
- "height" : 4.0,
- "type" : "RECTANGLE"
- },
- "voronoiArea" : {
- "x" : 50.0,
- "y" : 0.5,
- "width" : 2.0,
- "height" : 4.0,
- "type" : "RECTANGLE"
- },
+ "measurementAreaId" : 1,
+ "voronoiMeasurementAreaId" : 1,
"pedestrianVelocityProcessorId" : 16
}
}, {
@@ -153,13 +123,7 @@
"id" : 19,
"attributesType" : "org.vadere.state.attributes.processor.AttributesFundamentalDiagramCProcessor",
"attributes" : {
- "measurementArea" : {
- "x" : 75.0,
- "y" : 0.5,
- "width" : 2.0,
- "height" : 4.0,
- "type" : "RECTANGLE"
- },
+ "measurementAreaId" : 2,
"pedestrianVelocityProcessorId" : 16
}
}, {
@@ -167,13 +131,7 @@
"id" : 23,
"attributesType" : "org.vadere.state.attributes.processor.AttributesFundamentalDiagramCProcessor",
"attributes" : {
- "measurementArea" : {
- "x" : 35.0,
- "y" : 0.5,
- "width" : 2.0,
- "height" : 4.0,
- "type" : "RECTANGLE"
- },
+ "measurementAreaId" : 3,
"pedestrianVelocityProcessorId" : 16
}
}, {
@@ -197,6 +155,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 2.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -206,7 +166,9 @@
"pedestrianWeight" : 3.5,
"queueWidthLoading" : 1.0,
"pedestrianDynamicWeight" : 6.0,
- "loadingType" : "CONSTANT"
+ "loadingType" : "CONSTANT",
+ "width" : 0.2,
+ "height" : 1.0
}
},
"org.vadere.state.attributes.models.AttributesOSM" : {
@@ -255,7 +217,8 @@
"digitsPerCoordinate" : 2,
"useFixedSeed" : true,
"fixedSeed" : 1,
- "simulationSeed" : 1
+ "simulationSeed" : 1,
+ "useSalientBehavior" : false
},
"topography" : {
"attributes" : {
@@ -269,6 +232,34 @@
"bounded" : true
},
"obstacles" : [ ],
+ "measurementAreas" : [ {
+ "shape" : {
+ "x" : 50.0,
+ "y" : 0.5,
+ "width" : 2.0,
+ "height" : 4.0,
+ "type" : "RECTANGLE"
+ },
+ "id" : 1
+ }, {
+ "shape" : {
+ "x" : 75.0,
+ "y" : 0.5,
+ "width" : 2.0,
+ "height" : 4.0,
+ "type" : "RECTANGLE"
+ },
+ "id" : 2
+ }, {
+ "shape" : {
+ "x" : 35.0,
+ "y" : 0.5,
+ "width" : 2.0,
+ "height" : 4.0,
+ "type" : "RECTANGLE"
+ },
+ "id" : 3
+ } ],
"stairs" : [ ],
"targets" : [ {
"id" : 1,
@@ -288,6 +279,7 @@
"startingWithRedLight" : false,
"nextSpeed" : -1.0
} ],
+ "absorbingAreas" : [ ],
"sources" : [ {
"id" : -1,
"shape" : {
@@ -317,7 +309,11 @@
"speedDistributionStandardDeviation" : 0.26,
"minimumSpeed" : 0.5,
"maximumSpeed" : 2.2,
- "acceleration" : 2.0
+ "acceleration" : 2.0,
+ "footStepsToStore" : 4,
+ "searchRadius" : 1.0,
+ "angleCalculationType" : "USE_CENTER",
+ "targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
"attributesCar" : null
@@ -342,4 +338,4 @@
} ]
} ]
}
-}
+}
\ No newline at end of file
diff --git a/VadereModelCalibration/TestOSM_calibration/scenarios/osm_calibration_minStepSize_0_11_ignore_free_space.scenario b/VadereModelCalibration/TestOSM_calibration/scenarios/osm_calibration_minStepSize_0_11_ignore_free_space.scenario
index 7bfa0bd361542803f2739f1ec4007429ab968d68..ee3394d8c3849540508b43bc97b741da56f2c1ef 100644
--- a/VadereModelCalibration/TestOSM_calibration/scenarios/osm_calibration_minStepSize_0_11_ignore_free_space.scenario
+++ b/VadereModelCalibration/TestOSM_calibration/scenarios/osm_calibration_minStepSize_0_11_ignore_free_space.scenario
@@ -1,7 +1,7 @@
{
"name" : "osm_calibration_minStepSize_0_11_ignore_free_space",
"description" : "",
- "release" : "0.7",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -71,13 +71,7 @@
"id" : 11,
"attributesType" : "org.vadere.state.attributes.processor.AttributesFundamentalDiagramCProcessor",
"attributes" : {
- "measurementArea" : {
- "x" : 39.0,
- "y" : 0.5,
- "width" : 2.0,
- "height" : 3.0,
- "type" : "RECTANGLE"
- },
+ "measurementAreaId" : 1,
"pedestrianVelocityProcessorId" : 16
}
}, {
@@ -85,20 +79,8 @@
"id" : 12,
"attributesType" : "org.vadere.state.attributes.processor.AttributesFundamentalDiagramDProcessor",
"attributes" : {
- "measurementArea" : {
- "x" : 39.0,
- "y" : 0.5,
- "width" : 2.0,
- "height" : 3.0,
- "type" : "RECTANGLE"
- },
- "voronoiArea" : {
- "x" : 0.5,
- "y" : 0.4,
- "width" : 45.0,
- "height" : 3.2,
- "type" : "RECTANGLE"
- },
+ "measurementAreaId" : 1,
+ "voronoiMeasurementAreaId" : 2,
"pedestrianVelocityProcessorId" : 16
}
}, {
@@ -106,20 +88,8 @@
"id" : 13,
"attributesType" : "org.vadere.state.attributes.processor.AttributesFundamentalDiagramEProcessor",
"attributes" : {
- "measurementArea" : {
- "x" : 39.0,
- "y" : 0.5,
- "width" : 2.0,
- "height" : 3.0,
- "type" : "RECTANGLE"
- },
- "voronoiArea" : {
- "x" : 0.5,
- "y" : 0.4,
- "width" : 45.0,
- "height" : 3.2,
- "type" : "RECTANGLE"
- },
+ "measurementAreaId" : 1,
+ "voronoiMeasurementAreaId" : 2,
"pedestrianVelocityProcessorId" : 16
}
}, {
@@ -131,7 +101,8 @@
"backSteps" : 3
}
} ],
- "isTimestamped" : true
+ "isTimestamped" : true,
+ "isWriteMetaData" : false
},
"scenario" : {
"mainModel" : "org.vadere.simulator.models.osm.OptimalStepsModel",
@@ -141,6 +112,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -150,25 +123,27 @@
"pedestrianWeight" : 3.5,
"queueWidthLoading" : 1.0,
"pedestrianDynamicWeight" : 6.0,
- "loadingType" : "CONSTANT"
+ "loadingType" : "CONSTANT",
+ "width" : 0.2,
+ "height" : 1.0
}
},
"org.vadere.state.attributes.models.AttributesOSM" : {
"stepCircleResolution" : 4,
"numberOfCircles" : 1,
+ "optimizationType" : "NELDER_MEAD",
"varyStepDirection" : true,
+ "movementType" : "ARBITRARY",
"stepLengthIntercept" : 0.4625,
"stepLengthSlopeSpeed" : 0.2345,
"stepLengthSD" : 0.036,
"movementThreshold" : 0.0,
"minStepLength" : 0.11,
+ "minimumStepLength" : true,
"maxStepDuration" : 1.7976931348623157E308,
- "optimizationType" : "NELDER_MEAD",
- "movementType" : "ARBITRARY",
"dynamicStepLength" : false,
"updateType" : "EVENT_DRIVEN",
"seeSmallWalls" : false,
- "minimumStepLength" : true,
"targetPotentialModel" : "org.vadere.simulator.models.potential.fields.PotentialFieldTargetGrid",
"pedestrianPotentialModel" : "org.vadere.simulator.models.potential.PotentialFieldPedestrianCompactSoftshell",
"obstaclePotentialModel" : "org.vadere.simulator.models.potential.PotentialFieldObstacleCompactSoftshell",
@@ -195,7 +170,8 @@
"digitsPerCoordinate" : 2,
"useFixedSeed" : true,
"fixedSeed" : 1,
- "simulationSeed" : 1
+ "simulationSeed" : 1,
+ "useSalientBehavior" : false
},
"topography" : {
"attributes" : {
@@ -209,6 +185,25 @@
"bounded" : true
},
"obstacles" : [ ],
+ "measurementAreas" : [ {
+ "shape" : {
+ "x" : 39.0,
+ "y" : 0.5,
+ "width" : 2.0,
+ "height" : 3.0,
+ "type" : "RECTANGLE"
+ },
+ "id" : 1
+ }, {
+ "shape" : {
+ "x" : 0.5,
+ "y" : 0.4,
+ "width" : 45.0,
+ "height" : 3.2,
+ "type" : "RECTANGLE"
+ },
+ "id" : 2
+ } ],
"stairs" : [ ],
"targets" : [ {
"id" : 1,
@@ -228,6 +223,7 @@
"startingWithRedLight" : false,
"nextSpeed" : -1.0
} ],
+ "absorbingAreas" : [ ],
"sources" : [ {
"id" : -1,
"shape" : {
@@ -257,18 +253,22 @@
"speedDistributionStandardDeviation" : 0.26,
"minimumSpeed" : 0.5,
"maximumSpeed" : 2.2,
- "acceleration" : 2.0
+ "acceleration" : 2.0,
+ "footStepsToStore" : 4,
+ "searchRadius" : 1.0,
+ "angleCalculationType" : "USE_CENTER",
+ "targetOrientationAngleThreshold" : 45.0
},
"teleporter" : {
- "shift" : {
- "x" : -40.0,
- "y" : 0.0
- },
- "position" : {
- "x" : 42.0,
- "y" : 0.0
- }
- },
+ "shift" : {
+ "x" : -40.0,
+ "y" : 0.0
+ },
+ "position" : {
+ "x" : 42.0,
+ "y" : 0.0
+ }
+ },
"attributesCar" : null
},
"eventInfos" : [ ]
diff --git a/VadereModelCalibration/TestOSM_calibration/scenarios/osm_calibration_minStepSize_0_17.scenario b/VadereModelCalibration/TestOSM_calibration/scenarios/osm_calibration_minStepSize_0_17.scenario
index b54c9c06810b3edd5848a9fd3da414874c1ff161..133f29bfc4e6c1bbee090dc73cb2dce818558580 100644
--- a/VadereModelCalibration/TestOSM_calibration/scenarios/osm_calibration_minStepSize_0_17.scenario
+++ b/VadereModelCalibration/TestOSM_calibration/scenarios/osm_calibration_minStepSize_0_17.scenario
@@ -1,7 +1,7 @@
{
"name" : "osm_calibration_minStepSize_0_17",
"description" : "",
- "release" : "0.7",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -71,13 +71,7 @@
"id" : 11,
"attributesType" : "org.vadere.state.attributes.processor.AttributesFundamentalDiagramCProcessor",
"attributes" : {
- "measurementArea" : {
- "x" : 39.0,
- "y" : 0.5,
- "width" : 2.0,
- "height" : 3.0,
- "type" : "RECTANGLE"
- },
+ "measurementAreaId" : 1,
"pedestrianVelocityProcessorId" : 16
}
}, {
@@ -85,20 +79,8 @@
"id" : 12,
"attributesType" : "org.vadere.state.attributes.processor.AttributesFundamentalDiagramDProcessor",
"attributes" : {
- "measurementArea" : {
- "x" : 39.0,
- "y" : 0.5,
- "width" : 2.0,
- "height" : 3.0,
- "type" : "RECTANGLE"
- },
- "voronoiArea" : {
- "x" : 0.5,
- "y" : 0.4,
- "width" : 45.0,
- "height" : 3.2,
- "type" : "RECTANGLE"
- },
+ "measurementAreaId" : 1,
+ "voronoiMeasurementAreaId" : 2,
"pedestrianVelocityProcessorId" : 16
}
}, {
@@ -106,20 +88,8 @@
"id" : 13,
"attributesType" : "org.vadere.state.attributes.processor.AttributesFundamentalDiagramEProcessor",
"attributes" : {
- "measurementArea" : {
- "x" : 39.0,
- "y" : 0.5,
- "width" : 2.0,
- "height" : 3.0,
- "type" : "RECTANGLE"
- },
- "voronoiArea" : {
- "x" : 0.5,
- "y" : 0.4,
- "width" : 45.0,
- "height" : 3.2,
- "type" : "RECTANGLE"
- },
+ "measurementAreaId" : 1,
+ "voronoiMeasurementAreaId" : 2,
"pedestrianVelocityProcessorId" : 16
}
}, {
@@ -131,7 +101,8 @@
"backSteps" : 3
}
} ],
- "isTimestamped" : true
+ "isTimestamped" : true,
+ "isWriteMetaData" : false
},
"scenario" : {
"mainModel" : "org.vadere.simulator.models.osm.OptimalStepsModel",
@@ -141,6 +112,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -150,25 +123,27 @@
"pedestrianWeight" : 3.5,
"queueWidthLoading" : 1.0,
"pedestrianDynamicWeight" : 6.0,
- "loadingType" : "CONSTANT"
+ "loadingType" : "CONSTANT",
+ "width" : 0.2,
+ "height" : 1.0
}
},
"org.vadere.state.attributes.models.AttributesOSM" : {
"stepCircleResolution" : 4,
"numberOfCircles" : 1,
+ "optimizationType" : "NELDER_MEAD",
"varyStepDirection" : true,
+ "movementType" : "ARBITRARY",
"stepLengthIntercept" : 0.4625,
"stepLengthSlopeSpeed" : 0.2345,
"stepLengthSD" : 0.036,
"movementThreshold" : 0.0,
"minStepLength" : 0.17,
+ "minimumStepLength" : true,
"maxStepDuration" : 1.7976931348623157E308,
- "optimizationType" : "NELDER_MEAD",
- "movementType" : "ARBITRARY",
"dynamicStepLength" : false,
"updateType" : "EVENT_DRIVEN",
"seeSmallWalls" : false,
- "minimumStepLength" : true,
"targetPotentialModel" : "org.vadere.simulator.models.potential.fields.PotentialFieldTargetGrid",
"pedestrianPotentialModel" : "org.vadere.simulator.models.potential.PotentialFieldPedestrianCompactSoftshell",
"obstaclePotentialModel" : "org.vadere.simulator.models.potential.PotentialFieldObstacleCompactSoftshell",
@@ -195,7 +170,8 @@
"digitsPerCoordinate" : 2,
"useFixedSeed" : true,
"fixedSeed" : 1,
- "simulationSeed" : 1
+ "simulationSeed" : 1,
+ "useSalientBehavior" : false
},
"topography" : {
"attributes" : {
@@ -209,6 +185,25 @@
"bounded" : true
},
"obstacles" : [ ],
+ "measurementAreas" : [ {
+ "shape" : {
+ "x" : 39.0,
+ "y" : 0.5,
+ "width" : 2.0,
+ "height" : 3.0,
+ "type" : "RECTANGLE"
+ },
+ "id" : 1
+ }, {
+ "shape" : {
+ "x" : 0.5,
+ "y" : 0.4,
+ "width" : 45.0,
+ "height" : 3.2,
+ "type" : "RECTANGLE"
+ },
+ "id" : 2
+ } ],
"stairs" : [ ],
"targets" : [ {
"id" : 1,
@@ -228,6 +223,7 @@
"startingWithRedLight" : false,
"nextSpeed" : -1.0
} ],
+ "absorbingAreas" : [ ],
"sources" : [ {
"id" : -1,
"shape" : {
@@ -257,7 +253,11 @@
"speedDistributionStandardDeviation" : 0.26,
"minimumSpeed" : 0.5,
"maximumSpeed" : 2.2,
- "acceleration" : 2.0
+ "acceleration" : 2.0,
+ "footStepsToStore" : 4,
+ "searchRadius" : 1.0,
+ "angleCalculationType" : "USE_CENTER",
+ "targetOrientationAngleThreshold" : 45.0
},
"teleporter" : {
"shift" : {
diff --git a/VadereModelCalibration/TestOSM_calibration/scenarios/osm_calibration_minStepSize_0_25.scenario b/VadereModelCalibration/TestOSM_calibration/scenarios/osm_calibration_minStepSize_0_25.scenario
index 05ff16c5a3c267dd48d045ea681194605951ed71..2fa685634f63d51b8e1c6bc68b746e6825326114 100644
--- a/VadereModelCalibration/TestOSM_calibration/scenarios/osm_calibration_minStepSize_0_25.scenario
+++ b/VadereModelCalibration/TestOSM_calibration/scenarios/osm_calibration_minStepSize_0_25.scenario
@@ -1,7 +1,7 @@
{
"name" : "osm_calibration_minStepSize_0_25",
"description" : "",
- "release" : "0.7",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -71,13 +71,7 @@
"id" : 11,
"attributesType" : "org.vadere.state.attributes.processor.AttributesFundamentalDiagramCProcessor",
"attributes" : {
- "measurementArea" : {
- "x" : 39.0,
- "y" : 0.5,
- "width" : 2.0,
- "height" : 3.0,
- "type" : "RECTANGLE"
- },
+ "measurementAreaId" : 1,
"pedestrianVelocityProcessorId" : 16
}
}, {
@@ -85,20 +79,8 @@
"id" : 12,
"attributesType" : "org.vadere.state.attributes.processor.AttributesFundamentalDiagramDProcessor",
"attributes" : {
- "measurementArea" : {
- "x" : 39.0,
- "y" : 0.5,
- "width" : 2.0,
- "height" : 3.0,
- "type" : "RECTANGLE"
- },
- "voronoiArea" : {
- "x" : 0.5,
- "y" : 0.4,
- "width" : 45.0,
- "height" : 3.2,
- "type" : "RECTANGLE"
- },
+ "measurementAreaId" : 1,
+ "voronoiMeasurementAreaId" : 2,
"pedestrianVelocityProcessorId" : 16
}
}, {
@@ -106,20 +88,8 @@
"id" : 13,
"attributesType" : "org.vadere.state.attributes.processor.AttributesFundamentalDiagramEProcessor",
"attributes" : {
- "measurementArea" : {
- "x" : 39.0,
- "y" : 0.5,
- "width" : 2.0,
- "height" : 3.0,
- "type" : "RECTANGLE"
- },
- "voronoiArea" : {
- "x" : 0.5,
- "y" : 0.4,
- "width" : 45.0,
- "height" : 3.2,
- "type" : "RECTANGLE"
- },
+ "measurementAreaId" : 1,
+ "voronoiMeasurementAreaId" : 2,
"pedestrianVelocityProcessorId" : 16
}
}, {
@@ -131,7 +101,8 @@
"backSteps" : 3
}
} ],
- "isTimestamped" : true
+ "isTimestamped" : true,
+ "isWriteMetaData" : false
},
"scenario" : {
"mainModel" : "org.vadere.simulator.models.osm.OptimalStepsModel",
@@ -141,6 +112,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -150,25 +123,27 @@
"pedestrianWeight" : 3.5,
"queueWidthLoading" : 1.0,
"pedestrianDynamicWeight" : 6.0,
- "loadingType" : "CONSTANT"
+ "loadingType" : "CONSTANT",
+ "width" : 0.2,
+ "height" : 1.0
}
},
"org.vadere.state.attributes.models.AttributesOSM" : {
"stepCircleResolution" : 4,
"numberOfCircles" : 1,
+ "optimizationType" : "NELDER_MEAD",
"varyStepDirection" : true,
+ "movementType" : "ARBITRARY",
"stepLengthIntercept" : 0.4625,
"stepLengthSlopeSpeed" : 0.2345,
"stepLengthSD" : 0.036,
"movementThreshold" : 0.0,
"minStepLength" : 0.25,
+ "minimumStepLength" : true,
"maxStepDuration" : 1.7976931348623157E308,
- "optimizationType" : "NELDER_MEAD",
- "movementType" : "ARBITRARY",
"dynamicStepLength" : false,
"updateType" : "EVENT_DRIVEN",
"seeSmallWalls" : false,
- "minimumStepLength" : true,
"targetPotentialModel" : "org.vadere.simulator.models.potential.fields.PotentialFieldTargetGrid",
"pedestrianPotentialModel" : "org.vadere.simulator.models.potential.PotentialFieldPedestrianCompactSoftshell",
"obstaclePotentialModel" : "org.vadere.simulator.models.potential.PotentialFieldObstacleCompactSoftshell",
@@ -195,7 +170,8 @@
"digitsPerCoordinate" : 2,
"useFixedSeed" : true,
"fixedSeed" : 1,
- "simulationSeed" : 1
+ "simulationSeed" : 1,
+ "useSalientBehavior" : false
},
"topography" : {
"attributes" : {
@@ -209,6 +185,25 @@
"bounded" : true
},
"obstacles" : [ ],
+ "measurementAreas" : [ {
+ "shape" : {
+ "x" : 39.0,
+ "y" : 0.5,
+ "width" : 2.0,
+ "height" : 3.0,
+ "type" : "RECTANGLE"
+ },
+ "id" : 1
+ }, {
+ "shape" : {
+ "x" : 0.5,
+ "y" : 0.4,
+ "width" : 45.0,
+ "height" : 3.2,
+ "type" : "RECTANGLE"
+ },
+ "id" : 2
+ } ],
"stairs" : [ ],
"targets" : [ {
"id" : 1,
@@ -228,6 +223,7 @@
"startingWithRedLight" : false,
"nextSpeed" : -1.0
} ],
+ "absorbingAreas" : [ ],
"sources" : [ {
"id" : -1,
"shape" : {
@@ -257,7 +253,11 @@
"speedDistributionStandardDeviation" : 0.26,
"minimumSpeed" : 0.5,
"maximumSpeed" : 2.2,
- "acceleration" : 2.0
+ "acceleration" : 2.0,
+ "footStepsToStore" : 4,
+ "searchRadius" : 1.0,
+ "angleCalculationType" : "USE_CENTER",
+ "targetOrientationAngleThreshold" : 45.0
},
"teleporter" : {
"shift" : {
diff --git a/VadereModelCalibration/TestOSM_calibration/scenarios/osm_calibration_minStepSize_0_35.scenario b/VadereModelCalibration/TestOSM_calibration/scenarios/osm_calibration_minStepSize_0_35.scenario
index a4e1adf9735c72ed89e2b79dfe85938274f8c9c1..b77f338f3927fc2714a0d3272baf37cdc84fe73f 100644
--- a/VadereModelCalibration/TestOSM_calibration/scenarios/osm_calibration_minStepSize_0_35.scenario
+++ b/VadereModelCalibration/TestOSM_calibration/scenarios/osm_calibration_minStepSize_0_35.scenario
@@ -1,7 +1,7 @@
{
"name" : "osm_calibration_minStepSize_0_35",
"description" : "",
- "release" : "0.7",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -71,13 +71,7 @@
"id" : 11,
"attributesType" : "org.vadere.state.attributes.processor.AttributesFundamentalDiagramCProcessor",
"attributes" : {
- "measurementArea" : {
- "x" : 39.0,
- "y" : 0.5,
- "width" : 2.0,
- "height" : 3.0,
- "type" : "RECTANGLE"
- },
+ "measurementAreaId" : 1,
"pedestrianVelocityProcessorId" : 16
}
}, {
@@ -85,20 +79,8 @@
"id" : 12,
"attributesType" : "org.vadere.state.attributes.processor.AttributesFundamentalDiagramDProcessor",
"attributes" : {
- "measurementArea" : {
- "x" : 39.0,
- "y" : 0.5,
- "width" : 2.0,
- "height" : 3.0,
- "type" : "RECTANGLE"
- },
- "voronoiArea" : {
- "x" : 0.5,
- "y" : 0.4,
- "width" : 45.0,
- "height" : 3.2,
- "type" : "RECTANGLE"
- },
+ "measurementAreaId" : 1,
+ "voronoiMeasurementAreaId" : 2,
"pedestrianVelocityProcessorId" : 16
}
}, {
@@ -106,20 +88,8 @@
"id" : 13,
"attributesType" : "org.vadere.state.attributes.processor.AttributesFundamentalDiagramEProcessor",
"attributes" : {
- "measurementArea" : {
- "x" : 39.0,
- "y" : 0.5,
- "width" : 2.0,
- "height" : 3.0,
- "type" : "RECTANGLE"
- },
- "voronoiArea" : {
- "x" : 0.5,
- "y" : 0.4,
- "width" : 45.0,
- "height" : 3.2,
- "type" : "RECTANGLE"
- },
+ "measurementAreaId" : 1,
+ "voronoiMeasurementAreaId" : 2,
"pedestrianVelocityProcessorId" : 16
}
}, {
@@ -131,7 +101,8 @@
"backSteps" : 3
}
} ],
- "isTimestamped" : true
+ "isTimestamped" : true,
+ "isWriteMetaData" : false
},
"scenario" : {
"mainModel" : "org.vadere.simulator.models.osm.OptimalStepsModel",
@@ -141,6 +112,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -150,25 +123,27 @@
"pedestrianWeight" : 3.5,
"queueWidthLoading" : 1.0,
"pedestrianDynamicWeight" : 6.0,
- "loadingType" : "CONSTANT"
+ "loadingType" : "CONSTANT",
+ "width" : 0.2,
+ "height" : 1.0
}
},
"org.vadere.state.attributes.models.AttributesOSM" : {
"stepCircleResolution" : 4,
"numberOfCircles" : 1,
+ "optimizationType" : "NELDER_MEAD",
"varyStepDirection" : true,
+ "movementType" : "ARBITRARY",
"stepLengthIntercept" : 0.4625,
"stepLengthSlopeSpeed" : 0.2345,
"stepLengthSD" : 0.036,
"movementThreshold" : 0.0,
"minStepLength" : 0.35,
+ "minimumStepLength" : true,
"maxStepDuration" : 1.7976931348623157E308,
- "optimizationType" : "NELDER_MEAD",
- "movementType" : "ARBITRARY",
"dynamicStepLength" : false,
"updateType" : "EVENT_DRIVEN",
"seeSmallWalls" : false,
- "minimumStepLength" : true,
"targetPotentialModel" : "org.vadere.simulator.models.potential.fields.PotentialFieldTargetGrid",
"pedestrianPotentialModel" : "org.vadere.simulator.models.potential.PotentialFieldPedestrianCompactSoftshell",
"obstaclePotentialModel" : "org.vadere.simulator.models.potential.PotentialFieldObstacleCompactSoftshell",
@@ -195,7 +170,8 @@
"digitsPerCoordinate" : 2,
"useFixedSeed" : true,
"fixedSeed" : 1,
- "simulationSeed" : 1
+ "simulationSeed" : 1,
+ "useSalientBehavior" : false
},
"topography" : {
"attributes" : {
@@ -209,6 +185,25 @@
"bounded" : true
},
"obstacles" : [ ],
+ "measurementAreas" : [ {
+ "shape" : {
+ "x" : 39.0,
+ "y" : 0.5,
+ "width" : 2.0,
+ "height" : 3.0,
+ "type" : "RECTANGLE"
+ },
+ "id" : 1
+ }, {
+ "shape" : {
+ "x" : 0.5,
+ "y" : 0.4,
+ "width" : 45.0,
+ "height" : 3.2,
+ "type" : "RECTANGLE"
+ },
+ "id" : 2
+ } ],
"stairs" : [ ],
"targets" : [ {
"id" : 1,
@@ -228,6 +223,7 @@
"startingWithRedLight" : false,
"nextSpeed" : -1.0
} ],
+ "absorbingAreas" : [ ],
"sources" : [ {
"id" : -1,
"shape" : {
@@ -257,7 +253,11 @@
"speedDistributionStandardDeviation" : 0.26,
"minimumSpeed" : 0.5,
"maximumSpeed" : 2.2,
- "acceleration" : 2.0
+ "acceleration" : 2.0,
+ "footStepsToStore" : 4,
+ "searchRadius" : 1.0,
+ "angleCalculationType" : "USE_CENTER",
+ "targetOrientationAngleThreshold" : 45.0
},
"teleporter" : {
"shift" : {
diff --git a/VadereModelCalibration/TestOSM_calibration/scenarios/osm_calibration_minStepSize_0_4625.scenario b/VadereModelCalibration/TestOSM_calibration/scenarios/osm_calibration_minStepSize_0_4625.scenario
index e03f68176fac4452105750f6db25a067f2b32582..23fb98c8a8cfde7f2c5fa03916065d1b2c0c8726 100644
--- a/VadereModelCalibration/TestOSM_calibration/scenarios/osm_calibration_minStepSize_0_4625.scenario
+++ b/VadereModelCalibration/TestOSM_calibration/scenarios/osm_calibration_minStepSize_0_4625.scenario
@@ -1,7 +1,7 @@
{
"name" : "osm_calibration_minStepSize_0_4625",
"description" : "",
- "release" : "0.7",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -71,13 +71,7 @@
"id" : 11,
"attributesType" : "org.vadere.state.attributes.processor.AttributesFundamentalDiagramCProcessor",
"attributes" : {
- "measurementArea" : {
- "x" : 39.0,
- "y" : 0.5,
- "width" : 2.0,
- "height" : 3.0,
- "type" : "RECTANGLE"
- },
+ "measurementAreaId" : 1,
"pedestrianVelocityProcessorId" : 16
}
}, {
@@ -85,20 +79,8 @@
"id" : 12,
"attributesType" : "org.vadere.state.attributes.processor.AttributesFundamentalDiagramDProcessor",
"attributes" : {
- "measurementArea" : {
- "x" : 39.0,
- "y" : 0.5,
- "width" : 2.0,
- "height" : 3.0,
- "type" : "RECTANGLE"
- },
- "voronoiArea" : {
- "x" : 0.5,
- "y" : 0.4,
- "width" : 45.0,
- "height" : 3.2,
- "type" : "RECTANGLE"
- },
+ "measurementAreaId" : 1,
+ "voronoiMeasurementAreaId" : 2,
"pedestrianVelocityProcessorId" : 16
}
}, {
@@ -106,20 +88,8 @@
"id" : 13,
"attributesType" : "org.vadere.state.attributes.processor.AttributesFundamentalDiagramEProcessor",
"attributes" : {
- "measurementArea" : {
- "x" : 39.0,
- "y" : 0.5,
- "width" : 2.0,
- "height" : 3.0,
- "type" : "RECTANGLE"
- },
- "voronoiArea" : {
- "x" : 0.5,
- "y" : 0.4,
- "width" : 45.0,
- "height" : 3.2,
- "type" : "RECTANGLE"
- },
+ "measurementAreaId" : 1,
+ "voronoiMeasurementAreaId" : 2,
"pedestrianVelocityProcessorId" : 16
}
}, {
@@ -131,7 +101,8 @@
"backSteps" : 3
}
} ],
- "isTimestamped" : true
+ "isTimestamped" : true,
+ "isWriteMetaData" : false
},
"scenario" : {
"mainModel" : "org.vadere.simulator.models.osm.OptimalStepsModel",
@@ -141,6 +112,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -150,25 +123,27 @@
"pedestrianWeight" : 3.5,
"queueWidthLoading" : 1.0,
"pedestrianDynamicWeight" : 6.0,
- "loadingType" : "CONSTANT"
+ "loadingType" : "CONSTANT",
+ "width" : 0.2,
+ "height" : 1.0
}
},
"org.vadere.state.attributes.models.AttributesOSM" : {
"stepCircleResolution" : 4,
"numberOfCircles" : 1,
+ "optimizationType" : "NELDER_MEAD",
"varyStepDirection" : true,
+ "movementType" : "ARBITRARY",
"stepLengthIntercept" : 0.4625,
"stepLengthSlopeSpeed" : 0.2345,
"stepLengthSD" : 0.036,
"movementThreshold" : 0.0,
"minStepLength" : 0.4625,
+ "minimumStepLength" : true,
"maxStepDuration" : 1.7976931348623157E308,
- "optimizationType" : "NELDER_MEAD",
- "movementType" : "ARBITRARY",
"dynamicStepLength" : false,
"updateType" : "EVENT_DRIVEN",
"seeSmallWalls" : false,
- "minimumStepLength" : true,
"targetPotentialModel" : "org.vadere.simulator.models.potential.fields.PotentialFieldTargetGrid",
"pedestrianPotentialModel" : "org.vadere.simulator.models.potential.PotentialFieldPedestrianCompactSoftshell",
"obstaclePotentialModel" : "org.vadere.simulator.models.potential.PotentialFieldObstacleCompactSoftshell",
@@ -195,7 +170,8 @@
"digitsPerCoordinate" : 2,
"useFixedSeed" : true,
"fixedSeed" : 1,
- "simulationSeed" : 1
+ "simulationSeed" : 1,
+ "useSalientBehavior" : false
},
"topography" : {
"attributes" : {
@@ -209,6 +185,25 @@
"bounded" : true
},
"obstacles" : [ ],
+ "measurementAreas" : [ {
+ "shape" : {
+ "x" : 39.0,
+ "y" : 0.5,
+ "width" : 2.0,
+ "height" : 3.0,
+ "type" : "RECTANGLE"
+ },
+ "id" : 1
+ }, {
+ "shape" : {
+ "x" : 0.5,
+ "y" : 0.4,
+ "width" : 45.0,
+ "height" : 3.2,
+ "type" : "RECTANGLE"
+ },
+ "id" : 2
+ } ],
"stairs" : [ ],
"targets" : [ {
"id" : 1,
@@ -228,6 +223,7 @@
"startingWithRedLight" : false,
"nextSpeed" : -1.0
} ],
+ "absorbingAreas" : [ ],
"sources" : [ {
"id" : -1,
"shape" : {
@@ -257,7 +253,11 @@
"speedDistributionStandardDeviation" : 0.26,
"minimumSpeed" : 0.5,
"maximumSpeed" : 2.2,
- "acceleration" : 2.0
+ "acceleration" : 2.0,
+ "footStepsToStore" : 4,
+ "searchRadius" : 1.0,
+ "angleCalculationType" : "USE_CENTER",
+ "targetOrientationAngleThreshold" : 45.0
},
"teleporter" : {
"shift" : {
diff --git a/VadereModelCalibration/TestOSM_calibration/scenarios/osm_calibration_minStepSize_0_4625_p18.scenario b/VadereModelCalibration/TestOSM_calibration/scenarios/osm_calibration_minStepSize_0_4625_p18.scenario
index f49feb10c9649f595d6da8e26349bd321aa30e0c..67ac65b2901f39e6e9d5770c797d33ed5f248de5 100644
--- a/VadereModelCalibration/TestOSM_calibration/scenarios/osm_calibration_minStepSize_0_4625_p18.scenario
+++ b/VadereModelCalibration/TestOSM_calibration/scenarios/osm_calibration_minStepSize_0_4625_p18.scenario
@@ -1,7 +1,7 @@
{
"name" : "osm_calibration_minStepSize_0_4625_p18",
"description" : "",
- "release" : "0.7",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -71,13 +71,7 @@
"id" : 11,
"attributesType" : "org.vadere.state.attributes.processor.AttributesFundamentalDiagramCProcessor",
"attributes" : {
- "measurementArea" : {
- "x" : 39.0,
- "y" : 0.5,
- "width" : 2.0,
- "height" : 3.0,
- "type" : "RECTANGLE"
- },
+ "measurementAreaId" : 1,
"pedestrianVelocityProcessorId" : 16
}
}, {
@@ -85,20 +79,8 @@
"id" : 12,
"attributesType" : "org.vadere.state.attributes.processor.AttributesFundamentalDiagramDProcessor",
"attributes" : {
- "measurementArea" : {
- "x" : 39.0,
- "y" : 0.5,
- "width" : 2.0,
- "height" : 3.0,
- "type" : "RECTANGLE"
- },
- "voronoiArea" : {
- "x" : 0.5,
- "y" : 0.4,
- "width" : 45.0,
- "height" : 3.2,
- "type" : "RECTANGLE"
- },
+ "measurementAreaId" : 1,
+ "voronoiMeasurementAreaId" : 2,
"pedestrianVelocityProcessorId" : 16
}
}, {
@@ -106,20 +88,8 @@
"id" : 13,
"attributesType" : "org.vadere.state.attributes.processor.AttributesFundamentalDiagramEProcessor",
"attributes" : {
- "measurementArea" : {
- "x" : 39.0,
- "y" : 0.5,
- "width" : 2.0,
- "height" : 3.0,
- "type" : "RECTANGLE"
- },
- "voronoiArea" : {
- "x" : 0.5,
- "y" : 0.4,
- "width" : 45.0,
- "height" : 3.2,
- "type" : "RECTANGLE"
- },
+ "measurementAreaId" : 1,
+ "voronoiMeasurementAreaId" : 2,
"pedestrianVelocityProcessorId" : 16
}
}, {
@@ -131,7 +101,8 @@
"backSteps" : 3
}
} ],
- "isTimestamped" : true
+ "isTimestamped" : true,
+ "isWriteMetaData" : false
},
"scenario" : {
"mainModel" : "org.vadere.simulator.models.osm.OptimalStepsModel",
@@ -141,6 +112,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -150,25 +123,27 @@
"pedestrianWeight" : 3.5,
"queueWidthLoading" : 1.0,
"pedestrianDynamicWeight" : 6.0,
- "loadingType" : "CONSTANT"
+ "loadingType" : "CONSTANT",
+ "width" : 0.2,
+ "height" : 1.0
}
},
"org.vadere.state.attributes.models.AttributesOSM" : {
"stepCircleResolution" : 18,
"numberOfCircles" : 1,
+ "optimizationType" : "NELDER_MEAD",
"varyStepDirection" : true,
+ "movementType" : "ARBITRARY",
"stepLengthIntercept" : 0.4625,
"stepLengthSlopeSpeed" : 0.2345,
"stepLengthSD" : 0.036,
"movementThreshold" : 0.0,
"minStepLength" : 0.0,
+ "minimumStepLength" : false,
"maxStepDuration" : 1.7976931348623157E308,
- "optimizationType" : "NELDER_MEAD",
- "movementType" : "ARBITRARY",
"dynamicStepLength" : false,
"updateType" : "EVENT_DRIVEN",
"seeSmallWalls" : false,
- "minimumStepLength" : false,
"targetPotentialModel" : "org.vadere.simulator.models.potential.fields.PotentialFieldTargetGrid",
"pedestrianPotentialModel" : "org.vadere.simulator.models.potential.PotentialFieldPedestrianCompactSoftshell",
"obstaclePotentialModel" : "org.vadere.simulator.models.potential.PotentialFieldObstacleCompactSoftshell",
@@ -195,7 +170,8 @@
"digitsPerCoordinate" : 2,
"useFixedSeed" : true,
"fixedSeed" : 1,
- "simulationSeed" : 1
+ "simulationSeed" : 1,
+ "useSalientBehavior" : false
},
"topography" : {
"attributes" : {
@@ -209,6 +185,25 @@
"bounded" : true
},
"obstacles" : [ ],
+ "measurementAreas" : [ {
+ "shape" : {
+ "x" : 39.0,
+ "y" : 0.5,
+ "width" : 2.0,
+ "height" : 3.0,
+ "type" : "RECTANGLE"
+ },
+ "id" : 1
+ }, {
+ "shape" : {
+ "x" : 0.5,
+ "y" : 0.4,
+ "width" : 45.0,
+ "height" : 3.2,
+ "type" : "RECTANGLE"
+ },
+ "id" : 2
+ } ],
"stairs" : [ ],
"targets" : [ {
"id" : 1,
@@ -228,6 +223,7 @@
"startingWithRedLight" : false,
"nextSpeed" : -1.0
} ],
+ "absorbingAreas" : [ ],
"sources" : [ {
"id" : -1,
"shape" : {
@@ -257,7 +253,11 @@
"speedDistributionStandardDeviation" : 0.26,
"minimumSpeed" : 0.5,
"maximumSpeed" : 2.2,
- "acceleration" : 2.0
+ "acceleration" : 2.0,
+ "footStepsToStore" : 4,
+ "searchRadius" : 1.0,
+ "angleCalculationType" : "USE_CENTER",
+ "targetOrientationAngleThreshold" : 45.0
},
"teleporter" : {
"shift" : {
diff --git a/VadereModelCalibration/TestOSM_calibration/scenarios/osm_calibration_minStepSize_0_4625_p4.scenario b/VadereModelCalibration/TestOSM_calibration/scenarios/osm_calibration_minStepSize_0_4625_p4.scenario
index 73aa12c390344e9809189d929646b3d0c9f7c0b9..658f11830012fcf6253fbb59aa92619853104d42 100644
--- a/VadereModelCalibration/TestOSM_calibration/scenarios/osm_calibration_minStepSize_0_4625_p4.scenario
+++ b/VadereModelCalibration/TestOSM_calibration/scenarios/osm_calibration_minStepSize_0_4625_p4.scenario
@@ -1,7 +1,7 @@
{
"name" : "osm_calibration_minStepSize_0_4625_p4",
"description" : "",
- "release" : "0.7",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -71,13 +71,7 @@
"id" : 11,
"attributesType" : "org.vadere.state.attributes.processor.AttributesFundamentalDiagramCProcessor",
"attributes" : {
- "measurementArea" : {
- "x" : 39.0,
- "y" : 0.5,
- "width" : 2.0,
- "height" : 3.0,
- "type" : "RECTANGLE"
- },
+ "measurementAreaId" : 1,
"pedestrianVelocityProcessorId" : 16
}
}, {
@@ -85,20 +79,8 @@
"id" : 12,
"attributesType" : "org.vadere.state.attributes.processor.AttributesFundamentalDiagramDProcessor",
"attributes" : {
- "measurementArea" : {
- "x" : 39.0,
- "y" : 0.5,
- "width" : 2.0,
- "height" : 3.0,
- "type" : "RECTANGLE"
- },
- "voronoiArea" : {
- "x" : 0.5,
- "y" : 0.4,
- "width" : 45.0,
- "height" : 3.2,
- "type" : "RECTANGLE"
- },
+ "measurementAreaId" : 1,
+ "voronoiMeasurementAreaId" : 2,
"pedestrianVelocityProcessorId" : 16
}
}, {
@@ -106,20 +88,8 @@
"id" : 13,
"attributesType" : "org.vadere.state.attributes.processor.AttributesFundamentalDiagramEProcessor",
"attributes" : {
- "measurementArea" : {
- "x" : 39.0,
- "y" : 0.5,
- "width" : 2.0,
- "height" : 3.0,
- "type" : "RECTANGLE"
- },
- "voronoiArea" : {
- "x" : 0.5,
- "y" : 0.4,
- "width" : 45.0,
- "height" : 3.2,
- "type" : "RECTANGLE"
- },
+ "measurementAreaId" : 1,
+ "voronoiMeasurementAreaId" : 2,
"pedestrianVelocityProcessorId" : 16
}
}, {
@@ -131,7 +101,8 @@
"backSteps" : 3
}
} ],
- "isTimestamped" : true
+ "isTimestamped" : true,
+ "isWriteMetaData" : false
},
"scenario" : {
"mainModel" : "org.vadere.simulator.models.osm.OptimalStepsModel",
@@ -141,6 +112,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -150,25 +123,27 @@
"pedestrianWeight" : 3.5,
"queueWidthLoading" : 1.0,
"pedestrianDynamicWeight" : 6.0,
- "loadingType" : "CONSTANT"
+ "loadingType" : "CONSTANT",
+ "width" : 0.2,
+ "height" : 1.0
}
},
"org.vadere.state.attributes.models.AttributesOSM" : {
"stepCircleResolution" : 4,
"numberOfCircles" : 1,
+ "optimizationType" : "NELDER_MEAD",
"varyStepDirection" : true,
+ "movementType" : "ARBITRARY",
"stepLengthIntercept" : 0.4625,
"stepLengthSlopeSpeed" : 0.2345,
"stepLengthSD" : 0.036,
"movementThreshold" : 0.0,
"minStepLength" : 0.0,
+ "minimumStepLength" : false,
"maxStepDuration" : 1.7976931348623157E308,
- "optimizationType" : "NELDER_MEAD",
- "movementType" : "ARBITRARY",
"dynamicStepLength" : false,
"updateType" : "EVENT_DRIVEN",
"seeSmallWalls" : false,
- "minimumStepLength" : false,
"targetPotentialModel" : "org.vadere.simulator.models.potential.fields.PotentialFieldTargetGrid",
"pedestrianPotentialModel" : "org.vadere.simulator.models.potential.PotentialFieldPedestrianCompactSoftshell",
"obstaclePotentialModel" : "org.vadere.simulator.models.potential.PotentialFieldObstacleCompactSoftshell",
@@ -195,7 +170,8 @@
"digitsPerCoordinate" : 2,
"useFixedSeed" : true,
"fixedSeed" : 1,
- "simulationSeed" : 1
+ "simulationSeed" : 1,
+ "useSalientBehavior" : false
},
"topography" : {
"attributes" : {
@@ -209,6 +185,25 @@
"bounded" : true
},
"obstacles" : [ ],
+ "measurementAreas" : [ {
+ "shape" : {
+ "x" : 39.0,
+ "y" : 0.5,
+ "width" : 2.0,
+ "height" : 3.0,
+ "type" : "RECTANGLE"
+ },
+ "id" : 1
+ }, {
+ "shape" : {
+ "x" : 0.5,
+ "y" : 0.4,
+ "width" : 45.0,
+ "height" : 3.2,
+ "type" : "RECTANGLE"
+ },
+ "id" : 2
+ } ],
"stairs" : [ ],
"targets" : [ {
"id" : 1,
@@ -228,6 +223,7 @@
"startingWithRedLight" : false,
"nextSpeed" : -1.0
} ],
+ "absorbingAreas" : [ ],
"sources" : [ {
"id" : -1,
"shape" : {
@@ -257,7 +253,11 @@
"speedDistributionStandardDeviation" : 0.26,
"minimumSpeed" : 0.5,
"maximumSpeed" : 2.2,
- "acceleration" : 2.0
+ "acceleration" : 2.0,
+ "footStepsToStore" : 4,
+ "searchRadius" : 1.0,
+ "angleCalculationType" : "USE_CENTER",
+ "targetOrientationAngleThreshold" : 45.0
},
"teleporter" : {
"shift" : {
diff --git a/VadereModelCalibration/TestOSM_calibration/scenarios/osm_calibration_sivers_2016b.scenario b/VadereModelCalibration/TestOSM_calibration/scenarios/osm_calibration_sivers_2016b.scenario
index b120437d64cc26def226e3307782389579364fda..bad5e85ea6e3756c9ddf4881b9199e71cc85eeb0 100644
--- a/VadereModelCalibration/TestOSM_calibration/scenarios/osm_calibration_sivers_2016b.scenario
+++ b/VadereModelCalibration/TestOSM_calibration/scenarios/osm_calibration_sivers_2016b.scenario
@@ -1,7 +1,7 @@
{
"name" : "osm_calibration_sivers_2016b",
"description" : "",
- "release" : "0.7",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -71,13 +71,7 @@
"id" : 11,
"attributesType" : "org.vadere.state.attributes.processor.AttributesFundamentalDiagramCProcessor",
"attributes" : {
- "measurementArea" : {
- "x" : 39.0,
- "y" : 0.5,
- "width" : 2.0,
- "height" : 3.0,
- "type" : "RECTANGLE"
- },
+ "measurementAreaId" : 1,
"pedestrianVelocityProcessorId" : 16
}
}, {
@@ -85,20 +79,8 @@
"id" : 12,
"attributesType" : "org.vadere.state.attributes.processor.AttributesFundamentalDiagramDProcessor",
"attributes" : {
- "measurementArea" : {
- "x" : 39.0,
- "y" : 0.5,
- "width" : 2.0,
- "height" : 3.0,
- "type" : "RECTANGLE"
- },
- "voronoiArea" : {
- "x" : 0.5,
- "y" : 0.4,
- "width" : 45.0,
- "height" : 3.2,
- "type" : "RECTANGLE"
- },
+ "measurementAreaId" : 1,
+ "voronoiMeasurementAreaId" : 2,
"pedestrianVelocityProcessorId" : 16
}
}, {
@@ -106,20 +88,8 @@
"id" : 13,
"attributesType" : "org.vadere.state.attributes.processor.AttributesFundamentalDiagramEProcessor",
"attributes" : {
- "measurementArea" : {
- "x" : 39.0,
- "y" : 0.5,
- "width" : 2.0,
- "height" : 3.0,
- "type" : "RECTANGLE"
- },
- "voronoiArea" : {
- "x" : 0.5,
- "y" : 0.4,
- "width" : 45.0,
- "height" : 3.2,
- "type" : "RECTANGLE"
- },
+ "measurementAreaId" : 1,
+ "voronoiMeasurementAreaId" : 2,
"pedestrianVelocityProcessorId" : 16
}
}, {
@@ -131,7 +101,8 @@
"backSteps" : 3
}
} ],
- "isTimestamped" : true
+ "isTimestamped" : true,
+ "isWriteMetaData" : false
},
"scenario" : {
"mainModel" : "org.vadere.simulator.models.osm.OptimalStepsModel",
@@ -141,6 +112,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -150,25 +123,27 @@
"pedestrianWeight" : 3.5,
"queueWidthLoading" : 1.0,
"pedestrianDynamicWeight" : 6.0,
- "loadingType" : "CONSTANT"
+ "loadingType" : "CONSTANT",
+ "width" : 0.2,
+ "height" : 1.0
}
},
"org.vadere.state.attributes.models.AttributesOSM" : {
"stepCircleResolution" : 4,
"numberOfCircles" : 1,
+ "optimizationType" : "NELDER_MEAD",
"varyStepDirection" : true,
+ "movementType" : "ARBITRARY",
"stepLengthIntercept" : 0.235,
"stepLengthSlopeSpeed" : 0.302,
"stepLengthSD" : 0.036,
"movementThreshold" : 0.0,
"minStepLength" : 0.235,
+ "minimumStepLength" : true,
"maxStepDuration" : 1.7976931348623157E308,
- "optimizationType" : "NELDER_MEAD",
- "movementType" : "ARBITRARY",
"dynamicStepLength" : true,
"updateType" : "EVENT_DRIVEN",
"seeSmallWalls" : false,
- "minimumStepLength" : true,
"targetPotentialModel" : "org.vadere.simulator.models.potential.fields.PotentialFieldTargetGrid",
"pedestrianPotentialModel" : "org.vadere.simulator.models.potential.PotentialFieldPedestrianCompactSoftshell",
"obstaclePotentialModel" : "org.vadere.simulator.models.potential.PotentialFieldObstacleCompactSoftshell",
@@ -195,7 +170,8 @@
"digitsPerCoordinate" : 2,
"useFixedSeed" : true,
"fixedSeed" : 1,
- "simulationSeed" : 1
+ "simulationSeed" : 1,
+ "useSalientBehavior" : false
},
"topography" : {
"attributes" : {
@@ -209,6 +185,25 @@
"bounded" : true
},
"obstacles" : [ ],
+ "measurementAreas" : [ {
+ "shape" : {
+ "x" : 39.0,
+ "y" : 0.5,
+ "width" : 2.0,
+ "height" : 3.0,
+ "type" : "RECTANGLE"
+ },
+ "id" : 1
+ }, {
+ "shape" : {
+ "x" : 0.5,
+ "y" : 0.4,
+ "width" : 45.0,
+ "height" : 3.2,
+ "type" : "RECTANGLE"
+ },
+ "id" : 2
+ } ],
"stairs" : [ ],
"targets" : [ {
"id" : 1,
@@ -228,6 +223,7 @@
"startingWithRedLight" : false,
"nextSpeed" : -1.0
} ],
+ "absorbingAreas" : [ ],
"sources" : [ {
"id" : -1,
"shape" : {
@@ -257,7 +253,11 @@
"speedDistributionStandardDeviation" : 0.26,
"minimumSpeed" : 0.5,
"maximumSpeed" : 2.2,
- "acceleration" : 2.0
+ "acceleration" : 2.0,
+ "footStepsToStore" : 4,
+ "searchRadius" : 1.0,
+ "angleCalculationType" : "USE_CENTER",
+ "targetOrientationAngleThreshold" : 45.0
},
"teleporter" : {
"shift" : {
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-050-180-180.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-050-180-180.scenario
index 0de2ccadf8cc78a62e0bfd9e0d8de4d1bbb36846..a2cb8326c1fb1899a7169ba64998bef868058fbd 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-050-180-180.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-050-180-180.scenario
@@ -1,8 +1,7 @@
{
"name" : "C-050-180-180",
"description" : "",
- "release" : "1.0",
- "commithash" : "warning: no commit hash",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -155,6 +154,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -364,22 +365,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.55,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 1.37,
- "maximumSpeed" : 1.73,
- "acceleration" : 2.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-050-180-180_GNM.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-050-180-180_GNM.scenario
index dab09329b10858d74a1fe089b638a8a7878f40ac..09d249b8b415615e8d35dc296b8a16ae7eec67df 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-050-180-180_GNM.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-050-180-180_GNM.scenario
@@ -1,8 +1,7 @@
{
"name" : "C-050-180-180_GNM",
"description" : "",
- "release" : "1.0",
- "commithash" : "warning: no commit hash",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -151,6 +150,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -348,22 +349,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.5,
- "maximumSpeed" : 2.2,
- "acceleration" : 2.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-050-180-180_Q.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-050-180-180_Q.scenario
index 28ee778a93b57acd1f8372f43b47c245c699ba2f..e7fe81bf2f99d7003fa38f8bc5eba7e412bc22da 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-050-180-180_Q.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-050-180-180_Q.scenario
@@ -1,8 +1,7 @@
{
"name" : "C-050-180-180_Q",
"description" : "",
- "release" : "1.0",
- "commithash" : "warning: no commit hash",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -155,6 +154,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "QUEUEING",
@@ -364,22 +365,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.55,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 1.37,
- "maximumSpeed" : 1.73,
- "acceleration" : 2.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-060-180-180.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-060-180-180.scenario
index 738dde819213b1594dffcac599f372ba72f643aa..65b0231248a1617835ac7f43a2bd8958c7508b49 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-060-180-180.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-060-180-180.scenario
@@ -1,8 +1,7 @@
{
"name" : "C-060-180-180",
"description" : "",
- "release" : "1.0",
- "commithash" : "warning: no commit hash",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -155,6 +154,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -364,22 +365,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.3,
- "maximumSpeed" : 3.0,
- "acceleration" : 2.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-060-180-180_Q.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-060-180-180_Q.scenario
index b9813a3a1e21c90d948472670cc1a911e1abbd8c..09cf53c642dd36d7d975923b4a444ded4b861698 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-060-180-180_Q.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-060-180-180_Q.scenario
@@ -1,8 +1,7 @@
{
"name" : "C-060-180-180_Q",
"description" : "",
- "release" : "1.0",
- "commithash" : "warning: no commit hash",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -155,6 +154,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "QUEUEING",
@@ -364,22 +365,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.3,
- "maximumSpeed" : 3.0,
- "acceleration" : 2.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-070-180-180.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-070-180-180.scenario
index 0a088a009cf45ecc791c1ae77bb1322374c1075f..fcb20416c7cc3c204a827ef8e99f10d5c0322bc8 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-070-180-180.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-070-180-180.scenario
@@ -1,8 +1,7 @@
{
"name" : "C-070-180-180",
"description" : "",
- "release" : "1.0",
- "commithash" : "warning: no commit hash",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -155,6 +154,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -364,22 +365,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.3,
- "maximumSpeed" : 3.0,
- "acceleration" : 2.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-070-180-180_Q.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-070-180-180_Q.scenario
index fec5254c65b01d180bbff49b216c1ce01e40928c..c528a9149ded9607dde2a3cb88ac5903162f5add 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-070-180-180_Q.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-070-180-180_Q.scenario
@@ -1,8 +1,7 @@
{
"name" : "C-070-180-180_Q",
"description" : "",
- "release" : "1.0",
- "commithash" : "warning: no commit hash",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -155,6 +154,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "QUEUEING",
@@ -364,22 +365,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.3,
- "maximumSpeed" : 3.0,
- "acceleration" : 2.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-100-180-180.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-100-180-180.scenario
index abe4ae46fc8e7e09f9c6d72ccbf2bb59934a3007..b31b1b32c80c540f766521b0544620810e39671f 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-100-180-180.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-100-180-180.scenario
@@ -1,8 +1,7 @@
{
"name" : "C-100-180-180",
"description" : "",
- "release" : "1.0",
- "commithash" : "warning: no commit hash",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -155,6 +154,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -364,22 +365,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.3,
- "maximumSpeed" : 3.0,
- "acceleration" : 2.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-100-180-180_Q.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-100-180-180_Q.scenario
index 178ed005d51eba97b47b435711a4ac4bce2da6d3..d6ca22889d0ad62c8ab9bb7ea2edc1a4a116b1d2 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-100-180-180_Q.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-100-180-180_Q.scenario
@@ -1,8 +1,7 @@
{
"name" : "C-100-180-180_Q",
"description" : "",
- "release" : "1.0",
- "commithash" : "warning: no commit hash",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -155,6 +154,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "QUEUEING",
@@ -364,22 +365,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.3,
- "maximumSpeed" : 3.0,
- "acceleration" : 2.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-145-180-180.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-145-180-180.scenario
index 37b26368671a755612f73e3a61435209713c20d5..bdfc23634274df285e3d0d982d8db0b53d52952f 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-145-180-180.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-145-180-180.scenario
@@ -1,8 +1,7 @@
{
"name" : "C-145-180-180",
"description" : "",
- "release" : "1.0",
- "commithash" : "warning: no commit hash",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -155,6 +154,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -364,22 +365,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.3,
- "maximumSpeed" : 3.0,
- "acceleration" : 2.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-145-180-180_Q.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-145-180-180_Q.scenario
index e47de874758781900288602440d90647076b79cc..85f2d2508a6e705271ad396e42581f0c91dfd4ce 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-145-180-180_Q.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-145-180-180_Q.scenario
@@ -1,8 +1,7 @@
{
"name" : "C-145-180-180_Q",
"description" : "",
- "release" : "1.0",
- "commithash" : "warning: no commit hash",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -155,6 +154,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "QUEUEING",
@@ -364,22 +365,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.3,
- "maximumSpeed" : 3.0,
- "acceleration" : 2.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-070.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-070.scenario
index f983ea56440c8f689bd37ce3ed95ef2085627e81..72e71a05ab6fbc0794671bdfac2ec7f0461d3609 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-070.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-070.scenario
@@ -1,8 +1,7 @@
{
"name" : "C-180-180-070",
"description" : "",
- "release" : "1.0",
- "commithash" : "warning: no commit hash",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -155,6 +154,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -400,22 +401,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.3,
- "maximumSpeed" : 3.0,
- "acceleration" : 2.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-070_Q.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-070_Q.scenario
index 4c72a5447a978d3eec07ed68a6ee73f3d2b441ed..90416a2e23a7eb4ee03c1375efd027226dfa4555 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-070_Q.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-070_Q.scenario
@@ -1,8 +1,7 @@
{
"name" : "C-180-180-070_Q",
"description" : "",
- "release" : "1.0",
- "commithash" : "warning: no commit hash",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -155,6 +154,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "QUEUEING",
@@ -400,22 +401,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.3,
- "maximumSpeed" : 3.0,
- "acceleration" : 2.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-070_UNIT.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-070_UNIT.scenario
index 5fc2214ca49de2bc956fa79d5f5c889d2cea5f30..28a44ef96877c744a95ee41ebbc4a2fec3ddc31c 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-070_UNIT.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-070_UNIT.scenario
@@ -1,8 +1,7 @@
{
"name" : "C-180-180-070_UNIT",
"description" : "",
- "release" : "1.0",
- "commithash" : "warning: no commit hash",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -155,6 +154,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.2,
"type" : "UNIT",
@@ -382,22 +383,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.3,
- "maximumSpeed" : 1.0,
- "acceleration" : 2.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-070_default.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-070_default.scenario
index 70810af9e0bfe9669cdee44cde6f520bc05202f0..f9fee02dd632d120029e939d8de0a6787ce2d6ed 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-070_default.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-070_default.scenario
@@ -1,8 +1,7 @@
{
"name" : "C-180-180-070_default",
"description" : "",
- "release" : "1.0",
- "commithash" : "warning: no commit hash",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -155,6 +154,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.3,
"type" : "OBSTACLES",
@@ -400,22 +401,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.3,
- "maximumSpeed" : 3.0,
- "acceleration" : 2.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-070_ramp.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-070_ramp.scenario
index 4e0a9fb120058900d1f228a76d82c33950a1f46f..9518f254669f9b752dad0dd2b3f2ff54d869e822 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-070_ramp.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-070_ramp.scenario
@@ -1,8 +1,7 @@
{
"name" : "C-180-180-070_ramp",
"description" : "",
- "release" : "1.0",
- "commithash" : "warning: no commit hash",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -155,6 +154,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -412,22 +413,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.3,
- "maximumSpeed" : 1.0,
- "acceleration" : 2.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-095.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-095.scenario
index 524b76353ad207541f5969c47c12bc28bfed93da..425b3f2ac428a7db17a9006815f7cd251db30c0c 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-095.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-095.scenario
@@ -1,8 +1,7 @@
{
"name" : "C-180-180-095",
"description" : "",
- "release" : "1.0",
- "commithash" : "warning: no commit hash",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -155,6 +154,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -382,22 +383,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.3,
- "maximumSpeed" : 3.0,
- "acceleration" : 2.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-095_Q.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-095_Q.scenario
index 5a887ce281421fab8bee0b049fc716b28ed41bd1..001027aa4d741cfcb09c4a4583885963c7ada00c 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-095_Q.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-095_Q.scenario
@@ -1,8 +1,7 @@
{
"name" : "C-180-180-095_Q",
"description" : "",
- "release" : "1.0",
- "commithash" : "warning: no commit hash",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -155,6 +154,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "QUEUEING",
@@ -382,22 +383,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.3,
- "maximumSpeed" : 3.0,
- "acceleration" : 2.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-120.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-120.scenario
index aa69b7f397b018609054a685d373cc93ce1a9c74..d3e64e1a42789074ae471fbf6ddef9a6c5fedd56 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-120.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-120.scenario
@@ -1,8 +1,7 @@
{
"name" : "C-180-180-120",
"description" : "",
- "release" : "1.0",
- "commithash" : "warning: no commit hash",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -155,6 +154,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -382,22 +383,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.3,
- "maximumSpeed" : 3.0,
- "acceleration" : 2.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-120_Q.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-120_Q.scenario
index 4e9a34c5f386bb940c3d19a9a2bebe52e17b9fec..3c7d25c57572c27fe6b782565533cfbd3f58843e 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-120_Q.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-120_Q.scenario
@@ -1,8 +1,7 @@
{
"name" : "C-180-180-120_Q",
"description" : "",
- "release" : "1.0",
- "commithash" : "warning: no commit hash",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -155,6 +154,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "QUEUEING",
@@ -382,22 +383,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.3,
- "maximumSpeed" : 3.0,
- "acceleration" : 2.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-180.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-180.scenario
index 6447fe8307b855a02a386161f5762cc8be8d84ff..fbe98e75a6245a66011d6819b63a68ff5c91c053 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-180.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-180.scenario
@@ -1,8 +1,7 @@
{
"name" : "C-180-180-180",
"description" : "",
- "release" : "1.0",
- "commithash" : "warning: no commit hash",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -155,6 +154,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -364,22 +365,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.3,
- "maximumSpeed" : 3.0,
- "acceleration" : 2.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-180_Q.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-180_Q.scenario
index 7091d9239fbce654cf7781ae4713cff95acd0310..5fee274092efcea9ff6d1fc416e7128c69ebd651 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-180_Q.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/C-180-180-180_Q.scenario
@@ -1,8 +1,7 @@
{
"name" : "C-180-180-180_Q",
"description" : "",
- "release" : "1.0",
- "commithash" : "warning: no commit hash",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -155,6 +154,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "QUEUEING",
@@ -364,22 +365,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.3,
- "maximumSpeed" : 3.0,
- "acceleration" : 2.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-050-240.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-050-240.scenario
index 9039f1a3113cd42130ade86c1c2ca2b7ccadc9e4..80d3dbd678510495cacd96350fe83ca60f85cae7 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-050-240.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-050-240.scenario
@@ -1,8 +1,7 @@
{
"name" : "T-240-050-240",
"description" : "",
- "release" : "1.0",
- "commithash" : "warning: no commit hash",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -207,6 +206,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -499,22 +500,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.3,
- "maximumSpeed" : 3.0,
- "acceleration" : 2.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-050-240_BHM.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-050-240_BHM.scenario
index 3b6ff6d87a7e5ae3a20b4bf60fa4b806ed15b53c..60c30ca859b3e23fa17f93f87248c6ebe994665d 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-050-240_BHM.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-050-240_BHM.scenario
@@ -1,7 +1,7 @@
{
"name" : "T-240-050-240_BHM",
"description" : "",
- "release" : "1.0",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -249,6 +249,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.3,
"type" : "DISTANCE_TO_OBSTACLES",
@@ -510,26 +512,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.3,
- "maximumSpeed" : 3.0,
- "acceleration" : 2.0,
- "footStepsToStore" : 4,
- "searchRadius" : 1.0,
- "angleCalculationType" : "USE_CENTER",
- "targetOrientationAngleThreshold" : 45.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-050-240_OSM.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-050-240_OSM.scenario
index 4ee357c8832a24812d5a8096e60a080466a7a5c4..35a6c1c8e4c3b4f82ba1b96d150a35370610a704 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-050-240_OSM.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-050-240_OSM.scenario
@@ -1,7 +1,7 @@
{
"name" : "T-240-050-240_OSM_",
"description" : "",
- "release" : "1.0",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -213,6 +213,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -505,26 +507,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.3,
- "maximumSpeed" : 3.0,
- "acceleration" : 2.0,
- "footStepsToStore" : 4,
- "searchRadius" : 1.0,
- "angleCalculationType" : "USE_CENTER",
- "targetOrientationAngleThreshold" : 45.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-060-240.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-060-240.scenario
index bee8c99f60e7cfd4e5fbf22c103681b427ed181b..2af8e105edd7614ed246a7da261bf984a6eef3fb 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-060-240.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-060-240.scenario
@@ -1,8 +1,7 @@
{
"name" : "T-240-060-240",
"description" : "",
- "release" : "1.0",
- "commithash" : "warning: no commit hash",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -207,6 +206,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -499,22 +500,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.3,
- "maximumSpeed" : 3.0,
- "acceleration" : 2.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-060-240_BHM.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-060-240_BHM.scenario
index f84e43daab7bb485eafef104a6de9d77f383a855..97c5e11e6c201a798d83ae9a5324ef5d9c335a66 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-060-240_BHM.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-060-240_BHM.scenario
@@ -1,7 +1,7 @@
{
"name" : "T-240-060-240_BHM",
"description" : "",
- "release" : "1.0",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -249,6 +249,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.3,
"type" : "DISTANCE_TO_OBSTACLES",
@@ -510,26 +512,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.3,
- "maximumSpeed" : 3.0,
- "acceleration" : 2.0,
- "footStepsToStore" : 4,
- "searchRadius" : 1.0,
- "angleCalculationType" : "USE_CENTER",
- "targetOrientationAngleThreshold" : 45.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-060-240_OSM.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-060-240_OSM.scenario
index 25b3bc80e60ba1a695f0e12f0fa6fa37f6f8468b..d9805632a3f975b0556830c887fe01f049feee97 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-060-240_OSM.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-060-240_OSM.scenario
@@ -1,7 +1,7 @@
{
"name" : "T-240-060-240_OSM",
"description" : "",
- "release" : "1.0",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -213,6 +213,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -505,26 +507,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.3,
- "maximumSpeed" : 3.0,
- "acceleration" : 2.0,
- "footStepsToStore" : 4,
- "searchRadius" : 1.0,
- "angleCalculationType" : "USE_CENTER",
- "targetOrientationAngleThreshold" : 45.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-080-240.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-080-240.scenario
index 000ac2ee523d0f82a0a657d69a733a7769157116..8d8132e9b68437fdc46312238877b689d9673585 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-080-240.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-080-240.scenario
@@ -1,8 +1,7 @@
{
"name" : "T-240-080-240",
"description" : "",
- "release" : "1.0",
- "commithash" : "warning: no commit hash",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -207,6 +206,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -499,22 +500,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.3,
- "maximumSpeed" : 3.0,
- "acceleration" : 2.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-080-240_BHM.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-080-240_BHM.scenario
index 9e7f5c731896fde70dd465b95f479ff2877d924c..58fada5620111ab597c99b9617a7551e4f9f50e7 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-080-240_BHM.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-080-240_BHM.scenario
@@ -1,7 +1,7 @@
{
"name" : "T-240-080-240_BHM",
"description" : "",
- "release" : "1.0",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -249,6 +249,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.3,
"type" : "DISTANCE_TO_OBSTACLES",
@@ -510,26 +512,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.3,
- "maximumSpeed" : 3.0,
- "acceleration" : 2.0,
- "footStepsToStore" : 4,
- "searchRadius" : 1.0,
- "angleCalculationType" : "USE_CENTER",
- "targetOrientationAngleThreshold" : 45.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-080-240_OSM.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-080-240_OSM.scenario
index 07a786c1c07e96e4a62cd053b907e26f34b21c58..2f61d5bbe5d9bcff7893356123e5e464e4a16257 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-080-240_OSM.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-080-240_OSM.scenario
@@ -1,7 +1,7 @@
{
"name" : "T-240-080-240_OSM",
"description" : "",
- "release" : "1.0",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -213,6 +213,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -505,26 +507,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.3,
- "maximumSpeed" : 3.0,
- "acceleration" : 2.0,
- "footStepsToStore" : 4,
- "searchRadius" : 1.0,
- "angleCalculationType" : "USE_CENTER",
- "targetOrientationAngleThreshold" : 45.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-100-240.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-100-240.scenario
index 8a9ca0e5cf6383ee4820344eb5899ee4082bda41..2a9d374bc24037504f58861467a431c28908417c 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-100-240.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-100-240.scenario
@@ -1,8 +1,7 @@
{
"name" : "T-240-100-240",
"description" : "",
- "release" : "1.0",
- "commithash" : "warning: no commit hash",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -207,6 +206,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -499,22 +500,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.3,
- "maximumSpeed" : 3.0,
- "acceleration" : 2.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-100-240_BHM.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-100-240_BHM.scenario
index e8d0c61530f87dbc5b1333291412d48942ee9e4c..09d23ed61b588515be0399ce80b91c4e72e472ec 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-100-240_BHM.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-100-240_BHM.scenario
@@ -1,7 +1,7 @@
{
"name" : "T-240-100-240_BHM",
"description" : "",
- "release" : "1.0",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -249,6 +249,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.3,
"type" : "DISTANCE_TO_OBSTACLES",
@@ -510,26 +512,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.3,
- "maximumSpeed" : 3.0,
- "acceleration" : 2.0,
- "footStepsToStore" : 4,
- "searchRadius" : 1.0,
- "angleCalculationType" : "USE_CENTER",
- "targetOrientationAngleThreshold" : 45.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-100-240_OSM.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-100-240_OSM.scenario
index 1847920863c570d202d416a22d8cbe594e4d818a..17be235193f424fcac423112429924bf5aeacecc 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-100-240_OSM.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-100-240_OSM.scenario
@@ -1,7 +1,7 @@
{
"name" : "T-240-100-240_OSM",
"description" : "",
- "release" : "1.0",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -213,6 +213,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -505,26 +507,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.3,
- "maximumSpeed" : 3.0,
- "acceleration" : 2.0,
- "footStepsToStore" : 4,
- "searchRadius" : 1.0,
- "angleCalculationType" : "USE_CENTER",
- "targetOrientationAngleThreshold" : 45.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-120-240.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-120-240.scenario
index b786735c2f582072b365dc9f4c5077d6b8437699..86dc9772aebff7bc211d329d014964725748d392 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-120-240.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-120-240.scenario
@@ -1,8 +1,7 @@
{
"name" : "T-240-120-240",
"description" : "",
- "release" : "1.0",
- "commithash" : "warning: no commit hash",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -214,6 +213,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -488,22 +489,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.3,
- "maximumSpeed" : 3.0,
- "acceleration" : 2.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-120-240_BHM.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-120-240_BHM.scenario
index 1177e95874e4799f87d2d3937c78e6f22810db19..ea19d18e650a9774dd3d3a3a096dff23d4796a4b 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-120-240_BHM.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-120-240_BHM.scenario
@@ -1,7 +1,7 @@
{
"name" : "T-240-120-240_BHM",
"description" : "",
- "release" : "1.0",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -249,6 +249,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.3,
"type" : "OBSTACLES",
@@ -492,26 +494,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.3,
- "maximumSpeed" : 3.0,
- "acceleration" : 2.0,
- "footStepsToStore" : 4,
- "searchRadius" : 1.0,
- "angleCalculationType" : "USE_CENTER",
- "targetOrientationAngleThreshold" : 45.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-120-240_OSM.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-120-240_OSM.scenario
index f4f7e1a6451b3ac5c60def927660d7556d22cdb9..d0dabb17c11e42d5271927c524119889bfebec0f 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-120-240_OSM.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-120-240_OSM.scenario
@@ -1,7 +1,7 @@
{
"name" : "T-240-120-240_OSM",
"description" : "",
- "release" : "1.0",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -213,6 +213,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -487,26 +489,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.3,
- "maximumSpeed" : 2.38,
- "acceleration" : 2.0,
- "footStepsToStore" : 4,
- "searchRadius" : 1.0,
- "angleCalculationType" : "USE_CENTER",
- "targetOrientationAngleThreshold" : 45.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-150-240.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-150-240.scenario
index 99d2217823cf719dd1c7eff2a2ada82cfc9663f4..1c3d1862788af4e539e22a76c5f6688db89ac59d 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-150-240.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-150-240.scenario
@@ -1,8 +1,7 @@
{
"name" : "T-240-150-240",
"description" : "",
- "release" : "1.0",
- "commithash" : "warning: no commit hash",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -207,6 +206,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -481,22 +482,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.3,
- "maximumSpeed" : 3.0,
- "acceleration" : 2.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-150-240_BHM.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-150-240_BHM.scenario
index 9516e51de8f0471a3a243ec4061e7a6d873a9969..b7519023024c1c61ec91e4bd8e0a43263e020dab 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-150-240_BHM.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-150-240_BHM.scenario
@@ -1,7 +1,7 @@
{
"name" : "T-240-150-240_BHM",
"description" : "",
- "release" : "1.0",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -249,6 +249,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.3,
"type" : "DISTANCE_TO_OBSTACLES",
@@ -492,26 +494,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.3,
- "maximumSpeed" : 3.0,
- "acceleration" : 2.0,
- "footStepsToStore" : 4,
- "searchRadius" : 1.0,
- "angleCalculationType" : "USE_CENTER",
- "targetOrientationAngleThreshold" : 45.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-150-240_OSM.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-150-240_OSM.scenario
index db19e63095321f710378c19b501f0c7a86796061..69be897dfff7d6152a99abea29058b806d7c2bde 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-150-240_OSM.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-150-240_OSM.scenario
@@ -1,7 +1,7 @@
{
"name" : "T-240-150-240_OSM",
"description" : "",
- "release" : "1.0",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -213,6 +213,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -487,26 +489,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.3,
- "maximumSpeed" : 3.0,
- "acceleration" : 2.0,
- "footStepsToStore" : 4,
- "searchRadius" : 1.0,
- "angleCalculationType" : "USE_CENTER",
- "targetOrientationAngleThreshold" : 45.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-240-240.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-240-240.scenario
index a55dbf3c10a5c70abe1e6300fbffcd0dd9d1377d..a989452a871ed15c50b328a7927bf9004178bafb 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-240-240.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-240-240.scenario
@@ -1,8 +1,7 @@
{
"name" : "T-240-240-240",
"description" : "",
- "release" : "1.0",
- "commithash" : "warning: no commit hash",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -207,6 +206,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -481,22 +482,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.3,
- "maximumSpeed" : 3.0,
- "acceleration" : 2.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-240-240_BHM.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-240-240_BHM.scenario
index 38076de28faa7764eafa00987146d9119a0c4e44..31d3a817167065d642cf8aac5beb1a5c5ace0d4c 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-240-240_BHM.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-240-240_BHM.scenario
@@ -1,7 +1,7 @@
{
"name" : "T-240-240-240_BHM",
"description" : "",
- "release" : "1.0",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -249,6 +249,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.3,
"type" : "DISTANCE_TO_OBSTACLES",
@@ -492,26 +494,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.3,
- "maximumSpeed" : 3.0,
- "acceleration" : 2.0,
- "footStepsToStore" : 4,
- "searchRadius" : 1.0,
- "angleCalculationType" : "USE_CENTER",
- "targetOrientationAngleThreshold" : 45.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-240-240_OSM.scenario b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-240-240_OSM.scenario
index b7727e04fee6cfc92452d4677495cbf86a6ba813..a25e2f73a8669b1dae0e061f3886c8e76e29e797 100644
--- a/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-240-240_OSM.scenario
+++ b/VadereModelCalibration/TestOSM_zhang-2011/scenarios/T-240-240-240_OSM.scenario
@@ -1,7 +1,7 @@
{
"name" : "T-240-240-240_OSM",
"description" : "",
- "release" : "1.0",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -213,6 +213,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
@@ -487,26 +489,7 @@
"targetOrientationAngleThreshold" : 45.0
},
"teleporter" : null,
- "attributesCar" : {
- "id" : -1,
- "radius" : 0.195,
- "densityDependentSpeed" : false,
- "speedDistributionMean" : 1.34,
- "speedDistributionStandardDeviation" : 0.26,
- "minimumSpeed" : 0.3,
- "maximumSpeed" : 3.0,
- "acceleration" : 2.0,
- "footStepsToStore" : 4,
- "searchRadius" : 1.0,
- "angleCalculationType" : "USE_CENTER",
- "targetOrientationAngleThreshold" : 45.0,
- "length" : 4.5,
- "width" : 1.7,
- "direction" : {
- "x" : 1.0,
- "y" : 0.0
- }
- }
+ "attributesCar" : null
},
"eventInfos" : [ ]
}
diff --git a/VadereModelTests/TestBHM/scenarios/floor_field_navigation_test_displaced_ok.scenario b/VadereModelTests/TestBHM/scenarios/floor_field_navigation_test_displaced_ok.scenario
index 9a3d136d31060d7832f0acefbcad320fd6fd61d0..e77c3394421740c1533e336bb95083f199f7527c 100644
--- a/VadereModelTests/TestBHM/scenarios/floor_field_navigation_test_displaced_ok.scenario
+++ b/VadereModelTests/TestBHM/scenarios/floor_field_navigation_test_displaced_ok.scenario
@@ -1,7 +1,7 @@
{
"name" : "floor_field_navigation_test_displaced_ok",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -59,6 +59,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.2,
"type" : "DISTANCE_TO_OBSTACLES",
diff --git a/VadereModelTests/TestBHM/scenarios/floor_field_navigation_test_ok.scenario b/VadereModelTests/TestBHM/scenarios/floor_field_navigation_test_ok.scenario
index 98a9cefd376b56f2bdb96383160868b9d8ac55a0..27ec96957ffdc6715a09908eb0475fe453f54c7c 100644
--- a/VadereModelTests/TestBHM/scenarios/floor_field_navigation_test_ok.scenario
+++ b/VadereModelTests/TestBHM/scenarios/floor_field_navigation_test_ok.scenario
@@ -1,7 +1,7 @@
{
"name" : "floor_field_navigation_test_ok",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -59,6 +59,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.2,
"type" : "DISTANCE_TO_OBSTACLES",
diff --git a/VadereModelTests/TestEvents/BangEvent/scenarios/01_unsupported_event_exception_for_unsupported_models.scenario b/VadereModelTests/TestEvents/BangEvent/scenarios/01_unsupported_event_exception_for_unsupported_models.scenario
index 2bab6a1d43911aea1e9be8be7346e9b7dd639ff6..e7a2e4939804de0c7540493d6f6132c94513d340 100644
--- a/VadereModelTests/TestEvents/BangEvent/scenarios/01_unsupported_event_exception_for_unsupported_models.scenario
+++ b/VadereModelTests/TestEvents/BangEvent/scenarios/01_unsupported_event_exception_for_unsupported_models.scenario
@@ -1,7 +1,7 @@
{
"name" : "01_unsupported_event_exception_for_unsupported_models",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -75,6 +75,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestEvents/BangEvent/scenarios/02_bang_event_one_agent.scenario b/VadereModelTests/TestEvents/BangEvent/scenarios/02_bang_event_one_agent.scenario
index 6a60cff488728a57bc2577c7bcd03e7622b7f650..fb242685dbadf21c49c7a2ac01898253831581ca 100644
--- a/VadereModelTests/TestEvents/BangEvent/scenarios/02_bang_event_one_agent.scenario
+++ b/VadereModelTests/TestEvents/BangEvent/scenarios/02_bang_event_one_agent.scenario
@@ -1,7 +1,7 @@
{
"name" : "02_bang_event_one_agent",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -75,6 +75,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestEvents/BangEvent/scenarios/03_bang_event_multiple_agents.scenario b/VadereModelTests/TestEvents/BangEvent/scenarios/03_bang_event_multiple_agents.scenario
index cbbf99d8b5d4a8980371da79ac11b54291462cc4..7c7aacc2ba6d2f8e34fa193213adb2d378d552c7 100644
--- a/VadereModelTests/TestEvents/BangEvent/scenarios/03_bang_event_multiple_agents.scenario
+++ b/VadereModelTests/TestEvents/BangEvent/scenarios/03_bang_event_multiple_agents.scenario
@@ -1,7 +1,7 @@
{
"name" : "03_bang_event_multiple_agents",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -75,6 +75,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestEvents/BangEvent/scenarios/04_bang_event_one_agent_one_obstacle.scenario b/VadereModelTests/TestEvents/BangEvent/scenarios/04_bang_event_one_agent_one_obstacle.scenario
index 09042f3b4d68d7d6ba785d60f6b37ee079393bc6..f9c601202d65c93a268add37654557e397bdf37e 100644
--- a/VadereModelTests/TestEvents/BangEvent/scenarios/04_bang_event_one_agent_one_obstacle.scenario
+++ b/VadereModelTests/TestEvents/BangEvent/scenarios/04_bang_event_one_agent_one_obstacle.scenario
@@ -1,7 +1,7 @@
{
"name" : "04_bang_event_one_agent_one_obstacle",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -75,6 +75,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestEvents/BangEvent/scenarios/05_bang_event_narrowed_street.scenario b/VadereModelTests/TestEvents/BangEvent/scenarios/05_bang_event_narrowed_street.scenario
index 1df0fe2b54c87b06a41d225922670af3f412ddb8..9d595f3cb1ea87d5df004f115240942f9ec58f2a 100644
--- a/VadereModelTests/TestEvents/BangEvent/scenarios/05_bang_event_narrowed_street.scenario
+++ b/VadereModelTests/TestEvents/BangEvent/scenarios/05_bang_event_narrowed_street.scenario
@@ -1,7 +1,7 @@
{
"name" : "05_bang_event_narrowed_street",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -83,6 +83,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestEvents/BangEvent/scenarios/06_bang_event_guimaraes_platz.scenario b/VadereModelTests/TestEvents/BangEvent/scenarios/06_bang_event_guimaraes_platz.scenario
index ea094139f0612f75ed368e76a57c2aa17bed3a78..88803bacbf2ff284c542b7929f821b13f41b5a52 100644
--- a/VadereModelTests/TestEvents/BangEvent/scenarios/06_bang_event_guimaraes_platz.scenario
+++ b/VadereModelTests/TestEvents/BangEvent/scenarios/06_bang_event_guimaraes_platz.scenario
@@ -1,7 +1,7 @@
{
"name" : "06_bang_event_guimaraes_platz",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -83,6 +83,8 @@
"potentialFieldResolution" : 1.0,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestEvents/DifferentEvents/scenarios/01_wait_event_osm_sequential.scenario b/VadereModelTests/TestEvents/DifferentEvents/scenarios/01_wait_event_osm_sequential.scenario
index fc1976cd5dee937afb496734718312fb93a27409..b1fbe619adc6408b29d1b3a94aae6b3ca6d481e7 100644
--- a/VadereModelTests/TestEvents/DifferentEvents/scenarios/01_wait_event_osm_sequential.scenario
+++ b/VadereModelTests/TestEvents/DifferentEvents/scenarios/01_wait_event_osm_sequential.scenario
@@ -1,7 +1,7 @@
{
"name" : "01_wait_event_osm_sequential",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -60,6 +60,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestEvents/DifferentEvents/scenarios/02_wait_event_osm_event_driven.scenario b/VadereModelTests/TestEvents/DifferentEvents/scenarios/02_wait_event_osm_event_driven.scenario
index 0c3c43015cd428115d7436a6668626155e288818..2a8090d5fcec4e231038c9e2755e6bbc5cba1c56 100644
--- a/VadereModelTests/TestEvents/DifferentEvents/scenarios/02_wait_event_osm_event_driven.scenario
+++ b/VadereModelTests/TestEvents/DifferentEvents/scenarios/02_wait_event_osm_event_driven.scenario
@@ -1,7 +1,7 @@
{
"name" : "02_wait_event_osm_event_driven",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -60,6 +60,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestEvents/DifferentEvents/scenarios/03_wait_event_recurring_osm_sequential.scenario b/VadereModelTests/TestEvents/DifferentEvents/scenarios/03_wait_event_recurring_osm_sequential.scenario
index 6bbe26ac943e539c3b8c81092a99ad6bfaac83d6..0b0cd57829b1beeb105cb8dcef4900e3672a9cc0 100644
--- a/VadereModelTests/TestEvents/DifferentEvents/scenarios/03_wait_event_recurring_osm_sequential.scenario
+++ b/VadereModelTests/TestEvents/DifferentEvents/scenarios/03_wait_event_recurring_osm_sequential.scenario
@@ -1,7 +1,7 @@
{
"name" : "03_wait_event_recurring_osm_sequential",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -60,6 +60,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestEvents/DifferentEvents/scenarios/04_wait_in_area_event_osm_sequential.scenario b/VadereModelTests/TestEvents/DifferentEvents/scenarios/04_wait_in_area_event_osm_sequential.scenario
index b0666eb0b6232adf6ef93732ac2cf080a45b06b5..117b3ab15ebe970a5f577b168e30a11dc9bf2d46 100644
--- a/VadereModelTests/TestEvents/DifferentEvents/scenarios/04_wait_in_area_event_osm_sequential.scenario
+++ b/VadereModelTests/TestEvents/DifferentEvents/scenarios/04_wait_in_area_event_osm_sequential.scenario
@@ -1,7 +1,7 @@
{
"name" : "04_wait_in_area_event_osm_sequential",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -60,6 +60,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestEvents/DifferentEvents/scenarios/05_wait_in_area_event_bhm.scenario b/VadereModelTests/TestEvents/DifferentEvents/scenarios/05_wait_in_area_event_bhm.scenario
index 97e479e29b3963f47b0d73221c9f9e55afe512c1..c36b3dce2d14961dede0b5d4a815a956b658bc28 100644
--- a/VadereModelTests/TestEvents/DifferentEvents/scenarios/05_wait_in_area_event_bhm.scenario
+++ b/VadereModelTests/TestEvents/DifferentEvents/scenarios/05_wait_in_area_event_bhm.scenario
@@ -1,7 +1,7 @@
{
"name" : "05_wait_in_area_event_bhm",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
diff --git a/VadereModelTests/TestEvents/DifferentEvents/scenarios/06_bang_event_osm_sequential.scenario b/VadereModelTests/TestEvents/DifferentEvents/scenarios/06_bang_event_osm_sequential.scenario
index 5b685f64b48668ac026ce84a72725ea06bae786d..4c8b2f17dac5e03cd3d09639684750043523f9c9 100644
--- a/VadereModelTests/TestEvents/DifferentEvents/scenarios/06_bang_event_osm_sequential.scenario
+++ b/VadereModelTests/TestEvents/DifferentEvents/scenarios/06_bang_event_osm_sequential.scenario
@@ -1,7 +1,7 @@
{
"name" : "06_bang_event_osm_sequential",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -60,6 +60,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestEvents/DifferentEvents/scenarios/07_bang_event_osm_event_driven.scenario b/VadereModelTests/TestEvents/DifferentEvents/scenarios/07_bang_event_osm_event_driven.scenario
index 40f29b2877327f8ab7a0386e1917171c9c13e287..0a6cda1cdd238ec102b4a141895325dda04943ca 100644
--- a/VadereModelTests/TestEvents/DifferentEvents/scenarios/07_bang_event_osm_event_driven.scenario
+++ b/VadereModelTests/TestEvents/DifferentEvents/scenarios/07_bang_event_osm_event_driven.scenario
@@ -1,7 +1,7 @@
{
"name" : "07_bang_event_osm_event_driven",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -60,6 +60,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestGNM/scenarios/basic_1_chicken_gnm1.scenario b/VadereModelTests/TestGNM/scenarios/basic_1_chicken_gnm1.scenario
index d177e6c66eafb0c60ccf30a44494a0f92e47b4e9..3b22eda05a0ece05bc3c11fca55f8d821889af72 100644
--- a/VadereModelTests/TestGNM/scenarios/basic_1_chicken_gnm1.scenario
+++ b/VadereModelTests/TestGNM/scenarios/basic_1_chicken_gnm1.scenario
@@ -1,7 +1,7 @@
{
"name" : "basic_1_chicken_gnm1",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ ],
"processors" : [ ],
@@ -16,6 +16,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestGNM/scenarios/basic_1_chicken_gnm1_displaced.scenario b/VadereModelTests/TestGNM/scenarios/basic_1_chicken_gnm1_displaced.scenario
index 7628a192bc659aa879778cc6a19ec75c4af772c4..ec4026379c235dac7148e935972d8578a107bddd 100644
--- a/VadereModelTests/TestGNM/scenarios/basic_1_chicken_gnm1_displaced.scenario
+++ b/VadereModelTests/TestGNM/scenarios/basic_1_chicken_gnm1_displaced.scenario
@@ -1,7 +1,7 @@
{
"name" : "basic_1_chicken_gnm1_displaced",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ ],
"processors" : [ ],
@@ -16,6 +16,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestGNM/scenarios/basic_1_chicken_gnm2.scenario b/VadereModelTests/TestGNM/scenarios/basic_1_chicken_gnm2.scenario
index 8d8cd1c7001c3b92a810036e2e66810a60c8410e..937910d6e5eb3a75ddd38d797228e3108956f37a 100644
--- a/VadereModelTests/TestGNM/scenarios/basic_1_chicken_gnm2.scenario
+++ b/VadereModelTests/TestGNM/scenarios/basic_1_chicken_gnm2.scenario
@@ -1,7 +1,7 @@
{
"name" : "basic_1_chicken_gnm2",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ ],
"processors" : [ ],
@@ -16,6 +16,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestGNM/scenarios/basic_2_density_gnm1.scenario b/VadereModelTests/TestGNM/scenarios/basic_2_density_gnm1.scenario
index f7b5c981e33162ec80864268a9783559f414645f..f2cbf8b4815b2b8356da9791154dda89e531d1e1 100644
--- a/VadereModelTests/TestGNM/scenarios/basic_2_density_gnm1.scenario
+++ b/VadereModelTests/TestGNM/scenarios/basic_2_density_gnm1.scenario
@@ -1,7 +1,7 @@
{
"name" : "basic_2_density_gnm1",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ ],
"processors" : [ ],
@@ -16,6 +16,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestGNM/scenarios/basic_3_1_wall_gnm1.scenario b/VadereModelTests/TestGNM/scenarios/basic_3_1_wall_gnm1.scenario
index d63d04021e98eaa05a39f48e4bb3bdb3d26547d3..3ef8505fca586e24eeb3df84df031b32ed7242c2 100644
--- a/VadereModelTests/TestGNM/scenarios/basic_3_1_wall_gnm1.scenario
+++ b/VadereModelTests/TestGNM/scenarios/basic_3_1_wall_gnm1.scenario
@@ -1,7 +1,7 @@
{
"name" : "basic_3_1_wall_gnm1",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ ],
"processors" : [ ],
@@ -16,6 +16,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestGNM/scenarios/basic_3_2_wall_gnm1.scenario b/VadereModelTests/TestGNM/scenarios/basic_3_2_wall_gnm1.scenario
index ecffde5bb60f4bad93b284757778c335f426fa19..b758e695fef86dac848f670f253f5ffaf2177e2f 100644
--- a/VadereModelTests/TestGNM/scenarios/basic_3_2_wall_gnm1.scenario
+++ b/VadereModelTests/TestGNM/scenarios/basic_3_2_wall_gnm1.scenario
@@ -1,7 +1,7 @@
{
"name" : "basic_3_2_wall_gnm1",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ ],
"processors" : [ ],
@@ -16,6 +16,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestGNM/scenarios/basic_3_3_wall_gnm1.scenario b/VadereModelTests/TestGNM/scenarios/basic_3_3_wall_gnm1.scenario
index 8eb39bcf8e0b623c8aab9d72d545bffc15dd5aef..384fe0f8d2bb6fb89273b1b21a4a9077706dfe58 100644
--- a/VadereModelTests/TestGNM/scenarios/basic_3_3_wall_gnm1.scenario
+++ b/VadereModelTests/TestGNM/scenarios/basic_3_3_wall_gnm1.scenario
@@ -1,7 +1,7 @@
{
"name" : "basic_3_3_wall_gnm1",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ ],
"processors" : [ ],
@@ -16,6 +16,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestGNM/scenarios/basic_4_1_wall_gnm1.scenario b/VadereModelTests/TestGNM/scenarios/basic_4_1_wall_gnm1.scenario
index dff948e8b95e0235c5230a27dc7d41645d8c1be1..4896f816bacde3519c8ae6a8426e0d566865e3cd 100644
--- a/VadereModelTests/TestGNM/scenarios/basic_4_1_wall_gnm1.scenario
+++ b/VadereModelTests/TestGNM/scenarios/basic_4_1_wall_gnm1.scenario
@@ -1,7 +1,7 @@
{
"name" : "basic_4_1_wall_gnm1",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ ],
"processors" : [ ],
@@ -16,6 +16,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestGNM/scenarios/basic_4_2_wall_gnm1.scenario b/VadereModelTests/TestGNM/scenarios/basic_4_2_wall_gnm1.scenario
index 5ee81523376894373e143556802bdeef4c588e29..3d45f35b58ba1676f506b333d0618271eda2a5dc 100644
--- a/VadereModelTests/TestGNM/scenarios/basic_4_2_wall_gnm1.scenario
+++ b/VadereModelTests/TestGNM/scenarios/basic_4_2_wall_gnm1.scenario
@@ -1,7 +1,7 @@
{
"name" : "basic_4_2_wall_gnm1",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ ],
"processors" : [ ],
@@ -16,6 +16,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestGNM/scenarios/rimea_01_pathway_gnm1.scenario b/VadereModelTests/TestGNM/scenarios/rimea_01_pathway_gnm1.scenario
index 148178752ac544bab1ff6b83be0192fd50f695d9..740af8079c79f15b08762bac2f2be9a9f6dace92 100644
--- a/VadereModelTests/TestGNM/scenarios/rimea_01_pathway_gnm1.scenario
+++ b/VadereModelTests/TestGNM/scenarios/rimea_01_pathway_gnm1.scenario
@@ -1,7 +1,7 @@
{
"name" : "rimea_01_pathway_gnm1",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ ],
"processors" : [ ],
@@ -16,6 +16,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestGNM/scenarios/rimea_04_flow_gnm1_025_h.scenario b/VadereModelTests/TestGNM/scenarios/rimea_04_flow_gnm1_025_h.scenario
index e23963660f07b68ec2aa27fdc27948b3e6df348a..6691899755212de53e269f6eadcc7c79cd05fcf7 100644
--- a/VadereModelTests/TestGNM/scenarios/rimea_04_flow_gnm1_025_h.scenario
+++ b/VadereModelTests/TestGNM/scenarios/rimea_04_flow_gnm1_025_h.scenario
@@ -1,7 +1,7 @@
{
"name" : "rimea_04_flow_gnm1_025_h",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ ],
"processors" : [ ],
@@ -16,6 +16,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestGNM/scenarios/rimea_04_flow_gnm1_050_h.scenario b/VadereModelTests/TestGNM/scenarios/rimea_04_flow_gnm1_050_h.scenario
index 8c51285cd02a49516129f2368081f70166bac17e..9f914ade7822f68f7a4002d240cdf450c970941f 100644
--- a/VadereModelTests/TestGNM/scenarios/rimea_04_flow_gnm1_050_h.scenario
+++ b/VadereModelTests/TestGNM/scenarios/rimea_04_flow_gnm1_050_h.scenario
@@ -1,7 +1,7 @@
{
"name" : "rimea_04_flow_gnm1_050_h",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ ],
"processors" : [ ],
@@ -16,6 +16,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestGNM/scenarios/rimea_04_flow_gnm1_075_h.scenario b/VadereModelTests/TestGNM/scenarios/rimea_04_flow_gnm1_075_h.scenario
index 243694249e989a34acf64d783ccc0432e923a52a..6eef268a95c9664924300feb9df371faba48b4fe 100644
--- a/VadereModelTests/TestGNM/scenarios/rimea_04_flow_gnm1_075_h.scenario
+++ b/VadereModelTests/TestGNM/scenarios/rimea_04_flow_gnm1_075_h.scenario
@@ -1,7 +1,7 @@
{
"name" : "rimea_04_flow_gnm1_075_h",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ ],
"processors" : [ ],
@@ -16,6 +16,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestGNM/scenarios/rimea_04_flow_gnm1_100_h.scenario b/VadereModelTests/TestGNM/scenarios/rimea_04_flow_gnm1_100_h.scenario
index c186394ed26a41fff4c8cb8d8e59777532b540d4..fdec0c5670886b776ce0e380092548db50cb8395 100644
--- a/VadereModelTests/TestGNM/scenarios/rimea_04_flow_gnm1_100_h.scenario
+++ b/VadereModelTests/TestGNM/scenarios/rimea_04_flow_gnm1_100_h.scenario
@@ -1,7 +1,7 @@
{
"name" : "rimea_04_flow_gnm1_100_h",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ ],
"processors" : [ ],
@@ -16,6 +16,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestGNM/scenarios/rimea_04_flow_gnm1_125_h.scenario b/VadereModelTests/TestGNM/scenarios/rimea_04_flow_gnm1_125_h.scenario
index 27c33037ae406b4ea00ba19e6cb3d16ede2ca721..0602e37c52333f3deeb3454bfa7ae99fb929f402 100644
--- a/VadereModelTests/TestGNM/scenarios/rimea_04_flow_gnm1_125_h.scenario
+++ b/VadereModelTests/TestGNM/scenarios/rimea_04_flow_gnm1_125_h.scenario
@@ -1,7 +1,7 @@
{
"name" : "rimea_04_flow_gnm1_125_h",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ ],
"processors" : [ ],
@@ -16,6 +16,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestGNM/scenarios/rimea_05_react_gnm1.scenario b/VadereModelTests/TestGNM/scenarios/rimea_05_react_gnm1.scenario
index 35054bf5b1109a1078aaa88c395c14c6ee2137e7..f8a87409207a0d0643e42b719b7c2daea72ba6fa 100644
--- a/VadereModelTests/TestGNM/scenarios/rimea_05_react_gnm1.scenario
+++ b/VadereModelTests/TestGNM/scenarios/rimea_05_react_gnm1.scenario
@@ -1,7 +1,7 @@
{
"name" : "rimea_05_react_gnm1",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ ],
"processors" : [ ],
@@ -16,6 +16,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestGNM/scenarios/rimea_06_corner_gnm1.scenario b/VadereModelTests/TestGNM/scenarios/rimea_06_corner_gnm1.scenario
index a5901f696dd652e3545ca79888b498d7c92ed828..32dde6be1d71d895c85676cee1c0acc7655d91e3 100644
--- a/VadereModelTests/TestGNM/scenarios/rimea_06_corner_gnm1.scenario
+++ b/VadereModelTests/TestGNM/scenarios/rimea_06_corner_gnm1.scenario
@@ -1,7 +1,7 @@
{
"name" : "rimea_06_corner_gnm1",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ ],
"processors" : [ ],
@@ -16,6 +16,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestGNM/scenarios/rimea_07_speeds_gnm1.scenario b/VadereModelTests/TestGNM/scenarios/rimea_07_speeds_gnm1.scenario
index 07d8b5d970ce16cd4fb05eb87b6db1d3644e6802..6d1b87d2f5d821e1ece433204b273773737ae39e 100644
--- a/VadereModelTests/TestGNM/scenarios/rimea_07_speeds_gnm1.scenario
+++ b/VadereModelTests/TestGNM/scenarios/rimea_07_speeds_gnm1.scenario
@@ -1,7 +1,7 @@
{
"name" : "rimea_07_speeds_gnm1",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ ],
"processors" : [ ],
@@ -16,6 +16,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestGNM/scenarios/rimea_09_publicRoom_gnm1_2.scenario b/VadereModelTests/TestGNM/scenarios/rimea_09_publicRoom_gnm1_2.scenario
index 2d0be4185cc631dda4443bda2df3a01f26a0dd6c..0dacc202f43e9914857d46b4f0fdc51910dde727 100644
--- a/VadereModelTests/TestGNM/scenarios/rimea_09_publicRoom_gnm1_2.scenario
+++ b/VadereModelTests/TestGNM/scenarios/rimea_09_publicRoom_gnm1_2.scenario
@@ -1,7 +1,7 @@
{
"name" : "rimea_09_publicRoom_gnm1_2",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ ],
"processors" : [ ],
@@ -16,6 +16,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestGNM/scenarios/rimea_09_publicRoom_gnm1_4.scenario b/VadereModelTests/TestGNM/scenarios/rimea_09_publicRoom_gnm1_4.scenario
index 613637a098b46196c9b7e419cb87b9f1c853a1e9..b5c8e1e103cb88619de8a076cb1350e64f376997 100644
--- a/VadereModelTests/TestGNM/scenarios/rimea_09_publicRoom_gnm1_4.scenario
+++ b/VadereModelTests/TestGNM/scenarios/rimea_09_publicRoom_gnm1_4.scenario
@@ -1,7 +1,7 @@
{
"name" : "rimea_09_publicRoom_gnm1_4",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ ],
"processors" : [ ],
@@ -16,6 +16,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestGNM/scenarios/rimea_10_pathfinding_gnm1.scenario b/VadereModelTests/TestGNM/scenarios/rimea_10_pathfinding_gnm1.scenario
index 99e2c3799009c4c1db0072e5766570ad79f5141a..1d87aeb81bea2976bd8c2a11f060a070453f4d50 100644
--- a/VadereModelTests/TestGNM/scenarios/rimea_10_pathfinding_gnm1.scenario
+++ b/VadereModelTests/TestGNM/scenarios/rimea_10_pathfinding_gnm1.scenario
@@ -1,7 +1,7 @@
{
"name" : "rimea_10_pathfinding_gnm1",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ ],
"processors" : [ ],
@@ -16,6 +16,8 @@
"potentialFieldResolution" : 0.05,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestGNM/scenarios/rimea_11_exitSelection_gnm1.scenario b/VadereModelTests/TestGNM/scenarios/rimea_11_exitSelection_gnm1.scenario
index 3a0d12d910fa49b6a4a57350e3efbabf3d1f1921..c6f5030f3da60c05f6eedb511243faf089fbbffc 100644
--- a/VadereModelTests/TestGNM/scenarios/rimea_11_exitSelection_gnm1.scenario
+++ b/VadereModelTests/TestGNM/scenarios/rimea_11_exitSelection_gnm1.scenario
@@ -1,7 +1,7 @@
{
"name" : "rimea_11_exitSelection_gnm1",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ ],
"processors" : [ ],
@@ -16,6 +16,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestGNM/scenarios/rimea_12_evacuation_gnm1.scenario b/VadereModelTests/TestGNM/scenarios/rimea_12_evacuation_gnm1.scenario
index fb3ee1a1ce72c7f1498d358cb34f175985d759ab..3e2ee8440f5eedb07d22d96b6293a6b8b6b26f53 100644
--- a/VadereModelTests/TestGNM/scenarios/rimea_12_evacuation_gnm1.scenario
+++ b/VadereModelTests/TestGNM/scenarios/rimea_12_evacuation_gnm1.scenario
@@ -1,7 +1,7 @@
{
"name" : "rimea_12_evacuation_gnm1",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ ],
"processors" : [ ],
@@ -16,6 +16,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestGNM/scenarios/rimea_13_stairs_gnm1.scenario b/VadereModelTests/TestGNM/scenarios/rimea_13_stairs_gnm1.scenario
index fa084e509a9c82d1f59cba7baffd27130343ebf6..df208a9f890538d53beb9be1052f0da16fe84aff 100644
--- a/VadereModelTests/TestGNM/scenarios/rimea_13_stairs_gnm1.scenario
+++ b/VadereModelTests/TestGNM/scenarios/rimea_13_stairs_gnm1.scenario
@@ -1,7 +1,7 @@
{
"name" : "rimea_13_stairs_gnm1",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ ],
"processors" : [ ],
@@ -16,6 +16,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestGNM/scenarios/rimea_14_selectRoute_gnm1.scenario b/VadereModelTests/TestGNM/scenarios/rimea_14_selectRoute_gnm1.scenario
index fd120dd6eb6ef89976644d3357c79c52ead4ebea..6f2eddeadbfa26d1ac26e8669e79c13b9f711e26 100644
--- a/VadereModelTests/TestGNM/scenarios/rimea_14_selectRoute_gnm1.scenario
+++ b/VadereModelTests/TestGNM/scenarios/rimea_14_selectRoute_gnm1.scenario
@@ -1,7 +1,7 @@
{
"name" : "rimea_14_selectRoute_gnm1",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ ],
"processors" : [ ],
@@ -16,6 +16,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestNelderMead/scenarios/counterflow.scenario b/VadereModelTests/TestNelderMead/scenarios/counterflow.scenario
index 55ae6d0d4694ba9ca4579e2aac9fcac1bce43d8a..2fda790e1159780a6f6fd8d6e1fe7a83ab34e3d0 100644
--- a/VadereModelTests/TestNelderMead/scenarios/counterflow.scenario
+++ b/VadereModelTests/TestNelderMead/scenarios/counterflow.scenario
@@ -1,7 +1,7 @@
{
"name" : "counterflow",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ ],
"processors" : [ ],
@@ -47,6 +47,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestNelderMead/scenarios/labyrinth.scenario b/VadereModelTests/TestNelderMead/scenarios/labyrinth.scenario
index 8e4b7965f95d6d2f7ec8dbbf4aadcbe29354ef7d..7f7055f9a22b4a40ec2a00a33bb5d545e8a18bda 100644
--- a/VadereModelTests/TestNelderMead/scenarios/labyrinth.scenario
+++ b/VadereModelTests/TestNelderMead/scenarios/labyrinth.scenario
@@ -1,7 +1,7 @@
{
"name" : "labyrinth",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ ],
"processors" : [ ],
@@ -16,6 +16,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestNelderMead/scenarios/rimea_11_exit_selection_nelder_mead.scenario b/VadereModelTests/TestNelderMead/scenarios/rimea_11_exit_selection_nelder_mead.scenario
index aec59a6a205ba0c40c3b9be3ddb219c948d86fa1..cb9e9038f1b562dabcef5db813f837f8bc13324b 100644
--- a/VadereModelTests/TestNelderMead/scenarios/rimea_11_exit_selection_nelder_mead.scenario
+++ b/VadereModelTests/TestNelderMead/scenarios/rimea_11_exit_selection_nelder_mead.scenario
@@ -1,7 +1,7 @@
{
"name" : "rimea_11_exit_selection_nelder_mead",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ ],
"processors" : [ ],
@@ -47,6 +47,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 2.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestNelderMead/scenarios/s2ucre.scenario b/VadereModelTests/TestNelderMead/scenarios/s2ucre.scenario
index 5ed1feaaf83b01b878a72c5632cedc53285d46f0..40d3a09009bca87cd4d4560f6cefde6c7d1c9193 100644
--- a/VadereModelTests/TestNelderMead/scenarios/s2ucre.scenario
+++ b/VadereModelTests/TestNelderMead/scenarios/s2ucre.scenario
@@ -1,7 +1,7 @@
{
"name" : "s2ucre",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ ],
"processors" : [ ],
@@ -16,6 +16,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestNonWorkingFeatures/scenarios/cooperative_behavior_agents_get_stuck.scenario b/VadereModelTests/TestNonWorkingFeatures/scenarios/cooperative_behavior_agents_get_stuck.scenario
index cdb2b3a3bbde361bb5df0b672be62f1de030dddd..8dee0f47f8724ef745d82c83c7da24040e2c6e6e 100644
--- a/VadereModelTests/TestNonWorkingFeatures/scenarios/cooperative_behavior_agents_get_stuck.scenario
+++ b/VadereModelTests/TestNonWorkingFeatures/scenarios/cooperative_behavior_agents_get_stuck.scenario
@@ -1,7 +1,7 @@
{
"name" : "cooperative_behavior_agents_get_stuck",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -44,6 +44,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestOSMGroup/scenarios/VadereSimulation-GroupBehavior.scenario b/VadereModelTests/TestOSMGroup/scenarios/VadereSimulation-GroupBehavior.scenario
index 0d69b3ac3b71adebbbd18fc2594af7a81cc1522f..270e26a3ea5b2c5d0b7d56c4ea352f3671e22d2e 100644
--- a/VadereModelTests/TestOSMGroup/scenarios/VadereSimulation-GroupBehavior.scenario
+++ b/VadereModelTests/TestOSMGroup/scenarios/VadereSimulation-GroupBehavior.scenario
@@ -1,7 +1,7 @@
{
"name" : "VadereSimulation-GroupBehavior",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -36,6 +36,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestOSMGroup/scenarios/VadereSimulation-GroupBehavior_no_groups.scenario b/VadereModelTests/TestOSMGroup/scenarios/VadereSimulation-GroupBehavior_no_groups.scenario
index a87857bbc6dd60577251c778737888e40c004abb..070cfb8d7ea42336caa5762834ea2707218c1202 100644
--- a/VadereModelTests/TestOSMGroup/scenarios/VadereSimulation-GroupBehavior_no_groups.scenario
+++ b/VadereModelTests/TestOSMGroup/scenarios/VadereSimulation-GroupBehavior_no_groups.scenario
@@ -1,7 +1,7 @@
{
"name" : "VadereSimulation-GroupBehavior_no_groups",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -36,6 +36,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestOSMGroup/scenarios/group_OSM_1Source1Place.scenario b/VadereModelTests/TestOSMGroup/scenarios/group_OSM_1Source1Place.scenario
index 222408ad0be199d73f61b4bd299a871304a3868c..9cc386e5b24b9f83e75f64f2755e62f7126f5fc0 100644
--- a/VadereModelTests/TestOSMGroup/scenarios/group_OSM_1Source1Place.scenario
+++ b/VadereModelTests/TestOSMGroup/scenarios/group_OSM_1Source1Place.scenario
@@ -1,7 +1,7 @@
{
"name" : "group_OSM_1Source1Place",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -39,6 +39,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestOSMGroup/scenarios/group_OSM_1Source1Place_noGroup.scenario b/VadereModelTests/TestOSMGroup/scenarios/group_OSM_1Source1Place_noGroup.scenario
index 8538205988d4d0facaa04a10b88914be90c39cdb..dc0566bedbacdf59f670d76a0921ebcca823ce6a 100644
--- a/VadereModelTests/TestOSMGroup/scenarios/group_OSM_1Source1Place_noGroup.scenario
+++ b/VadereModelTests/TestOSMGroup/scenarios/group_OSM_1Source1Place_noGroup.scenario
@@ -1,7 +1,7 @@
{
"name" : "group_OSM_1Source1Place_noGroup",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -26,6 +26,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestOSMGroup/scenarios/group_OSM_1Source2Places.scenario b/VadereModelTests/TestOSMGroup/scenarios/group_OSM_1Source2Places.scenario
index a364d52bbbcdaffe3bcab257dda36317cf9501a8..477c46048e4e9205451d361fd8d724da9cb38b98 100644
--- a/VadereModelTests/TestOSMGroup/scenarios/group_OSM_1Source2Places.scenario
+++ b/VadereModelTests/TestOSMGroup/scenarios/group_OSM_1Source2Places.scenario
@@ -1,7 +1,7 @@
{
"name" : "group_OSM_1Source2Places",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -29,6 +29,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestOSMGroup/scenarios/group_OSM_1Source2Places_noGroups.scenario b/VadereModelTests/TestOSMGroup/scenarios/group_OSM_1Source2Places_noGroups.scenario
index c8439e351f3a9b89c3a5bae322ee7e6861e75c46..f78a8594b1c602aab35aec6783f0c2977d63851c 100644
--- a/VadereModelTests/TestOSMGroup/scenarios/group_OSM_1Source2Places_noGroups.scenario
+++ b/VadereModelTests/TestOSMGroup/scenarios/group_OSM_1Source2Places_noGroups.scenario
@@ -1,7 +1,7 @@
{
"name" : "group_OSM_1Source2Places_noGroups",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -26,6 +26,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestOSMGroup/scenarios/group_OSM_2Sources1Place.scenario b/VadereModelTests/TestOSMGroup/scenarios/group_OSM_2Sources1Place.scenario
index e240f9d26a939abedc71ef289f343f91343c98fb..4538fcc2e6faf8458a8a02a2419c32619f384da4 100644
--- a/VadereModelTests/TestOSMGroup/scenarios/group_OSM_2Sources1Place.scenario
+++ b/VadereModelTests/TestOSMGroup/scenarios/group_OSM_2Sources1Place.scenario
@@ -1,7 +1,7 @@
{
"name" : "group_OSM_2Sources1Place",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -29,6 +29,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestOSMGroup/scenarios/group_OSM_2Sources1Place_2Group_and_3Group.scenario b/VadereModelTests/TestOSMGroup/scenarios/group_OSM_2Sources1Place_2Group_and_3Group.scenario
index 457b4f1e38d1b12fe8bb1dcab67a516cf79a3718..ce776c1c5d54a0273c9e9f10d6f0114cf651cdc1 100644
--- a/VadereModelTests/TestOSMGroup/scenarios/group_OSM_2Sources1Place_2Group_and_3Group.scenario
+++ b/VadereModelTests/TestOSMGroup/scenarios/group_OSM_2Sources1Place_2Group_and_3Group.scenario
@@ -1,7 +1,7 @@
{
"name" : "group_OSM_2Sources1Place_2Group_and_3Group",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -29,6 +29,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestOSMGroup/scenarios/group_OSM_4Source4Place_SEQ_2G_3G_4G_5G.scenario b/VadereModelTests/TestOSMGroup/scenarios/group_OSM_4Source4Place_SEQ_2G_3G_4G_5G.scenario
index 2e3f5dc012bb75a986471b3db7a9e89ea96eec5f..829160f63e64e8032e9dffce9556188c08dd6a00 100644
--- a/VadereModelTests/TestOSMGroup/scenarios/group_OSM_4Source4Place_SEQ_2G_3G_4G_5G.scenario
+++ b/VadereModelTests/TestOSMGroup/scenarios/group_OSM_4Source4Place_SEQ_2G_3G_4G_5G.scenario
@@ -1,7 +1,7 @@
{
"name" : "group_OSM_4Source4Place_SEQ_2G_3G_4G_5G",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -32,6 +32,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_4Source4Place_v2_EVD_2G_3G_4G_5G.scenario b/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_4Source4Place_v2_EVD_2G_3G_4G_5G.scenario
index a97a4e3c45761a0931b457824e3643cbcbbcab06..e8f01873412b8f1fc9747b787fc35e366a9a79f7 100644
--- a/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_4Source4Place_v2_EVD_2G_3G_4G_5G.scenario
+++ b/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_4Source4Place_v2_EVD_2G_3G_4G_5G.scenario
@@ -1,7 +1,7 @@
{
"name" : "group_OSM_CGM_4Source4Place_v2_EVD_2G_3G_4G_5G",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -39,6 +39,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_4Source4Place_v2_SEQ_2G_3G_4G_5G.scenario b/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_4Source4Place_v2_SEQ_2G_3G_4G_5G.scenario
index 9b1404a53c2ccf8a18968b64b64c6d7cea0b39ae..4fc90b59f0b66d8b451a96f44dae9162dcef393f 100644
--- a/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_4Source4Place_v2_SEQ_2G_3G_4G_5G.scenario
+++ b/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_4Source4Place_v2_SEQ_2G_3G_4G_5G.scenario
@@ -1,7 +1,7 @@
{
"name" : "group_OSM_CGM_4Source4Place_v2_SEQ_2G_3G_4G_5G",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -39,6 +39,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_classroom_1group.scenario b/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_classroom_1group.scenario
index 8606bae97333e95f948b32d790969e98e5961616..a43c3e73e16b9b997233b899707e950250df34cc 100644
--- a/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_classroom_1group.scenario
+++ b/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_classroom_1group.scenario
@@ -1,7 +1,7 @@
{
"name" : "group_OSM_CGM_classroom_1group",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -71,6 +71,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_classroom_2group.scenario b/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_classroom_2group.scenario
index b4ff37d3479797e1f39a243e4673bf3ac1329bbf..f79ae4a9abc45b3dca3b34eeb570fe8a7d569512 100644
--- a/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_classroom_2group.scenario
+++ b/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_classroom_2group.scenario
@@ -1,7 +1,7 @@
{
"name" : "group_OSM_CGM_classroom_2group",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -71,6 +71,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_classroom_3group.scenario b/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_classroom_3group.scenario
index e81d1e66b6238232f802dcbe87b6c2546ff42f58..7257bffb9a226ad902a27bd12fb8433d52447e82 100644
--- a/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_classroom_3group.scenario
+++ b/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_classroom_3group.scenario
@@ -1,7 +1,7 @@
{
"name" : "group_OSM_CGM_classroom_3group",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -71,6 +71,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_classroom_4group.scenario b/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_classroom_4group.scenario
index 8a571b0834de32f170b550b7408daa819e28b08d..1b7fcbc5b9aed7cc5f88451a35eb365854a4456f 100644
--- a/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_classroom_4group.scenario
+++ b/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_classroom_4group.scenario
@@ -1,7 +1,7 @@
{
"name" : "group_OSM_CGM_classroom_4group",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -71,6 +71,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_labratory_15group.scenario b/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_labratory_15group.scenario
index 9311d8bb3e979be094474c5161847bfc01a80aaf..3e7950aba1f73a51dfdd4efa5679d3ed945bc51b 100644
--- a/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_labratory_15group.scenario
+++ b/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_labratory_15group.scenario
@@ -1,7 +1,7 @@
{
"name" : "group_OSM_CGM_labratory_15group",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -71,6 +71,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_labratory_1group.scenario b/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_labratory_1group.scenario
index eb618172cd3a2f61019256eae7fe5776d17cfbeb..976de1432be7691e53d4b2dcc4e74e72f27907aa 100644
--- a/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_labratory_1group.scenario
+++ b/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_labratory_1group.scenario
@@ -1,7 +1,7 @@
{
"name" : "group_OSM_CGM_labratory_1group",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -71,6 +71,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_labratory_25group.scenario b/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_labratory_25group.scenario
index 55310360a34ff08869b5c9b635aabba57eacedb5..b15261792de9b3ab4c16e57ea0a543736c2cd5ca 100644
--- a/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_labratory_25group.scenario
+++ b/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_labratory_25group.scenario
@@ -1,7 +1,7 @@
{
"name" : "group_OSM_CGM_labratory_25group",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -71,6 +71,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_labratory_2group.scenario b/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_labratory_2group.scenario
index d3002025397e936db261d94d782a437cfe257269..8bd661ba709e49b715280ac05ea7c5fc4b7fd176 100644
--- a/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_labratory_2group.scenario
+++ b/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_labratory_2group.scenario
@@ -1,7 +1,7 @@
{
"name" : "group_OSM_CGM_labratory_2group",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -71,6 +71,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_labratory_4group.scenario b/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_labratory_4group.scenario
index d164ae87153df0b06aac944a830c6ae123dc9331..7a4399ba46f737d50a833b354f77683fd3b8dba4 100644
--- a/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_labratory_4group.scenario
+++ b/VadereModelTests/TestOSMGroup/scenarios/group_OSM_CGM_labratory_4group.scenario
@@ -1,7 +1,7 @@
{
"name" : "group_OSM_CGM_labratory_4group",
"description" : "",
- "release" : "1.1",
+ "release" : "1.2",
"processWriters" : {
"files" : [ {
"type" : "org.vadere.simulator.projects.dataprocessing.outputfile.TimestepPedestrianIdOutputFile",
@@ -71,6 +71,8 @@
"potentialFieldResolution" : 0.1,
"obstacleGridPenalty" : 0.1,
"targetAttractionStrength" : 1.0,
+ "cacheType" : "NO_CACHE",
+ "cacheDir" : "",
"timeCostAttributes" : {
"standardDeviation" : 0.7,
"type" : "UNIT",
diff --git a/VadereModelTests/TestOSMGroup/scenarios/group_OSM_long_corr_2Group.scenario b/VadereModelTests/TestOSMGroup/scenarios/group_OSM_long_corr_2Group.scenario
index 9810e8f51ebf3eca8b6690dd84f079ea9b5a147a..052e4a61d42349f2cfab526bb18031c7daee5c1d 100644
--- a/VadereModelTests/TestOSMGroup/scenarios/group_OSM_long_corr_2Group.scenario
+++ b/VadereModelTests/TestOSMGroup/scenarios/group_OSM_lo