|
11 | 11 | import com.conveyal.analysis.models.OpportunityDataset;
|
12 | 12 | import com.conveyal.analysis.models.RegionalAnalysis;
|
13 | 13 | import com.conveyal.analysis.persistence.Persistence;
|
14 |
| -import com.conveyal.analysis.results.AccessCsvResultWriter; |
15 | 14 | import com.conveyal.analysis.results.CsvResultType;
|
16 |
| -import com.conveyal.analysis.results.GridResultWriter; |
17 | 15 | import com.conveyal.analysis.results.MultiOriginAssembler;
|
18 |
| -import com.conveyal.analysis.results.PathCsvResultWriter; |
19 |
| -import com.conveyal.analysis.results.RegionalResultWriter; |
20 |
| -import com.conveyal.analysis.results.TemporalDensityCsvResultWriter; |
21 |
| -import com.conveyal.analysis.results.TimeCsvResultWriter; |
22 | 16 | import com.conveyal.analysis.util.JsonUtil;
|
23 | 17 | import com.conveyal.file.FileStorage;
|
24 | 18 | import com.conveyal.file.FileStorageFormat;
|
|
54 | 48 | import static com.conveyal.analysis.util.JsonUtil.toJson;
|
55 | 49 | import static com.conveyal.file.FileCategory.BUNDLES;
|
56 | 50 | import static com.conveyal.file.FileCategory.RESULTS;
|
57 |
| -import static com.conveyal.r5.common.Util.notNullOrEmpty; |
58 | 51 | import static com.conveyal.r5.transit.TransportNetworkCache.getScenarioFilename;
|
59 | 52 | import static com.google.common.base.Preconditions.checkArgument;
|
60 | 53 | import static com.google.common.base.Preconditions.checkNotNull;
|
@@ -521,51 +514,8 @@ private RegionalAnalysis createRegionalAnalysis (Request req, Response res) thro
|
521 | 514 | // Create the regional job
|
522 | 515 | var regionalJob = new Job(task, WorkerTags.fromRegionalAnalysis(regionalAnalysis));
|
523 | 516 |
|
524 |
| - // Create the result writers. Store their result file paths in the database. |
525 |
| - var resultWriters = new ArrayList<RegionalResultWriter>(); |
526 |
| - if (!task.makeTauiSite) { |
527 |
| - if (task.recordAccessibility) { |
528 |
| - if (task.originPointSet != null) { |
529 |
| - // Freeform origins - create CSV regional analysis results |
530 |
| - var accessWriter = new AccessCsvResultWriter(task); |
531 |
| - resultWriters.add(accessWriter); |
532 |
| - regionalAnalysis.resultStorage.put(accessWriter.resultType(), accessWriter.getFileName()); |
533 |
| - } else { |
534 |
| - // Gridded origins - create gridded regional analysis results |
535 |
| - resultWriters.addAll(GridResultWriter.createWritersFromTask(regionalAnalysis, task)); |
536 |
| - } |
537 |
| - } |
538 |
| - |
539 |
| - if (task.recordTimes) { |
540 |
| - var timesWriter = new TimeCsvResultWriter(task); |
541 |
| - resultWriters.add(timesWriter); |
542 |
| - regionalAnalysis.resultStorage.put(timesWriter.resultType(), timesWriter.getFileName()); |
543 |
| - } |
544 |
| - |
545 |
| - if (task.includePathResults) { |
546 |
| - var pathsWriter = new PathCsvResultWriter(task); |
547 |
| - resultWriters.add(pathsWriter); |
548 |
| - regionalAnalysis.resultStorage.put(pathsWriter.resultType(), pathsWriter.getFileName()); |
549 |
| - } |
550 |
| - |
551 |
| - if (task.includeTemporalDensity) { |
552 |
| - if (task.originPointSet == null) { |
553 |
| - // Gridded origins. The full temporal density information is probably too voluminous to be useful. |
554 |
| - // We might want to record a grid of dual accessibility values, but this will require some serious |
555 |
| - // refactoring of the GridResultWriter. |
556 |
| - // if (job.templateTask.dualAccessibilityThreshold > 0) { ... } |
557 |
| - throw AnalysisServerException.badRequest("Temporal density of opportunities cannot be recorded for gridded origin points."); |
558 |
| - } else { |
559 |
| - var tDensityWriter = new TemporalDensityCsvResultWriter(task); |
560 |
| - resultWriters.add(tDensityWriter); |
561 |
| - regionalAnalysis.resultStorage.put(tDensityWriter.resultType(), tDensityWriter.getFileName()); |
562 |
| - } |
563 |
| - } |
564 |
| - checkArgument(notNullOrEmpty(resultWriters), "A regional analysis should always create at least one grid or CSV file."); |
565 |
| - } |
566 |
| - |
567 | 517 | // Create the multi-origin assembler with the writers.
|
568 |
| - var assembler = new MultiOriginAssembler(regionalJob, resultWriters); |
| 518 | + var assembler = new MultiOriginAssembler(regionalJob, regionalAnalysis.createResultWriters(task)); |
569 | 519 |
|
570 | 520 | // Stored scenario is needed by workers. Must be done ahead of enqueueing the job.
|
571 | 521 | storeScenarioJson(task.graphId, task.scenario);
|
|
0 commit comments