abstreet/rustdoc/popdat/index.html
2022-07-20 12:00:24 +00:00

50 lines
11 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="popdat (“population data”) generates `Scenarios` given a map and some external census data. Some of this functionality should maybe be reorganized or incorporated into the importer crate, but for now, its convenient to organize it here."><meta name="keywords" content="rust, rustlang, rust-lang, popdat"><title>popdat - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../normalize.css"><link rel="stylesheet" type="text/css" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../dark.css" disabled><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../storage.js"></script><script src="../crates.js"></script><script defer src="../main.js"></script>
<noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../favicon.svg"></head><body class="rustdoc mod crate"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">&#9776;</button><a class="sidebar-logo" href="../popdat/index.html"><div class="logo-container"><img class="rust-logo" src="../rust-logo.svg" alt="logo"></div>
</a><h2 class="location"></h2>
</nav>
<nav class="sidebar"><a class="sidebar-logo" href="../popdat/index.html"><div class="logo-container"><img class="rust-logo" src="../rust-logo.svg" alt="logo"></div>
</a><h2 class="location"><a href="#">Crate popdat</a></h2><div class="sidebar-elems"><div class="block"><ul><li class="version">Version 0.1.0</li><li><a id="all-types" href="all.html">All Items</a></li></div></ul><section><div class="block"><ul><li><a href="#modules">Modules</a></li><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#functions">Functions</a></li></ul></div></section><div id="sidebar-vars" data-name="popdat" data-ty="mod" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../popdat/index.html"><img class="rust-logo" src="../rust-logo.svg" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
<h1 class="fqn"><span class="in-band">Crate <a class="mod" href="#">popdat</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../src/popdat/lib.rs.html#1-133">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">&#x2212;</span>]</a></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>popdat (“population data”) generates <code>Scenarios</code> given a map and some external census data.
Some of this functionality should maybe be reorganized or incorporated into the importer crate,
but for now, its convenient to organize it here.</p>
<p>All of the types and methods here are tied to a single <code>Map</code>. Even if a city is chopped up into
multiple pieces, for now, lets assume were just dealing with one map at a time. That lets us
use the maps coordinate system, building IDs, etc.</p>
<p>These types form a pipeline:</p>
<ol>
<li>For a given map, find some census data that describes how many people live in different
areas of the city. (CensusArea)</li>
<li>Take the CensusAreas and turn them into individual CensusPersons, by randomly choosing a
specific building on the map as their home, and assigning specific attributes based on the
census datas distribution.</li>
<li>For each CensusPerson, classify them into a PersonType, then generate a Schedule of
different Activities throughout the day.</li>
<li>Pick specific buildings to visit to satisfy the Schedule.</li>
</ol>
</div></details><h2 id="modules" class="small-section-header"><a href="#modules">Modules</a></h2>
<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="mod" href="activities/index.html" title="popdat::activities mod">activities</a><span title="Restricted Visibility">&nbsp;🔒</span> </div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="distribute_people/index.html" title="popdat::distribute_people mod">distribute_people</a><span title="Restricted Visibility">&nbsp;🔒</span> </div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="import_census/index.html" title="popdat::import_census mod">import_census</a><span title="Restricted Visibility">&nbsp;🔒</span> </div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="make_person/index.html" title="popdat::make_person mod">make_person</a><span title="Restricted Visibility">&nbsp;🔒</span> </div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="od/index.html" title="popdat::od mod">od</a></div><div class="item-right docblock-short"><p>This is a standalone pipeline for generating a Scenario, starting from origin-destination data
(also called desire lines), which gives a count of commuters between two zones, breaking down
by mode.</p>
</div></div></div><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2>
<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.CensusArea.html" title="popdat::CensusArea struct">CensusArea</a></div><div class="item-right docblock-short"><p>Represents aggregate demographic data for some part of a city. These could be census tracts or
blocks, depending what data we find. All of the areas should roughly partition the map we
probably dont need to guarantee we cover every single building, but we definitely shouldnt
have two overlapping areas.</p>
</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.CensusPerson.html" title="popdat::CensusPerson struct">CensusPerson</a></div><div class="item-right docblock-short"><p>Demographic information for a single person</p>
</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.Config.html" title="popdat::Config struct">Config</a></div><div class="item-right docblock-short"><p>Any arbitrarily chosen parameters needed should be put here, so they can be controlled from the
UI or tuned for different cities.</p>
</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.Schedule.html" title="popdat::Schedule struct">Schedule</a></div><div class="item-right docblock-short"><p>A single persons daily schedule. Its assumed that someone always starts at home. And for most
people, the last entry should probably be Activity::Home.</p>
</div></div></div><h2 id="enums" class="small-section-header"><a href="#enums">Enums</a></h2>
<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.Activity.html" title="popdat::Activity enum">Activity</a></div><div class="item-right docblock-short"><p>Different things people might do in the day. Maybe its more clear to call this a
DestinationType or similar.</p>
</div></div><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.PersonType.html" title="popdat::PersonType enum">PersonType</a></div><div class="item-right docblock-short"><p>It might be useful to classify a CensusPerson into different categories to figure out their
Schedule.</p>
</div></div></div><h2 id="functions" class="small-section-header"><a href="#functions">Functions</a></h2>
<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.distribute_population_to_homes.html" title="popdat::distribute_population_to_homes fn">distribute_population_to_homes</a></div><div class="item-right docblock-short"><p>Starting from some number of total people living in a polygonal area, randomly distribute them
to residential buildings within that area. Returns a list of homes with the number of residents
in each.</p>
</div></div><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.generate_scenario.html" title="popdat::generate_scenario fn">generate_scenario</a></div><div class="item-right docblock-short"><p>Wires together all the pieces, so you can just hand this any map, and itll automatically find
appropriate census data, and use it to produce a Scenario.</p>
</div></div></div></section></div></main><div id="rustdoc-vars" data-root-path="../" data-current-crate="popdat" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.62.1 (e092d0b6b 2022-07-16)" ></div>
</body></html>