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 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 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 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 valueMap = annotationMirror.getElementValues(); + for (Map.Entry 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 singleAnnotation, Class 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