Skip to content

Dynamic analysis bounds #4

@abyrd

Description

@abyrd

Situation: Generating walk isochrones for a batch of origin points scattered across a very large geographic area.

Problem: Responses are relatively slow, isochrones limited to low resolution.

Reason: Each request finds and returns travel times to millions of destination cells that are unreachable or irrelevant. Each increase in zoom level makes this number even higher by a factor of 4.

Fix: Re-center the bounds of the analysis at each iteration of the main loop over the origin points.

Detail: We can define a fixed window height in degrees latitude (deltaLat), approximate the corresponding window width in degrees (deltaLat / cos(lat)) and build bounds separately for each origin point. With a few conversion factors, bounds can be derived from maximum walking distance, or speed and maximum travel time of interest. The JSON request contains values like the following:

 "bounds": {
    "north": 45.5506,
    "south": 45.49672,
    "east": -122.63489,
    "west": -122.72003
  },

Currently I believe this will cause re-linkage to occur on every request. Including re-linking time this approach is likely to be even slower than using large fixed bounds, though it should allow higher resolution. To speed up the process, we'd need to make it possible to build the network with its base pointset at a nonstandard (higher) zoom level.

On the other hand, these would be linkages of very small (e.g. 2x2 km or smaller) areas. Depending on the amount of geographic overlap and how thoroughly they cover the entire network area, linking each of them separately may be as fast or faster than linking the entire network's area, and in any case should result in lower memory consumption.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions