diff --git a/alias=latest/404.html b/alias=latest/404.html deleted file mode 100644 index 781914cf7..000000000 --- a/alias=latest/404.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - Redirecting - - - - - Redirecting to ../viz_interim_based_on_new_inputs/404.html... - - \ No newline at end of file diff --git a/alias=latest/configuration/index.html b/alias=latest/configuration/index.html deleted file mode 100644 index 502737c81..000000000 --- a/alias=latest/configuration/index.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - Redirecting - - - - - Redirecting to ../../viz_interim_based_on_new_inputs/configuration/... - - \ No newline at end of file diff --git a/alias=latest/input/index.html b/alias=latest/input/index.html deleted file mode 100644 index 6e71d2397..000000000 --- a/alias=latest/input/index.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - Redirecting - - - - - Redirecting to ../../viz_interim_based_on_new_inputs/input/... - - \ No newline at end of file diff --git a/alias=latest/model/index.html b/alias=latest/model/index.html deleted file mode 100644 index 85dc97592..000000000 --- a/alias=latest/model/index.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - Redirecting - - - - - Redirecting to ../../viz_interim_based_on_new_inputs/model/... - - \ No newline at end of file diff --git a/alias=latest/output/index.html b/alias=latest/output/index.html deleted file mode 100644 index ebfe71307..000000000 --- a/alias=latest/output/index.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - Redirecting - - - - - Redirecting to ../../viz_interim_based_on_new_inputs/output/... - - \ No newline at end of file diff --git a/alias=latest/scenarios/index.html b/alias=latest/scenarios/index.html deleted file mode 100644 index f0cce6208..000000000 --- a/alias=latest/scenarios/index.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - Redirecting - - - - - Redirecting to ../../viz_interim_based_on_new_inputs/scenarios/... - - \ No newline at end of file diff --git a/versions.json b/versions.json index b3cedcfbe..84bb2ac38 100644 --- a/versions.json +++ b/versions.json @@ -1 +1 @@ -[{"version": "viz_interim_based_on_new_inputs", "title": "viz_interim_based_on_new_inputs", "aliases": ["alias=latest"]}, {"version": "main", "title": "main", "aliases": ["latest"]}, {"version": "generic_tracing_tools", "title": "generic_tracing_tools", "aliases": []}, {"version": "basis_data_update", "title": "basis_data_update", "aliases": []}] \ No newline at end of file +[{"version": "main", "title": "main", "aliases": ["latest"]}, {"version": "generic_tracing_tools", "title": "generic_tracing_tools", "aliases": []}, {"version": "basis_data_update", "title": "basis_data_update", "aliases": []}] \ No newline at end of file diff --git a/viz_interim_based_on_new_inputs/404.html b/viz_interim_based_on_new_inputs/404.html deleted file mode 100755 index b3c28a844..000000000 --- a/viz_interim_based_on_new_inputs/404.html +++ /dev/null @@ -1,412 +0,0 @@ - - - - - - - - - - - - - - - - - - Bay Area UrbanSim - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
- - - - - - -
- - -
- -
- - - - - - - - - -
-
- - - -
-
-
- - - - - - -
-
-
- - - -
-
-
- - - -
-
-
- - - -
-
- -

404 - Not found

- -
-
- - - - -
- -
- - - -
-
-
-
- - - - - - - - - \ No newline at end of file diff --git a/viz_interim_based_on_new_inputs/BAUS-Models.png b/viz_interim_based_on_new_inputs/BAUS-Models.png deleted file mode 100755 index 8c7328166..000000000 Binary files a/viz_interim_based_on_new_inputs/BAUS-Models.png and /dev/null differ diff --git a/viz_interim_based_on_new_inputs/BAUS-Scenario-Models.png b/viz_interim_based_on_new_inputs/BAUS-Scenario-Models.png deleted file mode 100755 index 8ffae4da1..000000000 Binary files a/viz_interim_based_on_new_inputs/BAUS-Scenario-Models.png and /dev/null differ diff --git a/viz_interim_based_on_new_inputs/Core-Models.png b/viz_interim_based_on_new_inputs/Core-Models.png deleted file mode 100755 index dfdd42e21..000000000 Binary files a/viz_interim_based_on_new_inputs/Core-Models.png and /dev/null differ diff --git a/viz_interim_based_on_new_inputs/assets/_mkdocstrings.css b/viz_interim_based_on_new_inputs/assets/_mkdocstrings.css deleted file mode 100755 index e69de29bb..000000000 diff --git a/viz_interim_based_on_new_inputs/assets/images/favicon.png b/viz_interim_based_on_new_inputs/assets/images/favicon.png deleted file mode 100755 index 1cf13b9f9..000000000 Binary files a/viz_interim_based_on_new_inputs/assets/images/favicon.png and /dev/null differ diff --git a/viz_interim_based_on_new_inputs/assets/javascripts/bundle.220ee61c.min.js b/viz_interim_based_on_new_inputs/assets/javascripts/bundle.220ee61c.min.js deleted file mode 100755 index 116072a11..000000000 --- a/viz_interim_based_on_new_inputs/assets/javascripts/bundle.220ee61c.min.js +++ /dev/null @@ -1,29 +0,0 @@ -"use strict";(()=>{var Ci=Object.create;var gr=Object.defineProperty;var Ri=Object.getOwnPropertyDescriptor;var ki=Object.getOwnPropertyNames,Ht=Object.getOwnPropertySymbols,Hi=Object.getPrototypeOf,yr=Object.prototype.hasOwnProperty,nn=Object.prototype.propertyIsEnumerable;var rn=(e,t,r)=>t in e?gr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,P=(e,t)=>{for(var r in t||(t={}))yr.call(t,r)&&rn(e,r,t[r]);if(Ht)for(var r of Ht(t))nn.call(t,r)&&rn(e,r,t[r]);return e};var on=(e,t)=>{var r={};for(var n in e)yr.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&Ht)for(var n of Ht(e))t.indexOf(n)<0&&nn.call(e,n)&&(r[n]=e[n]);return r};var Pt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Pi=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of ki(t))!yr.call(e,o)&&o!==r&&gr(e,o,{get:()=>t[o],enumerable:!(n=Ri(t,o))||n.enumerable});return e};var yt=(e,t,r)=>(r=e!=null?Ci(Hi(e)):{},Pi(t||!e||!e.__esModule?gr(r,"default",{value:e,enumerable:!0}):r,e));var sn=Pt((xr,an)=>{(function(e,t){typeof xr=="object"&&typeof an!="undefined"?t():typeof define=="function"&&define.amd?define(t):t()})(xr,function(){"use strict";function e(r){var n=!0,o=!1,i=null,s={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function a(O){return!!(O&&O!==document&&O.nodeName!=="HTML"&&O.nodeName!=="BODY"&&"classList"in O&&"contains"in O.classList)}function f(O){var Qe=O.type,De=O.tagName;return!!(De==="INPUT"&&s[Qe]&&!O.readOnly||De==="TEXTAREA"&&!O.readOnly||O.isContentEditable)}function c(O){O.classList.contains("focus-visible")||(O.classList.add("focus-visible"),O.setAttribute("data-focus-visible-added",""))}function u(O){O.hasAttribute("data-focus-visible-added")&&(O.classList.remove("focus-visible"),O.removeAttribute("data-focus-visible-added"))}function p(O){O.metaKey||O.altKey||O.ctrlKey||(a(r.activeElement)&&c(r.activeElement),n=!0)}function m(O){n=!1}function d(O){a(O.target)&&(n||f(O.target))&&c(O.target)}function h(O){a(O.target)&&(O.target.classList.contains("focus-visible")||O.target.hasAttribute("data-focus-visible-added"))&&(o=!0,window.clearTimeout(i),i=window.setTimeout(function(){o=!1},100),u(O.target))}function v(O){document.visibilityState==="hidden"&&(o&&(n=!0),Y())}function Y(){document.addEventListener("mousemove",N),document.addEventListener("mousedown",N),document.addEventListener("mouseup",N),document.addEventListener("pointermove",N),document.addEventListener("pointerdown",N),document.addEventListener("pointerup",N),document.addEventListener("touchmove",N),document.addEventListener("touchstart",N),document.addEventListener("touchend",N)}function B(){document.removeEventListener("mousemove",N),document.removeEventListener("mousedown",N),document.removeEventListener("mouseup",N),document.removeEventListener("pointermove",N),document.removeEventListener("pointerdown",N),document.removeEventListener("pointerup",N),document.removeEventListener("touchmove",N),document.removeEventListener("touchstart",N),document.removeEventListener("touchend",N)}function N(O){O.target.nodeName&&O.target.nodeName.toLowerCase()==="html"||(n=!1,B())}document.addEventListener("keydown",p,!0),document.addEventListener("mousedown",m,!0),document.addEventListener("pointerdown",m,!0),document.addEventListener("touchstart",m,!0),document.addEventListener("visibilitychange",v,!0),Y(),r.addEventListener("focus",d,!0),r.addEventListener("blur",h,!0),r.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&r.host?r.host.setAttribute("data-js-focus-visible",""):r.nodeType===Node.DOCUMENT_NODE&&(document.documentElement.classList.add("js-focus-visible"),document.documentElement.setAttribute("data-js-focus-visible",""))}if(typeof window!="undefined"&&typeof document!="undefined"){window.applyFocusVisiblePolyfill=e;var t;try{t=new CustomEvent("focus-visible-polyfill-ready")}catch(r){t=document.createEvent("CustomEvent"),t.initCustomEvent("focus-visible-polyfill-ready",!1,!1,{})}window.dispatchEvent(t)}typeof document!="undefined"&&e(document)})});var cn=Pt(Er=>{(function(e){var t=function(){try{return!!Symbol.iterator}catch(c){return!1}},r=t(),n=function(c){var u={next:function(){var p=c.shift();return{done:p===void 0,value:p}}};return r&&(u[Symbol.iterator]=function(){return u}),u},o=function(c){return encodeURIComponent(c).replace(/%20/g,"+")},i=function(c){return decodeURIComponent(String(c).replace(/\+/g," "))},s=function(){var c=function(p){Object.defineProperty(this,"_entries",{writable:!0,value:{}});var m=typeof p;if(m!=="undefined")if(m==="string")p!==""&&this._fromString(p);else if(p instanceof c){var d=this;p.forEach(function(B,N){d.append(N,B)})}else if(p!==null&&m==="object")if(Object.prototype.toString.call(p)==="[object Array]")for(var h=0;hd[0]?1:0}),c._entries&&(c._entries={});for(var p=0;p1?i(d[1]):"")}})})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Er);(function(e){var t=function(){try{var o=new e.URL("b","http://a");return o.pathname="c d",o.href==="http://a/c%20d"&&o.searchParams}catch(i){return!1}},r=function(){var o=e.URL,i=function(f,c){typeof f!="string"&&(f=String(f)),c&&typeof c!="string"&&(c=String(c));var u=document,p;if(c&&(e.location===void 0||c!==e.location.href)){c=c.toLowerCase(),u=document.implementation.createHTMLDocument(""),p=u.createElement("base"),p.href=c,u.head.appendChild(p);try{if(p.href.indexOf(c)!==0)throw new Error(p.href)}catch(O){throw new Error("URL unable to set base "+c+" due to "+O)}}var m=u.createElement("a");m.href=f,p&&(u.body.appendChild(m),m.href=m.href);var d=u.createElement("input");if(d.type="url",d.value=f,m.protocol===":"||!/:/.test(m.href)||!d.checkValidity()&&!c)throw new TypeError("Invalid URL");Object.defineProperty(this,"_anchorElement",{value:m});var h=new e.URLSearchParams(this.search),v=!0,Y=!0,B=this;["append","delete","set"].forEach(function(O){var Qe=h[O];h[O]=function(){Qe.apply(h,arguments),v&&(Y=!1,B.search=h.toString(),Y=!0)}}),Object.defineProperty(this,"searchParams",{value:h,enumerable:!0});var N=void 0;Object.defineProperty(this,"_updateSearchParams",{enumerable:!1,configurable:!1,writable:!1,value:function(){this.search!==N&&(N=this.search,Y&&(v=!1,this.searchParams._fromString(this.search),v=!0))}})},s=i.prototype,a=function(f){Object.defineProperty(s,f,{get:function(){return this._anchorElement[f]},set:function(c){this._anchorElement[f]=c},enumerable:!0})};["hash","host","hostname","port","protocol"].forEach(function(f){a(f)}),Object.defineProperty(s,"search",{get:function(){return this._anchorElement.search},set:function(f){this._anchorElement.search=f,this._updateSearchParams()},enumerable:!0}),Object.defineProperties(s,{toString:{get:function(){var f=this;return function(){return f.href}}},href:{get:function(){return this._anchorElement.href.replace(/\?$/,"")},set:function(f){this._anchorElement.href=f,this._updateSearchParams()},enumerable:!0},pathname:{get:function(){return this._anchorElement.pathname.replace(/(^\/?)/,"/")},set:function(f){this._anchorElement.pathname=f},enumerable:!0},origin:{get:function(){var f={"http:":80,"https:":443,"ftp:":21}[this._anchorElement.protocol],c=this._anchorElement.port!=f&&this._anchorElement.port!=="";return this._anchorElement.protocol+"//"+this._anchorElement.hostname+(c?":"+this._anchorElement.port:"")},enumerable:!0},password:{get:function(){return""},set:function(f){},enumerable:!0},username:{get:function(){return""},set:function(f){},enumerable:!0}}),i.createObjectURL=function(f){return o.createObjectURL.apply(o,arguments)},i.revokeObjectURL=function(f){return o.revokeObjectURL.apply(o,arguments)},e.URL=i};if(t()||r(),e.location!==void 0&&!("origin"in e.location)){var n=function(){return e.location.protocol+"//"+e.location.hostname+(e.location.port?":"+e.location.port:"")};try{Object.defineProperty(e.location,"origin",{get:n,enumerable:!0})}catch(o){setInterval(function(){e.location.origin=n()},100)}}})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Er)});var qr=Pt((Mt,Nr)=>{/*! - * clipboard.js v2.0.11 - * https://clipboardjs.com/ - * - * Licensed MIT © Zeno Rocha - */(function(t,r){typeof Mt=="object"&&typeof Nr=="object"?Nr.exports=r():typeof define=="function"&&define.amd?define([],r):typeof Mt=="object"?Mt.ClipboardJS=r():t.ClipboardJS=r()})(Mt,function(){return function(){var e={686:function(n,o,i){"use strict";i.d(o,{default:function(){return Ai}});var s=i(279),a=i.n(s),f=i(370),c=i.n(f),u=i(817),p=i.n(u);function m(j){try{return document.execCommand(j)}catch(T){return!1}}var d=function(T){var E=p()(T);return m("cut"),E},h=d;function v(j){var T=document.documentElement.getAttribute("dir")==="rtl",E=document.createElement("textarea");E.style.fontSize="12pt",E.style.border="0",E.style.padding="0",E.style.margin="0",E.style.position="absolute",E.style[T?"right":"left"]="-9999px";var H=window.pageYOffset||document.documentElement.scrollTop;return E.style.top="".concat(H,"px"),E.setAttribute("readonly",""),E.value=j,E}var Y=function(T,E){var H=v(T);E.container.appendChild(H);var I=p()(H);return m("copy"),H.remove(),I},B=function(T){var E=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},H="";return typeof T=="string"?H=Y(T,E):T instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(T==null?void 0:T.type)?H=Y(T.value,E):(H=p()(T),m("copy")),H},N=B;function O(j){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?O=function(E){return typeof E}:O=function(E){return E&&typeof Symbol=="function"&&E.constructor===Symbol&&E!==Symbol.prototype?"symbol":typeof E},O(j)}var Qe=function(){var T=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},E=T.action,H=E===void 0?"copy":E,I=T.container,q=T.target,Me=T.text;if(H!=="copy"&&H!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(q!==void 0)if(q&&O(q)==="object"&&q.nodeType===1){if(H==="copy"&&q.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(H==="cut"&&(q.hasAttribute("readonly")||q.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(Me)return N(Me,{container:I});if(q)return H==="cut"?h(q):N(q,{container:I})},De=Qe;function $e(j){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?$e=function(E){return typeof E}:$e=function(E){return E&&typeof Symbol=="function"&&E.constructor===Symbol&&E!==Symbol.prototype?"symbol":typeof E},$e(j)}function Ei(j,T){if(!(j instanceof T))throw new TypeError("Cannot call a class as a function")}function tn(j,T){for(var E=0;E0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof I.action=="function"?I.action:this.defaultAction,this.target=typeof I.target=="function"?I.target:this.defaultTarget,this.text=typeof I.text=="function"?I.text:this.defaultText,this.container=$e(I.container)==="object"?I.container:document.body}},{key:"listenClick",value:function(I){var q=this;this.listener=c()(I,"click",function(Me){return q.onClick(Me)})}},{key:"onClick",value:function(I){var q=I.delegateTarget||I.currentTarget,Me=this.action(q)||"copy",kt=De({action:Me,container:this.container,target:this.target(q),text:this.text(q)});this.emit(kt?"success":"error",{action:Me,text:kt,trigger:q,clearSelection:function(){q&&q.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(I){return vr("action",I)}},{key:"defaultTarget",value:function(I){var q=vr("target",I);if(q)return document.querySelector(q)}},{key:"defaultText",value:function(I){return vr("text",I)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(I){var q=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return N(I,q)}},{key:"cut",value:function(I){return h(I)}},{key:"isSupported",value:function(){var I=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],q=typeof I=="string"?[I]:I,Me=!!document.queryCommandSupported;return q.forEach(function(kt){Me=Me&&!!document.queryCommandSupported(kt)}),Me}}]),E}(a()),Ai=Li},828:function(n){var o=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function s(a,f){for(;a&&a.nodeType!==o;){if(typeof a.matches=="function"&&a.matches(f))return a;a=a.parentNode}}n.exports=s},438:function(n,o,i){var s=i(828);function a(u,p,m,d,h){var v=c.apply(this,arguments);return u.addEventListener(m,v,h),{destroy:function(){u.removeEventListener(m,v,h)}}}function f(u,p,m,d,h){return typeof u.addEventListener=="function"?a.apply(null,arguments):typeof m=="function"?a.bind(null,document).apply(null,arguments):(typeof u=="string"&&(u=document.querySelectorAll(u)),Array.prototype.map.call(u,function(v){return a(v,p,m,d,h)}))}function c(u,p,m,d){return function(h){h.delegateTarget=s(h.target,p),h.delegateTarget&&d.call(u,h)}}n.exports=f},879:function(n,o){o.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},o.nodeList=function(i){var s=Object.prototype.toString.call(i);return i!==void 0&&(s==="[object NodeList]"||s==="[object HTMLCollection]")&&"length"in i&&(i.length===0||o.node(i[0]))},o.string=function(i){return typeof i=="string"||i instanceof String},o.fn=function(i){var s=Object.prototype.toString.call(i);return s==="[object Function]"}},370:function(n,o,i){var s=i(879),a=i(438);function f(m,d,h){if(!m&&!d&&!h)throw new Error("Missing required arguments");if(!s.string(d))throw new TypeError("Second argument must be a String");if(!s.fn(h))throw new TypeError("Third argument must be a Function");if(s.node(m))return c(m,d,h);if(s.nodeList(m))return u(m,d,h);if(s.string(m))return p(m,d,h);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function c(m,d,h){return m.addEventListener(d,h),{destroy:function(){m.removeEventListener(d,h)}}}function u(m,d,h){return Array.prototype.forEach.call(m,function(v){v.addEventListener(d,h)}),{destroy:function(){Array.prototype.forEach.call(m,function(v){v.removeEventListener(d,h)})}}}function p(m,d,h){return a(document.body,m,d,h)}n.exports=f},817:function(n){function o(i){var s;if(i.nodeName==="SELECT")i.focus(),s=i.value;else if(i.nodeName==="INPUT"||i.nodeName==="TEXTAREA"){var a=i.hasAttribute("readonly");a||i.setAttribute("readonly",""),i.select(),i.setSelectionRange(0,i.value.length),a||i.removeAttribute("readonly"),s=i.value}else{i.hasAttribute("contenteditable")&&i.focus();var f=window.getSelection(),c=document.createRange();c.selectNodeContents(i),f.removeAllRanges(),f.addRange(c),s=f.toString()}return s}n.exports=o},279:function(n){function o(){}o.prototype={on:function(i,s,a){var f=this.e||(this.e={});return(f[i]||(f[i]=[])).push({fn:s,ctx:a}),this},once:function(i,s,a){var f=this;function c(){f.off(i,c),s.apply(a,arguments)}return c._=s,this.on(i,c,a)},emit:function(i){var s=[].slice.call(arguments,1),a=((this.e||(this.e={}))[i]||[]).slice(),f=0,c=a.length;for(f;f{"use strict";/*! - * escape-html - * Copyright(c) 2012-2013 TJ Holowaychuk - * Copyright(c) 2015 Andreas Lubbe - * Copyright(c) 2015 Tiancheng "Timothy" Gu - * MIT Licensed - */var rs=/["'&<>]/;Yo.exports=ns;function ns(e){var t=""+e,r=rs.exec(t);if(!r)return t;var n,o="",i=0,s=0;for(i=r.index;i0&&i[i.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!i||c[1]>i[0]&&c[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function W(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n=r.call(e),o,i=[],s;try{for(;(t===void 0||t-- >0)&&!(o=n.next()).done;)i.push(o.value)}catch(a){s={error:a}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(s)throw s.error}}return i}function D(e,t,r){if(r||arguments.length===2)for(var n=0,o=t.length,i;n1||a(m,d)})})}function a(m,d){try{f(n[m](d))}catch(h){p(i[0][3],h)}}function f(m){m.value instanceof et?Promise.resolve(m.value.v).then(c,u):p(i[0][2],m)}function c(m){a("next",m)}function u(m){a("throw",m)}function p(m,d){m(d),i.shift(),i.length&&a(i[0][0],i[0][1])}}function pn(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof Ee=="function"?Ee(e):e[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(i){r[i]=e[i]&&function(s){return new Promise(function(a,f){s=e[i](s),o(a,f,s.done,s.value)})}}function o(i,s,a,f){Promise.resolve(f).then(function(c){i({value:c,done:a})},s)}}function C(e){return typeof e=="function"}function at(e){var t=function(n){Error.call(n),n.stack=new Error().stack},r=e(t);return r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r}var It=at(function(e){return function(r){e(this),this.message=r?r.length+` errors occurred during unsubscription: -`+r.map(function(n,o){return o+1+") "+n.toString()}).join(` - `):"",this.name="UnsubscriptionError",this.errors=r}});function Ve(e,t){if(e){var r=e.indexOf(t);0<=r&&e.splice(r,1)}}var Ie=function(){function e(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var t,r,n,o,i;if(!this.closed){this.closed=!0;var s=this._parentage;if(s)if(this._parentage=null,Array.isArray(s))try{for(var a=Ee(s),f=a.next();!f.done;f=a.next()){var c=f.value;c.remove(this)}}catch(v){t={error:v}}finally{try{f&&!f.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}else s.remove(this);var u=this.initialTeardown;if(C(u))try{u()}catch(v){i=v instanceof It?v.errors:[v]}var p=this._finalizers;if(p){this._finalizers=null;try{for(var m=Ee(p),d=m.next();!d.done;d=m.next()){var h=d.value;try{ln(h)}catch(v){i=i!=null?i:[],v instanceof It?i=D(D([],W(i)),W(v.errors)):i.push(v)}}}catch(v){n={error:v}}finally{try{d&&!d.done&&(o=m.return)&&o.call(m)}finally{if(n)throw n.error}}}if(i)throw new It(i)}},e.prototype.add=function(t){var r;if(t&&t!==this)if(this.closed)ln(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(r=this._finalizers)!==null&&r!==void 0?r:[]).push(t)}},e.prototype._hasParent=function(t){var r=this._parentage;return r===t||Array.isArray(r)&&r.includes(t)},e.prototype._addParent=function(t){var r=this._parentage;this._parentage=Array.isArray(r)?(r.push(t),r):r?[r,t]:t},e.prototype._removeParent=function(t){var r=this._parentage;r===t?this._parentage=null:Array.isArray(r)&&Ve(r,t)},e.prototype.remove=function(t){var r=this._finalizers;r&&Ve(r,t),t instanceof e&&t._removeParent(this)},e.EMPTY=function(){var t=new e;return t.closed=!0,t}(),e}();var Sr=Ie.EMPTY;function jt(e){return e instanceof Ie||e&&"closed"in e&&C(e.remove)&&C(e.add)&&C(e.unsubscribe)}function ln(e){C(e)?e():e.unsubscribe()}var Le={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var st={setTimeout:function(e,t){for(var r=[],n=2;n0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(r){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,r)},t.prototype._subscribe=function(r){return this._throwIfClosed(),this._checkFinalizedStatuses(r),this._innerSubscribe(r)},t.prototype._innerSubscribe=function(r){var n=this,o=this,i=o.hasError,s=o.isStopped,a=o.observers;return i||s?Sr:(this.currentObservers=null,a.push(r),new Ie(function(){n.currentObservers=null,Ve(a,r)}))},t.prototype._checkFinalizedStatuses=function(r){var n=this,o=n.hasError,i=n.thrownError,s=n.isStopped;o?r.error(i):s&&r.complete()},t.prototype.asObservable=function(){var r=new F;return r.source=this,r},t.create=function(r,n){return new xn(r,n)},t}(F);var xn=function(e){ie(t,e);function t(r,n){var o=e.call(this)||this;return o.destination=r,o.source=n,o}return t.prototype.next=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.next)===null||o===void 0||o.call(n,r)},t.prototype.error=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.error)===null||o===void 0||o.call(n,r)},t.prototype.complete=function(){var r,n;(n=(r=this.destination)===null||r===void 0?void 0:r.complete)===null||n===void 0||n.call(r)},t.prototype._subscribe=function(r){var n,o;return(o=(n=this.source)===null||n===void 0?void 0:n.subscribe(r))!==null&&o!==void 0?o:Sr},t}(x);var Et={now:function(){return(Et.delegate||Date).now()},delegate:void 0};var wt=function(e){ie(t,e);function t(r,n,o){r===void 0&&(r=1/0),n===void 0&&(n=1/0),o===void 0&&(o=Et);var i=e.call(this)||this;return i._bufferSize=r,i._windowTime=n,i._timestampProvider=o,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=n===1/0,i._bufferSize=Math.max(1,r),i._windowTime=Math.max(1,n),i}return t.prototype.next=function(r){var n=this,o=n.isStopped,i=n._buffer,s=n._infiniteTimeWindow,a=n._timestampProvider,f=n._windowTime;o||(i.push(r),!s&&i.push(a.now()+f)),this._trimBuffer(),e.prototype.next.call(this,r)},t.prototype._subscribe=function(r){this._throwIfClosed(),this._trimBuffer();for(var n=this._innerSubscribe(r),o=this,i=o._infiniteTimeWindow,s=o._buffer,a=s.slice(),f=0;f0?e.prototype.requestAsyncId.call(this,r,n,o):(r.actions.push(this),r._scheduled||(r._scheduled=ut.requestAnimationFrame(function(){return r.flush(void 0)})))},t.prototype.recycleAsyncId=function(r,n,o){var i;if(o===void 0&&(o=0),o!=null?o>0:this.delay>0)return e.prototype.recycleAsyncId.call(this,r,n,o);var s=r.actions;n!=null&&((i=s[s.length-1])===null||i===void 0?void 0:i.id)!==n&&(ut.cancelAnimationFrame(n),r._scheduled=void 0)},t}(Wt);var Sn=function(e){ie(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.flush=function(r){this._active=!0;var n=this._scheduled;this._scheduled=void 0;var o=this.actions,i;r=r||o.shift();do if(i=r.execute(r.state,r.delay))break;while((r=o[0])&&r.id===n&&o.shift());if(this._active=!1,i){for(;(r=o[0])&&r.id===n&&o.shift();)r.unsubscribe();throw i}},t}(Dt);var Oe=new Sn(wn);var M=new F(function(e){return e.complete()});function Vt(e){return e&&C(e.schedule)}function Cr(e){return e[e.length-1]}function Ye(e){return C(Cr(e))?e.pop():void 0}function Te(e){return Vt(Cr(e))?e.pop():void 0}function zt(e,t){return typeof Cr(e)=="number"?e.pop():t}var pt=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function Nt(e){return C(e==null?void 0:e.then)}function qt(e){return C(e[ft])}function Kt(e){return Symbol.asyncIterator&&C(e==null?void 0:e[Symbol.asyncIterator])}function Qt(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function zi(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Yt=zi();function Gt(e){return C(e==null?void 0:e[Yt])}function Bt(e){return un(this,arguments,function(){var r,n,o,i;return $t(this,function(s){switch(s.label){case 0:r=e.getReader(),s.label=1;case 1:s.trys.push([1,,9,10]),s.label=2;case 2:return[4,et(r.read())];case 3:return n=s.sent(),o=n.value,i=n.done,i?[4,et(void 0)]:[3,5];case 4:return[2,s.sent()];case 5:return[4,et(o)];case 6:return[4,s.sent()];case 7:return s.sent(),[3,2];case 8:return[3,10];case 9:return r.releaseLock(),[7];case 10:return[2]}})})}function Jt(e){return C(e==null?void 0:e.getReader)}function U(e){if(e instanceof F)return e;if(e!=null){if(qt(e))return Ni(e);if(pt(e))return qi(e);if(Nt(e))return Ki(e);if(Kt(e))return On(e);if(Gt(e))return Qi(e);if(Jt(e))return Yi(e)}throw Qt(e)}function Ni(e){return new F(function(t){var r=e[ft]();if(C(r.subscribe))return r.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function qi(e){return new F(function(t){for(var r=0;r=2;return function(n){return n.pipe(e?A(function(o,i){return e(o,i,n)}):de,ge(1),r?He(t):Dn(function(){return new Zt}))}}function Vn(){for(var e=[],t=0;t=2,!0))}function pe(e){e===void 0&&(e={});var t=e.connector,r=t===void 0?function(){return new x}:t,n=e.resetOnError,o=n===void 0?!0:n,i=e.resetOnComplete,s=i===void 0?!0:i,a=e.resetOnRefCountZero,f=a===void 0?!0:a;return function(c){var u,p,m,d=0,h=!1,v=!1,Y=function(){p==null||p.unsubscribe(),p=void 0},B=function(){Y(),u=m=void 0,h=v=!1},N=function(){var O=u;B(),O==null||O.unsubscribe()};return y(function(O,Qe){d++,!v&&!h&&Y();var De=m=m!=null?m:r();Qe.add(function(){d--,d===0&&!v&&!h&&(p=$r(N,f))}),De.subscribe(Qe),!u&&d>0&&(u=new rt({next:function($e){return De.next($e)},error:function($e){v=!0,Y(),p=$r(B,o,$e),De.error($e)},complete:function(){h=!0,Y(),p=$r(B,s),De.complete()}}),U(O).subscribe(u))})(c)}}function $r(e,t){for(var r=[],n=2;ne.next(document)),e}function K(e,t=document){return Array.from(t.querySelectorAll(e))}function z(e,t=document){let r=ce(e,t);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${e}" to be present`);return r}function ce(e,t=document){return t.querySelector(e)||void 0}function _e(){return document.activeElement instanceof HTMLElement&&document.activeElement||void 0}function tr(e){return L(b(document.body,"focusin"),b(document.body,"focusout")).pipe(ke(1),l(()=>{let t=_e();return typeof t!="undefined"?e.contains(t):!1}),V(e===_e()),J())}function Xe(e){return{x:e.offsetLeft,y:e.offsetTop}}function Kn(e){return L(b(window,"load"),b(window,"resize")).pipe(Ce(0,Oe),l(()=>Xe(e)),V(Xe(e)))}function rr(e){return{x:e.scrollLeft,y:e.scrollTop}}function dt(e){return L(b(e,"scroll"),b(window,"resize")).pipe(Ce(0,Oe),l(()=>rr(e)),V(rr(e)))}var Yn=function(){if(typeof Map!="undefined")return Map;function e(t,r){var n=-1;return t.some(function(o,i){return o[0]===r?(n=i,!0):!1}),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(r){var n=e(this.__entries__,r),o=this.__entries__[n];return o&&o[1]},t.prototype.set=function(r,n){var o=e(this.__entries__,r);~o?this.__entries__[o][1]=n:this.__entries__.push([r,n])},t.prototype.delete=function(r){var n=this.__entries__,o=e(n,r);~o&&n.splice(o,1)},t.prototype.has=function(r){return!!~e(this.__entries__,r)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(r,n){n===void 0&&(n=null);for(var o=0,i=this.__entries__;o0},e.prototype.connect_=function(){!Wr||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),va?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){!Wr||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(t){var r=t.propertyName,n=r===void 0?"":r,o=ba.some(function(i){return!!~n.indexOf(i)});o&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),Gn=function(e,t){for(var r=0,n=Object.keys(t);r0},e}(),Jn=typeof WeakMap!="undefined"?new WeakMap:new Yn,Xn=function(){function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var r=ga.getInstance(),n=new La(t,r,this);Jn.set(this,n)}return e}();["observe","unobserve","disconnect"].forEach(function(e){Xn.prototype[e]=function(){var t;return(t=Jn.get(this))[e].apply(t,arguments)}});var Aa=function(){return typeof nr.ResizeObserver!="undefined"?nr.ResizeObserver:Xn}(),Zn=Aa;var eo=new x,Ca=$(()=>k(new Zn(e=>{for(let t of e)eo.next(t)}))).pipe(g(e=>L(ze,k(e)).pipe(R(()=>e.disconnect()))),X(1));function he(e){return{width:e.offsetWidth,height:e.offsetHeight}}function ye(e){return Ca.pipe(S(t=>t.observe(e)),g(t=>eo.pipe(A(({target:r})=>r===e),R(()=>t.unobserve(e)),l(()=>he(e)))),V(he(e)))}function bt(e){return{width:e.scrollWidth,height:e.scrollHeight}}function ar(e){let t=e.parentElement;for(;t&&(e.scrollWidth<=t.scrollWidth&&e.scrollHeight<=t.scrollHeight);)t=(e=t).parentElement;return t?e:void 0}var to=new x,Ra=$(()=>k(new IntersectionObserver(e=>{for(let t of e)to.next(t)},{threshold:0}))).pipe(g(e=>L(ze,k(e)).pipe(R(()=>e.disconnect()))),X(1));function sr(e){return Ra.pipe(S(t=>t.observe(e)),g(t=>to.pipe(A(({target:r})=>r===e),R(()=>t.unobserve(e)),l(({isIntersecting:r})=>r))))}function ro(e,t=16){return dt(e).pipe(l(({y:r})=>{let n=he(e),o=bt(e);return r>=o.height-n.height-t}),J())}var cr={drawer:z("[data-md-toggle=drawer]"),search:z("[data-md-toggle=search]")};function no(e){return cr[e].checked}function Ke(e,t){cr[e].checked!==t&&cr[e].click()}function Ue(e){let t=cr[e];return b(t,"change").pipe(l(()=>t.checked),V(t.checked))}function ka(e,t){switch(e.constructor){case HTMLInputElement:return e.type==="radio"?/^Arrow/.test(t):!0;case HTMLSelectElement:case HTMLTextAreaElement:return!0;default:return e.isContentEditable}}function Ha(){return L(b(window,"compositionstart").pipe(l(()=>!0)),b(window,"compositionend").pipe(l(()=>!1))).pipe(V(!1))}function oo(){let e=b(window,"keydown").pipe(A(t=>!(t.metaKey||t.ctrlKey)),l(t=>({mode:no("search")?"search":"global",type:t.key,claim(){t.preventDefault(),t.stopPropagation()}})),A(({mode:t,type:r})=>{if(t==="global"){let n=_e();if(typeof n!="undefined")return!ka(n,r)}return!0}),pe());return Ha().pipe(g(t=>t?M:e))}function le(){return new URL(location.href)}function ot(e){location.href=e.href}function io(){return new x}function ao(e,t){if(typeof t=="string"||typeof t=="number")e.innerHTML+=t.toString();else if(t instanceof Node)e.appendChild(t);else if(Array.isArray(t))for(let r of t)ao(e,r)}function _(e,t,...r){let n=document.createElement(e);if(t)for(let o of Object.keys(t))typeof t[o]!="undefined"&&(typeof t[o]!="boolean"?n.setAttribute(o,t[o]):n.setAttribute(o,""));for(let o of r)ao(n,o);return n}function fr(e){if(e>999){let t=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(t)}k`}else return e.toString()}function so(){return location.hash.substring(1)}function Dr(e){let t=_("a",{href:e});t.addEventListener("click",r=>r.stopPropagation()),t.click()}function Pa(e){return L(b(window,"hashchange"),e).pipe(l(so),V(so()),A(t=>t.length>0),X(1))}function co(e){return Pa(e).pipe(l(t=>ce(`[id="${t}"]`)),A(t=>typeof t!="undefined"))}function Vr(e){let t=matchMedia(e);return er(r=>t.addListener(()=>r(t.matches))).pipe(V(t.matches))}function fo(){let e=matchMedia("print");return L(b(window,"beforeprint").pipe(l(()=>!0)),b(window,"afterprint").pipe(l(()=>!1))).pipe(V(e.matches))}function zr(e,t){return e.pipe(g(r=>r?t():M))}function ur(e,t={credentials:"same-origin"}){return ue(fetch(`${e}`,t)).pipe(fe(()=>M),g(r=>r.status!==200?Ot(()=>new Error(r.statusText)):k(r)))}function We(e,t){return ur(e,t).pipe(g(r=>r.json()),X(1))}function uo(e,t){let r=new DOMParser;return ur(e,t).pipe(g(n=>n.text()),l(n=>r.parseFromString(n,"text/xml")),X(1))}function pr(e){let t=_("script",{src:e});return $(()=>(document.head.appendChild(t),L(b(t,"load"),b(t,"error").pipe(g(()=>Ot(()=>new ReferenceError(`Invalid script: ${e}`))))).pipe(l(()=>{}),R(()=>document.head.removeChild(t)),ge(1))))}function po(){return{x:Math.max(0,scrollX),y:Math.max(0,scrollY)}}function lo(){return L(b(window,"scroll",{passive:!0}),b(window,"resize",{passive:!0})).pipe(l(po),V(po()))}function mo(){return{width:innerWidth,height:innerHeight}}function ho(){return b(window,"resize",{passive:!0}).pipe(l(mo),V(mo()))}function bo(){return G([lo(),ho()]).pipe(l(([e,t])=>({offset:e,size:t})),X(1))}function lr(e,{viewport$:t,header$:r}){let n=t.pipe(ee("size")),o=G([n,r]).pipe(l(()=>Xe(e)));return G([r,t,o]).pipe(l(([{height:i},{offset:s,size:a},{x:f,y:c}])=>({offset:{x:s.x-f,y:s.y-c+i},size:a})))}(()=>{function e(n,o){parent.postMessage(n,o||"*")}function t(...n){return n.reduce((o,i)=>o.then(()=>new Promise(s=>{let a=document.createElement("script");a.src=i,a.onload=s,document.body.appendChild(a)})),Promise.resolve())}var r=class extends EventTarget{constructor(n){super(),this.url=n,this.m=i=>{i.source===this.w&&(this.dispatchEvent(new MessageEvent("message",{data:i.data})),this.onmessage&&this.onmessage(i))},this.e=(i,s,a,f,c)=>{if(s===`${this.url}`){let u=new ErrorEvent("error",{message:i,filename:s,lineno:a,colno:f,error:c});this.dispatchEvent(u),this.onerror&&this.onerror(u)}};let o=document.createElement("iframe");o.hidden=!0,document.body.appendChild(this.iframe=o),this.w.document.open(),this.w.document.write(` - - - - - - - - - - - - - - - - - - - -
- -
- - - - - - -
- - -
- -
- - - - - - - - - -
-
- - - -
-
-
- - - - - - -
-
-
- - - -
-
-
- - - -
-
-
- - - -
-
- - - - - - - -

Configuration

- -

BAUS Configuration

-

The configuration file structure for Bay Area UrbanSim (BAUS) and a description of each file. Model configurations files are stored in a configs folder in the model repository. They specify model settings such as model estimation constants and assumptions.

-

bayarea_urbnasim/configs

-

adjusters/

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
namedescription
cost_shifters.yamlMultipliers to cost, currently specified by county, used to calibrate the model.
development_caps_asserted.yamlCaps on development, either residential or office, used to calibrate the model. (TODO: remove any base year existing policy caps entangled here).
employment_relocation_rates_overwrites.csvThese overwrite the relocation rates in employment_relocation_rates.csv to calibrate the model, e.g. leave government sector jobs in San Francisco City Hall's TAZ.
sqft_per_job_adjustersMultipliers to the number of sqft used by each job, defined in the model's developer settings, which modify the number of jobs that can occupy a building. This is used to calibrate the model, e.g. reflect CBD job densities or adjust vacancy rates by superdistrict. The inputs file telecommute_sqft_per_job_adjusters.csv uses alternative multipliers for for the forecast years in place of these, if the strategy is enabled. (TODO: Disentangle the k-factors and the policy application in these two files. In the meantime, use both files as is done in the PBA50 No Project).
zoning_adjusters.yamlAdjusters used to modify the model's zoning data.
-

accessibility/

- - - - - - - - - - - - - - - - - - - - - - - - - -
namedescription
accessibility_settings.yamlSettings for Pandana, the model's endogenous accessibility calculations.
neighborhood_vars.yamlSettings for calculating local accessibility variables during the model run.
regional_vars.yamlSettings for calculating regional accessibility variables during the model run.
price_vars.yamlSettings for calculating local accessibility variables on price during the model run.
-

developer/

- - - - - - - - - - - - - - - - - -
namedescription
developer_settings.yamlSettings for the model's developer and feasibility models.
residential_vacancy_rates.csvResidential vacancy rates for the residential developer model, separated from the main developer settings into this file to allow them to vary by year.
-

hedonics/

- - - - - - - - - - - - - - - - - - - - - - - - - -
namedescription
price_settings.yamlSettings for the model's price simulation and supplydemand equilibration of price.
nrh.yamlNon-residential hedonic price model specification.
rrh.yamlResidential rent hedonic price model specification.
rsh.yamlResidential sales hedonic price model specification.
-

location_choice/

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
namedescription
elcm.yamlEmployment location choice model specification, segemented by six employment sectors.
hlcm_owner.yamlHousehold location choice model specification segmented by income quartiles. The models are estimated for owner households.
hlcm_owner_lowincome.yamlThis uses the same specification and estimated coefficients as hlcm_owner. The only difference is that it is used to only low income households to choose deed-restricted owner units.
hlcm_owner_lowincome_no_unplaced.yamlThis uses the same specification and estimated coefficients as hlcm_owner, but allows owners of all incomes into deed-restricted owner units to cover any gaps in assignment.
hlcm_owner_no_unplaced.yamlThis uses the same specification and estimated coefficients as hlcm_owner, but does another round of placements of owners, this time into non-deed-restricted owner units, to cover any gaps in assignment.
hlcm_renter.yamlHousehold location choice model specification segmented by income quartiles. The models are estimated for rental households.
hlcm_renter_lowincome.yamlThis uses the same specification and estimated coefficients as hlcm_renter. The only difference is that it is used to only low income households to choose deed-restricted rental units.
hlcm_renter_lowincome_no_unplaced.yamlThis uses the same specification and estimated coefficients as hlcm_renter, but allows renters of all incomes into deed-restricted rental units to cover any gaps in assignment.
hlcm_renter_no_unplaced.yamlThis uses the same specification and estimated coefficients as hlcm_renter, but does another round of placement of renters, this time into non-deed-restricted rental units, to cover any gaps in assignment.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
HLCM ModelEstimation Choosers: FiltersEstimation Alternatives: FiltersSimulation Choosers: FiltersSimulation Alternatives: Filters
ownerOwners-OwnersOwner Units
owner_lowincomeOwners-Low-Income OwnersAffordable Owner Units
owner_lowincome_no_unplaced--OwnersAffordable Owner Units
owner_no_unplacedOwners-OwnersMarket-Rate Owner Units
renterRenters-RentersRenters Units
renter_lowincomeRenters-Low-Income RentersAffordable Rental Units
renter_lowincome_no_unplaced--RentersAffordable Rentual Units
renter_no_unplacedRenters-RentersMarket Rate Rental Units
-

transition_relocation/

- - - - - - - - - - - - - - - - - - - - - -
namedescription
employment_relocation_rates.csvA file with the probability of a job relocating during a time step in the forecast, by TAZ and by employment sector. Pairs with employment_relocation_rates.csv which overwrites the model probabilities with calibration factors.
household_relocation_rates.csvA file with the probability of a household relocating during a time step in the forecast, by TAZ, income, and tenure. Pairs with renter_protections_relocation_rates_overwrites.csv which overwrites model probabilities with different relocation rates when the renter protections strategy is enabled.
transition_relocation_settings.yamlSettings for the transition and relocation models.
-

mapping.yaml

-

Mapping used in the model to relate variables to one another.

-

paths.yaml

-

Variables that store file names for use in the model code.

- - - - - - -
-
- - - - -
- -
- - - -
-
-
-
- - - - - - - - - \ No newline at end of file diff --git a/viz_interim_based_on_new_inputs/input/index.html b/viz_interim_based_on_new_inputs/input/index.html deleted file mode 100755 index bb9ad409c..000000000 --- a/viz_interim_based_on_new_inputs/input/index.html +++ /dev/null @@ -1,1038 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - Input - Bay Area UrbanSim - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - - - -
- - -
- -
- - - - - - - - - -
-
- - - -
-
-
- - - - - - -
-
-
- - - -
-
-
- - - -
-
-
- - - -
-
- - - - - - - -

Input

- -

BAUS Inputs

-

The inputs structure for BAUS and a description of each input. Model input files are stored in an inputs folder to be called by the model. They are often run-specific and contain the data used to run the model, such as base year datasets and policy inputs.

-

inputs/

-

accessibility/

-

pandana/

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
namedescription
tmnet.h5Travel model network information for calculating accessibility within the model using Pandana
osm_bayarea4326.h5Street network information for calculating accessibility within the model using Pandana
landmarks.csvLocations of a few major landmarks in the region for accessibility calculations.
regional_poi_distances.csvThe pre-computed distances from each travel model node to each landmark.
bart_stations.csvA list of BART stations and their locations so that distance to BART can calculated.
logsums.csvA set of base year logsums from the travel model.
#### travel_model/
namedescription
----------
AccessibilityMarkets_[year].csvA travel model output file that incorportates travel model run logsums into the forecast, by year.
mandatoryAccessibilities_[year].csvA travel model output file that incorportates travel model run logsums into the forecast, by year.
nonMandatoryAccessibilities_[year].csvA travel model output file that incorportates travel model run logsums into the forecast, by year.
-

basis_inputs (in progress)/

-

crosswalks/

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
namedesription
parcel_to_maz22.csvA lookup table from parcels to Travel Model Two MAZs.
parcel_to_taz1454sub.csvA lookup table from parcels to Travel Model One TAZs.
parcels_geography.csvA lookup table from parcels to jurisdiction, growth geographies, UGB areas, greenfield areas, and a concatenation of these used to join these geographies zoning_mods.csv, to apply zoning rules within them.
census_id_to_name.csvMaps census id from parcels_geography to name so it can be used.
maz_geographyA lookup between MAZ, TAZ2, and county.
maz22_taz1454A lookup between MAZ and TAZ1.
superdistricts_geography.csvA map of superdistrict numbers, names, and their subregion.
taz_geography.csvA lookup between TAZ1, supedisctrict, and county.
-

edits/

- - - - - - - - - - - - - - - - - - - - - - - - - -
namedescription
data_edits.yamlSettings for editing the input data in the model code, e.g. clipping values.
manual_edits.csvOverrides the current h5 data using the table name, attribute name, and new value, so we don't have to generate a new one each time.
household_building_id_overrides.csvMoves households to match new city household totals during the data preprocessing.
tpp_id_2016.csvUpdates tpp_ids after changes were made to the ids.
-

existing_policy/

- - - - - - - - - - - - - - - - - -
namedescription
development_caps.yamlBase year job cap policies in place in jurisdictions (TODO: remove the asserted development capsk-factors entangled here.)
inclusionary.yamlBase year inclusionary zoning policies in place in jurisdictions (TODO: have all model runs inherit these, even if an inclusionary stratey is applied).
-

hazards/

- - - - - - - - - - - - - - - - - -
namedesctiption
slr_progression.csvThe sea level rise level, for each forecast year.
slr_inundation.csvThe sea level rise level at which each inundation parcel becomes inundated, for each forecast year. Rows marked with "100" are parcels where sea level rise has been mitigated, either through planned projects or a plan strategy.
-

parcels_buildings-agents/

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
namedescription
bayarea_v3.h5Base year database of households, jobs, buildings, and parcels. The data is pre-processed in pre-processing.py.
costar.csvCommercial data from CoStar, including non-residential price to inform the price model.
development_projects.csvThe list of projects that have happened since the base data, or buildings in the development pipeline. This file tends to have more attributes than we use in the model.
deed_restricted_zone_totals.csvAn approximate number of deed restricted units per TAZ to assign randomly within the TAZ.
baseyear_taz_controls.csvBase year control totals by TAZ, to use for checking and refining inputs. The file includes number of units, vacancy rates, and employment by sector (TODO: add households).
sfbay_craisglist.csvCraigslist data to inform rental unit information and model tenure.
-

zoning/

- - - - - - - - - - - - - - - - - -
namedescription
zoning_parcels.csvA lookup table from parcels to zoning_id, zoning area information, and a "nodev" flag (currently all set to 0).
zoning_lookup.csvThe existing zoning for each jurisdiction, assigned to parcels with the "id" field. Fields include the city name, city id, and the name of the zoning. The active attributes are max_dua, max_far, and max_height, all of which must be respected by each development.
-

plan_strategies (optional)/

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
namedescription
accessory_units.csvA file to add accessory dwelling units to jurisdictions by year, simulating policy to allow or reduce barriers to ADU construction in jurisdictions (TODO: Make this a default policy).
account_strategies.yamlThis files contains the settings for all strategies in a model run that use accounts. The file may include account settings (e.g., how much to spend, where to spend) for
development_caps_strategy.yamlA file that specifies a strategy to limit development (generally office development) to a certain number of residential units andor job spaces.
inclusionary_strategy.yamlA file to apply an inclusionary zoning strategy by geography and inclusionary housing requirement percentage.
preservation.yamlA file to apply an affordable housing preservation strategy through specifying geography and target number of units for preservation.
profit_adjustment_stratgies.yamlThis file contains the settings for all strategies in a model run which modify the profitability of projects thus altering their feasibility. The file may include profit adjustment settings (e.g., the percent change to profit) for
renter_protections_relocation_rates_overwritesThe rows in this file overwrite the household relocation rates in the model's settings.
telecommute_sqft_per_job_adjustersThese are multipliers which adjust the sqft per job setting by superdistrict by year to represent changes from a telework strategy. (TODO: Disentangle the k-factors and the policy application within this file and sqft_per_job_adjusters.csv. In the meantime, use both files as is done in the PBA50 No Project).
vmt_fee_zonecats.csvThis file pairs with the VMT Fee and SB-743 strategies. It provides VMT levels by TAZ1, which map to the corresponding price adjustments in the strategies.
zoning_mods.csvA file which allows you to upzone or downzone. If you enter a value in "dua_up" or "far_up", the model will apply that as the new zoning or maintain the existing zoning if it is higher. If you enter a value in "dua_down" or "far_down", the model will apply that as the zoning or maintain the existing zoning if it is lower. UGBs are also controlled using this file, using zoning changes to enforce them. This file is mapped to parcels using the field "zoningmodcat", which is the concatenated field of growth designations in parcels_geography.csv.
-

regional_controls/

- - - - - - - - - - - - - - - - - -
namedescription
employment_controls.csvThe total number of jobs in the region for the model to allocate, by year. The controls are provided by 6-sector job category.
household_controls.csvThe total number of households in the region for the model to allocate, by year. The controls are provided by household income quartile.
-

zone_forecasts/

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
namedescription
taz_growth_rates_gov_ed.csvThis file has ratios of governement and education employment per population by County and TAZ. The files has two header rows
prportional_retail_jobs_forecast.csvThis contains the field "minimum_forecast_retail_jobs_per_household" by jurisdiction, which is used to keep local numbers of retail jobs reasonable through the forecast.
tm1_taz1_forecast_inputs.csvThis is closely related to regional_controls.csv. These are zone level inputs used for the process of generating variables for the travel model, while the other file contains regional-level controls. These inputs provide TAZ1454 information, used for Travel Model One summaries.
tm2_taz2_forecast_inputs.csvThe same as above, except these inputs provide TAZ2 information, usED for Travel Model Two summaries.
tm1_tm2_maz_forecast_inputs.csvThe same as above, except these inputs provide MAZ information, used for btoh Travel Model One and Travel Model Two summaries.
tm2_emp27_employment_sharesThe forecasted share of jobs by 26 sectors, used to apportion that 6 sectors used in the model into more detailed categories Travel Model Two. The shares are provided by county and by year.
tm2_occupation_sharesThe forecasted share of jobs by occupation, used for Travel Model Two. The shares are provided by county and by year.
tm1_tm2_regional_controls.csvControls from the regional forecast which give us employed residents and the age distribution by year, used to forecast variables used by the travel model.
tm1_tm2_regional_demographic_forecastSimilar to regional_controls.csv, this file provides regional-level information to produce travel model variables, in this case using forecasts of shares by year.
- - - - - - -
-
- - - - -
- -
- - - -
-
-
-
- - - - - - - - - \ No newline at end of file diff --git a/viz_interim_based_on_new_inputs/model/index.html b/viz_interim_based_on_new_inputs/model/index.html deleted file mode 100755 index 4a9863beb..000000000 --- a/viz_interim_based_on_new_inputs/model/index.html +++ /dev/null @@ -1,673 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - Model - Bay Area UrbanSim - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - - - -
- - -
- -
- - - - - - - - - -
-
- - - -
-
-
- - - - - - -
-
-
- - - - - - - -
-
- - - - - - - -

Bay Area UrbanSim (BAUS)

-

Model Overview

-

Bay Area UrbanSim (BAUS) is a microeconomic land use model used to forecast intraregional growth and study urban policies. BAUS simulates the movement of households and firms within the region and the construction of built space. The total number of households and jobs in the region in future years is forecast using the REMI regional economic model and additional demographic processing scripts. BAUS uses these projections incrementally forecast urban growth trajectories, with forecasted land use patterns then used in the regional travel demand model to evaluate future travel patterns.

-

Households, firms, and developers in BAUS act on the parcel as the model's base unit of analysis. Developers determine feasible parcels in the region to build housing units and jobs space. Households and firms choose where to locate based on behavioral model preferences for particular locations. The price of buildings in BAUS is updated each model time step to reflect local changes and changes in demand for particular areas, in turn altering the feasibility of redevelopment for developers. These core models run every five years to produce the land use forecast.

-

Core Models

-

BAUS Sub-Model Flow

-

A series of sub-models are used to simulate the decisions of households and firms in a land use forecast. The BAUS sub-models and their modeling methods are described below. Some BAUS models have been segmented to capture key elements of real estate markets, such as housing tenure, or to capture varying preferences among households and firms, such as the varying location preferences of different employment sectors. Additional models have been added that help model urban policies, such as the option to locate in affordable housing units.

-

Alt text

-

Accessibility Calculations

-

Pandana is open-source software package used to calculate endogenous accessibility variables. These generally describe how close a parcel is to something (e.g., BART) or how many things are nearby a parcel (e.g., number of jobs), informing both price prediction models and location choice models. Both local (local street network from Open Street Map) and regional (travel model network) networks are used to compute these variables.

-

Price & Rent Prediction

-

Hedonic regression models are applied to current model year conditions to estimate both prices and rents in that year. Accessibillity information from the regional travel model is entered into these models, allowing future year travel conditions to influence real estate prices. This feature is central to MTC's integrated land use and travel modeling.

-

Household & Firm Relocation

-

Households and firm are selected to move based on historic relocation probabilities. Household move-out choice is conditional on tenure status. Households and firms that are selected to relocate are added to the set of relocation agents looking for homes and job space, to be placed with the model's location choice models.

-

Household & Firm Transition

-

REMI is used to generate the model's control totals for region's total number of households and jobs, while BAUS outputs on housing production are used to adjust regional housing prices in REMI. Additional households and employees are added or subtracted from BAUS in each model time step to reflect the exogenous control totals. Any net additional households and firms are added to the set of relocation agents looking for homes and job space, to be placed with the model's location choice models.

-

Pipeline Project Development

-

Buildings in the region's development pipeline are constructed by entering the projects into the development poipeline list. These are often large approved development projects and development that has occurred after the model's base year.

-

Market-Rate Developer Model

-

The for-profit real estate development model in BAUS samples locations in the region in order to evaluate potential development sites using a simplified pro forma model. Sub-features of the developer model include a zone-level model that asserts ADU development to reflect ADU policy and a ground floor retail model adds retail to multi-story buildings to reflect typical policy.

-

Affordable Housing Developer Model

-

In many simulations, a similar not-for-profit real estate development process produces affordable housing units based on money available within BAUS affordable housing funding accounts.

-

Household & Firm Location Choice Models

-

Households and firms are assigned to new locations based on logistic regresssion models that capture the preferences of particular segments of households and jobs (e.g., lower income households, retail jobs). Household location choice models are separated by housing tenure. Additional household location choice models are also run that ensure low-income households are given priority for affordable housing units, allowing affordable housing to be explicity modeled in BAUS.

-

Institutional Jobs Model

-

Particular industry sectors which don't follow traditional market economics are forecast separately from. For government and education jobs, the number of jobs grow over the simulation period in proportion to their zonal shares. The buildings that house these jobs are off-limits from redevelopment.

-

Retail Model

-

An additional retail model takes into account where demand for retail is high and supply is low to ensure there are retail services in each jurisdiction. Retail demand is a function of the number of households and household incomes.

- - - - - - -
-
- - - - -
- -
- - - -
-
-
-
- - - - - - - - - \ No newline at end of file diff --git a/viz_interim_based_on_new_inputs/output/index.html b/viz_interim_based_on_new_inputs/output/index.html deleted file mode 100755 index 85d92dd59..000000000 --- a/viz_interim_based_on_new_inputs/output/index.html +++ /dev/null @@ -1,1400 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - Output - Bay Area UrbanSim - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - - - -
- - -
- -
- - - - - - - - - -
-
- - - -
-
-
- - - - - - -
-
-
- - - -
- -
- - - -
-
- - - - - - - -

Output

- -

BAUS Outputs

-

The outputs of BAUS and a description of each file. Model output files are written to an outputs folder during a BAUS model run.

-

outputs/

-

core summaries

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
namedescription
parcel_summary_[year].csvDevelopment, households, and jobs on each parcel in a given year.
parcel_growth_summary.csvChange in development, households, and jobs on each parcel between the model's base year and forecast year.
building_summary_[year].csvInventory of buildings in a given year, linked to the parcel they sit on.
new_buildings_summary.csvInventory of all buildings built during the simulation.
interim_zone_output_[year].csvInterim model data at the TAZ level.
feasibility.csvParcel-level data on the development feasibilities of various development types given the zoning, development costs, and expected return. Contains two sets of development variables grouped by six development types (coded as form): retail, industrial, office, residential, mixedresidential, mixedoffice. For every development type, one set of variables are passed through from the parcels table as input for the feasibility evaluation; the other set of variables are the result of the feasibility evaluation.Only parcels where at least one development type is feasible are included.
-

geographic summaries

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
namedescription
jurisdiction_summary_[year].csvJurisdiction-level summary of development, households, and jobs in a given year.
jurisdiction_summary_growth.csvJurisdiction-level change in development, households, and jobs between the model's base year and forecast year.
superdistrict_summary_[year].csvSuperdistrict-level summary of development, households, and jobs in a given year.
superdistrict_summary_growth.csvSuperdistrict-level change in development, households, and jobs between the model's base year and forecast year.
county_summary_[year].csvCounty-level summary of development, households, and jobs in a given year.
county_summary_growth.csvCounty-level change in development, households, and jobs between the model's base year and forecast year.
subregion_summary_[year].csvSubregion-level change in development, households, and jobs in a given year.
subregion_summary_growth.csvSubregion-level change in development, households, and jobs between the model's base year and forecast year.
region_summary_[year].csvRegional summary of development, households, and jobs in a given year.
region_summary_growth.csvRegional change in development, households, and jobs between the model's base year and forecast year.
-

travel model summaries

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
namedescription
taz1_summary_[year].csvTAZ1/TAZ1454-level summaries of development, households, jobs, demographics, and density attributes used for travel modeling.
taz1_summary_growth.csvTAZ1/TAZ1454-level change in development, households, jobs, demographics, and density attributes used for travel modeling.
maz_marginals_[year].csvMAZ-level summaries of households and demographics used to create the synthesized population for travel modeling.
maz_summary_[year].csvMAZ-level summaries of development, households, jobs, and density attributes used for travel modeling.
maz_summary_growth.csvMAZ-level change in development, households, jobs, and density attributes used for travel modeling.
taz2_marginals_[year].csvTAZ2-level summaries of households and demographics used to create the synthesized population for travel modeling.
county_marginals_[year].csvCounty-level summaries of demographics and jobs used to create the synthesized population for travel modeling.
region_marginals_[year].csvRegion-level summaries of demographics used to create the synthesized population for travel modeling.
-

affordable housing summaries

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
namedescription
juris_dr_summary_[year].csvJurisdiction-level summary of deed-restricted units by type in a given year.
juris_dr_growth.csvJurisdiction-level change in deed-restricted units by type between the model's base year and forecast year.
superdistrict_dr_summary_[year].csvSuperdistrict-level summary of deed-restricted units by type in a given year.
superdistrict_dr_growth.csvSuperdistrict-level change in deed-restricted units by type between the model's base year and forecast year.
county_dr_summary_[growth].csvCounty-level summary of deed-restricted units by type in a given year.
county_dr_growthCounty-level change in deed-restricted units by type between the model's base year and forecast year.
region_dr_summary_[year].csvRegion-level summary of deed-restricted units by type in a given year.
region_dr_growth.csvRegion-level change in deed-restricted units by type between the model's base year and forecast year.
-

hazards summaries

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
namedescription
slr_summary_[year].csvSea level rise impacted parcels, buildings, households, and jobs in a given year.
eq_codes_summary_[year].csvSummary of earthquake codes assigned to buildings, in the earthquake year.
eq_fragilities_summary_[year].csvSUmmary of fragilities assigned to buildings, in the earthquake year.
slr_summary_[year].csvEarthquake impacted parcels, buildings, households, and jobs in the earthquake year.
eq_demolish_buildings_[year].csvInventory of buildings impacted by earthquake, by TAZ for the resilience team.
eq_demolish_buildings_[year].csvInventory of buildings retrofit for earthquake, by TAZ for the resilience team.
eq_buildings_list_[year].csvInventory of buildings in key earthquake years, by TAZ for the resilience team.
-

metrics

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
namedescription
growth_geog_summary_[year].csvHouseholds and jobs in growth geographies and combinations of growth geographies, by year.
growth_geog_growth_summary_[year].csvChange in households and jobs in growth geographies and combinations of growth geographies between the model's base year and forecast year.
dr_units_metrics.csvChange in deed-restricted units by HRA and COC.
household_income_metrics_[year].csvLow income households by growth geography, by year.
equity_metrics.csvChange in low income households in Displacement tracts and COC tracts.
jobs_housing_metrics.csvJobs-Housing ratios by county, by year.
jobs_metrics.csvChange in PPA and manufacturing jobs.
slr_metrics.csvSea level rise affected and protected total households, low-income households and COC households.
earthquake_metrics.csvTotal housing units retrofit and total retrofit cost, for all units and for COC units. Earthquake affected and protected total households, low-income households, and COC households.
greenfield_metric.csvChange in annual greenfield development acres.
-

interim_zone_output.csv

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
AttributeDescriptionData TypeSourceSub-model/step
unit_residential_pricemedian residential price of all residential units in a TAZfloatBAUS "residential_units" tablersh_simulate()
unit_residential_price_>_rent1 or 0 representing if the TAZ-level per-unit residential price is higher than annualized rent divided by cap_rate.intBAUS "residential_units" table and "developer_settings"summary.py
residential_pricemedian per sq.ft. residential price of all residential buildings in a TAZ (based on general building type); currently used only for estimation, not for simulationfloat"buildings" tableresidential_price()
zoned_dumaximum number of dwelling units allowed on all parcels in a TAZintBAUS "parcels" tablezoned_du()
zoned_du_underbuildadditional dwelling units allowed on all parcels in a TAZ given existing development conditions, 0 if the additional units are not at least half of existing developmentintBAUS "parcels" tablezoned_du_underbuild()
zoned_du_underbuild_ratioratio of additional allowable residential units to maximum allowable residential unitsintBAUS "zones" tablezoned_du_build_ratio()
building_counttotal number of residential buildings in a TAZ, based on general building typeintBAUS "buildings" tableXXX
residential_unitstotal number of residential units in a TAZintBAUS "buildings" tableXXX
ave_unit_sqft0.6 quantile of building-level average residential unit size of all builidings in a TAZintBAUS "building" tableave_unit_sqft()
residential_vacancypercentage of residential units in a TAZ that are not occupied by a householdfloatBAUS "households" table, BAUS "buildings" tableBAUS summary.py
non_residential_sqfttotal sq.ft. of all non-residential buildings in a TAZintBAUS "buildings" tableXXX
job_spacestotal number of jobs that can be accommodated by non-residential space in a TAZintBAUS "building" table; sq.ft. per job settingXXX
non_residential_vacancypercentage of job_spaces in a TAZ that are not occupied by a jobfloatBAUS "jobs" table, BAUS "buildings" tableXXX
average_incomemedian income of all households in a TAZintBAUS "households" table; BAUS "households_preproc" tablesummary.py; MTC/ABAG household models?
-

new_building_summary.csv

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
AttributeDescriptionData TypeSourceSub-model/step
development_idXXXXXXXXXXXX
SDEMXXXXXXXXXXXX
building_typeXXXXXXXXXXXX
residentialXXXXXXXXXXXX
building_sqftXXXXXXXXXXXX
non_residential_sqftXXXXXXXXXXXX
job_spacesXXXXXXXXXXXX
residential_sqftXXXXXXXXXXXX
residential_unitsXXXXXXXXXXXX
total_residential_unitsXXXXXXXXXXXX
total_sqftXXXXXXXXXXXX
sourceXXXXXXXXXXXX
xXXXXXXXXXXXX
yXXXXXXXXXXXX
year_builtXXXXXXXXXXXX
-

feasibility.csv

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
AttributeDescriptionData TypeSource
parcel_idParcel indexint
oldest_building??pass_through from input parcel frame
total_sqft??pass_through from input parcel frame
total_residential_units??pass_through from input parcel frame
max_farintpass_through from input parcel frame
max_duaintpass_through from input parcel frame
land_costintpass_through from input parcel frame
residentialpass_through from input parcel frame
min_max_farsintpass_through from input parcel frame
max_heightintpass_through from input parcel frame
building_purchase_priceintpass_through from input parcel frame
building_purchase_price_sqftpass_through from input parcel frame
residential_sales_price_sqfthttps://app.asana.com/0/0/1201856230375726/fpass_through from input parcel frame
pda_pba40pass_through from input parcel frame
pda_pba50pass_through from input parcel frame
trich_idstrpass_through from input parcel frame
cat_idpass_through from input parcel frame
tra_idpass_through from input parcel frame
ppa_idpass_through from input parcel frame
sesit_idpass_through from input parcel frame
coc_idpass_through from input parcel frame
jurispass_through from input parcel frame
countypass_through from input parcel frame
superdistrictpass_through from input parcel frame
geom_idpass_through from input parcel frame
vmt_res_catpass_through from input parcel frame
vmt_nonres_catpass_through from input parcel frame
parking_configparking type, e.g. deck, surfacestringcreated by run_feasibility()
building_sqftThe number of square feet for the building to build. Keep in mind this includes parking and common space. Will need a helpful function to convert from gross square feet to actual usable square feet in residential units.floatcreated by run_feasibility()
building_costThe cost of constructing the building as given by the ave_cost_per_sqft from the cost model (for this FAR) and the number of square feet.floatcreated by run_feasibility()
parking_ratio???
stories???
total_costThe cost of constructing the building plus the cost of acquisition of the current parcel/building.floatcreated by run_feasibility()
building_revenueThe NPV of the revenue for the building to be built, which is the number of square feet times the yearly rent divided by the cap rate (with a few adjustment factors including building efficiency).floatcreated by run_feasibility()
max_profit_farThe FAR of the maximum profit building (constrained by the max_far and max_height from the input dataframe).floatcreated by run_feasibility()
max_profitThe profit for the maximum profit building (constrained by the max_far and max_height from the input dataframe).floatcreated by run_feasibility()
residential_sqftfloatcreated by run_feasibility()
non_residential_sqftfloatcreated by run_feasibility()
feescreated by run_feasibility()
policy_based_revenue_reductionintcreated by run_feasibility()
deed_restricted_unitsintcreated by run_feasibility()
inclusionary_unitsintcreated by run_feasibility()
- - - - - - -
-
- - - - -
- -
- - - -
-
-
-
- - - - - - - - - \ No newline at end of file diff --git a/viz_interim_based_on_new_inputs/scenarios/index.html b/viz_interim_based_on_new_inputs/scenarios/index.html deleted file mode 100755 index 6259a72b9..000000000 --- a/viz_interim_based_on_new_inputs/scenarios/index.html +++ /dev/null @@ -1,652 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - Scenarios - Bay Area UrbanSim - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - - - -
- - -
- -
- - - - - - - - - -
-
- - - -
-
-
- - - - - - -
-
-
- - - - - - - -
-
- - - - - - - -

Scenarios

- -

BAUS Scenarios

-

BAUS model runs have serveral optional levers that can be used to create a forecast scenario. These levers are used to observe potential outcomes of urban planning policies and natural hazards. Packages of changes can be applied to create modeling scenarios and forecast impacts on urban growth, equity, and the environment. Optional model features used to build BAUS scenarios are described below.

-

Alt text

-

Earthquake Model

-

This model simulates the impact of an earthquake occuring by destroying buildings based on a their locational likelihood of damage and their building attributes. Households and firms are displaced in the earthquake event to find new housing and job locations. The model then forecasts where redevelopment might occur. If mitigtion is applied in an earthquake simulation scenario, buildings are selected to be retrofit based on their building attributes, changing their damage likelihood.

-

Sea Level Rise Model

-

Sea level rise model: The sea level rise model simulates the impact of sea level rise in a given year. Buildings impacted by sea level rise in that year are destroyed and their households and firms are displaced to search for new housing and job locations. A parcel that has been inundated sea level rise can no longer be developed. If mitigation is applied in a sea level rise simulation scenario, protected parcels are no longer impacted in their forecasted inundation year.

-

Housing Preservation

-

This model randomly selects buildings to preserve in BAUS based on preservation targets established by geography. All deed-restricted affordable housing units in the model are treated in two ways. The first is that they cannot be redeveloped when the developer models examine potential sites. The second is that low-income households receive priority to locate in them in the location choice models using the models filters.

-

Inclusionary Zoning

-

Inclusionary zoning sets a requirement that a percentage of new housing development must be affordable units. The default inclusionary settings in BAUS represent the existing requirements without plan strategy interventions. Scenario-based strategies can set inclusionary rates at a given geography level. The model calculates Area Median Income, feasible new affordable housing count, and revenue_reduction amount.

-

Housing Cost Reduction

-

Reducing the cost of buildings housing can come in various forms: CEQA reform, lowering parking requirements, etc. These have the potential to make new projects profitable, especially when combined with other policies. For these policies, parcels within the specified geography decrease the required profitability level needed for the model to build on those parcels.

-

Transportation Impact Fees

-

This policy is implemented by changing the cost of development in a zone based on the VMT in the area. Low VMT areas see a slight reduction in fees.

-

Housing and Office Subsidies

-

Subsidies provide funding to either residential or commerical projects to improve their feasibility. A user-specified funding amount is applied to each model time step Development projects that are not feasible under market conditions are potentially qualified for subsidy. A qualified project draws money from the corresponding account to fill the feasibility gap. Not all qualified projects will be subsidized.

-

VMT Linkage Fees

-

These fees on new commercial or residential development reflect transportation impacts associated with such development, focusing primarily on new commercial spaces or residential units anticipated to have high employment-related or residence-related vehicle miles traveled (VMT). The fees are applied to the specified geogrpahy on a $/sqft basis for commercial development and $/unit basis for residential development. They can be used on commercial development to subsidize residential development, on residential development to subsidize residential development, and on commercial development to subsidize commercial development. Each parcel in a given geography is assigned a user-specified fee based on its categorized VMT-level.

-

Jobs-Housing Linkage Fee

-

This policy is mechanically similar to transportatin impact fees, but is a regional jobs-housing linkage fee to generate funding for affordable housing when new office development occurs in job-rich places, thereby incentivizing more jobs to locate in housing-rich places. The $/sqft fee assigned to each geography is a composite fee based on the jobs-housing ratio and jobs-housing fit for both cities and counties.

-

Office and Residential Construction Caps

-

These caps limit the number of new residential units and job spaces that can occur in a given geography. The default caps in BAUS are inherited in all model runs, including when scenario-based caps are added.

- - - - - - -
-
- - - - -
- -
- - - -
-
-
-
- - - - - - - - - \ No newline at end of file diff --git a/viz_interim_based_on_new_inputs/search/search_index.json b/viz_interim_based_on_new_inputs/search/search_index.json deleted file mode 100755 index f4c06d8b7..000000000 --- a/viz_interim_based_on_new_inputs/search/search_index.json +++ /dev/null @@ -1 +0,0 @@ -{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"configuration/","title":"Configuration","text":""},{"location":"configuration/#baus-configuration","title":"BAUS Configuration","text":"

The configuration file structure for Bay Area UrbanSim (BAUS) and a description of each file. Model configurations files are stored in a configs folder in the model repository. They specify model settings such as model estimation constants and assumptions.

"},{"location":"configuration/#bayarea_urbnasimconfigs","title":"bayarea_urbnasim/configs","text":""},{"location":"configuration/#adjusters","title":"adjusters/","text":"name description cost_shifters.yaml Multipliers to cost, currently specified by county, used to calibrate the model. development_caps_asserted.yaml Caps on development, either residential or office, used to calibrate the model. (TODO: remove any base year existing policy caps entangled here). employment_relocation_rates_overwrites.csv These overwrite the relocation rates in employment_relocation_rates.csv to calibrate the model, e.g. leave government sector jobs in San Francisco City Hall's TAZ. sqft_per_job_adjusters Multipliers to the number of sqft used by each job, defined in the model's developer settings, which modify the number of jobs that can occupy a building. This is used to calibrate the model, e.g. reflect CBD job densities or adjust vacancy rates by superdistrict. The inputs file telecommute_sqft_per_job_adjusters.csv uses alternative multipliers for for the forecast years in place of these, if the strategy is enabled. (TODO: Disentangle the k-factors and the policy application in these two files. In the meantime, use both files as is done in the PBA50 No Project). zoning_adjusters.yaml Adjusters used to modify the model's zoning data."},{"location":"configuration/#accessibility","title":"accessibility/","text":"name description accessibility_settings.yaml Settings for Pandana, the model's endogenous accessibility calculations. neighborhood_vars.yaml Settings for calculating local accessibility variables during the model run. regional_vars.yaml Settings for calculating regional accessibility variables during the model run. price_vars.yaml Settings for calculating local accessibility variables on price during the model run."},{"location":"configuration/#developer","title":"developer/","text":"name description developer_settings.yaml Settings for the model's developer and feasibility models. residential_vacancy_rates.csv Residential vacancy rates for the residential developer model, separated from the main developer settings into this file to allow them to vary by year."},{"location":"configuration/#hedonics","title":"hedonics/","text":"name description price_settings.yaml Settings for the model's price simulation and supplydemand equilibration of price. nrh.yaml Non-residential hedonic price model specification. rrh.yaml Residential rent hedonic price model specification. rsh.yaml Residential sales hedonic price model specification."},{"location":"configuration/#location_choice","title":"location_choice/","text":"name description elcm.yaml Employment location choice model specification, segemented by six employment sectors. hlcm_owner.yaml Household location choice model specification segmented by income quartiles. The models are estimated for owner households. hlcm_owner_lowincome.yaml This uses the same specification and estimated coefficients as hlcm_owner. The only difference is that it is used to only low income households to choose deed-restricted owner units. hlcm_owner_lowincome_no_unplaced.yaml This uses the same specification and estimated coefficients as hlcm_owner, but allows owners of all incomes into deed-restricted owner units to cover any gaps in assignment. hlcm_owner_no_unplaced.yaml This uses the same specification and estimated coefficients as hlcm_owner, but does another round of placements of owners, this time into non-deed-restricted owner units, to cover any gaps in assignment. hlcm_renter.yaml Household location choice model specification segmented by income quartiles. The models are estimated for rental households. hlcm_renter_lowincome.yaml This uses the same specification and estimated coefficients as hlcm_renter. The only difference is that it is used to only low income households to choose deed-restricted rental units. hlcm_renter_lowincome_no_unplaced.yaml This uses the same specification and estimated coefficients as hlcm_renter, but allows renters of all incomes into deed-restricted rental units to cover any gaps in assignment. hlcm_renter_no_unplaced.yaml This uses the same specification and estimated coefficients as hlcm_renter, but does another round of placement of renters, this time into non-deed-restricted rental units, to cover any gaps in assignment. HLCM Model Estimation Choosers: Filters Estimation Alternatives: Filters Simulation Choosers: Filters Simulation Alternatives: Filters owner Owners - Owners Owner Units owner_lowincome Owners - Low-Income Owners Affordable Owner Units owner_lowincome_no_unplaced - - Owners Affordable Owner Units owner_no_unplaced Owners - Owners Market-Rate Owner Units renter Renters - Renters Renters Units renter_lowincome Renters - Low-Income Renters Affordable Rental Units renter_lowincome_no_unplaced - - Renters Affordable Rentual Units renter_no_unplaced Renters - Renters Market Rate Rental Units"},{"location":"configuration/#transition_relocation","title":"transition_relocation/","text":"name description employment_relocation_rates.csv A file with the probability of a job relocating during a time step in the forecast, by TAZ and by employment sector. Pairs with employment_relocation_rates.csv which overwrites the model probabilities with calibration factors. household_relocation_rates.csv A file with the probability of a household relocating during a time step in the forecast, by TAZ, income, and tenure. Pairs with renter_protections_relocation_rates_overwrites.csv which overwrites model probabilities with different relocation rates when the renter protections strategy is enabled. transition_relocation_settings.yaml Settings for the transition and relocation models."},{"location":"configuration/#mappingyaml","title":"mapping.yaml","text":"

Mapping used in the model to relate variables to one another.

"},{"location":"configuration/#pathsyaml","title":"paths.yaml","text":"

Variables that store file names for use in the model code.

"},{"location":"input/","title":"Input","text":""},{"location":"input/#baus-inputs","title":"BAUS Inputs","text":"

The inputs structure for BAUS and a description of each input. Model input files are stored in an inputs folder to be called by the model. They are often run-specific and contain the data used to run the model, such as base year datasets and policy inputs.

"},{"location":"input/#inputs","title":"inputs/","text":""},{"location":"input/#accessibility","title":"accessibility/","text":""},{"location":"input/#pandana","title":"pandana/","text":"name description tmnet.h5 Travel model network information for calculating accessibility within the model using Pandana osm_bayarea4326.h5 Street network information for calculating accessibility within the model using Pandana landmarks.csv Locations of a few major landmarks in the region for accessibility calculations. regional_poi_distances.csv The pre-computed distances from each travel model node to each landmark. bart_stations.csv A list of BART stations and their locations so that distance to BART can calculated. logsums.csv A set of base year logsums from the travel model. #### travel_model/ name description ----- ----- AccessibilityMarkets_[year].csv A travel model output file that incorportates travel model run logsums into the forecast, by year. mandatoryAccessibilities_[year].csv A travel model output file that incorportates travel model run logsums into the forecast, by year. nonMandatoryAccessibilities_[year].csv A travel model output file that incorportates travel model run logsums into the forecast, by year."},{"location":"input/#basis_inputs-in-progress","title":"basis_inputs (in progress)/","text":""},{"location":"input/#crosswalks","title":"crosswalks/","text":"name desription parcel_to_maz22.csv A lookup table from parcels to Travel Model Two MAZs. parcel_to_taz1454sub.csv A lookup table from parcels to Travel Model One TAZs. parcels_geography.csv A lookup table from parcels to jurisdiction, growth geographies, UGB areas, greenfield areas, and a concatenation of these used to join these geographies zoning_mods.csv, to apply zoning rules within them. census_id_to_name.csv Maps census id from parcels_geography to name so it can be used. maz_geography A lookup between MAZ, TAZ2, and county. maz22_taz1454 A lookup between MAZ and TAZ1. superdistricts_geography.csv A map of superdistrict numbers, names, and their subregion. taz_geography.csv A lookup between TAZ1, supedisctrict, and county."},{"location":"input/#edits","title":"edits/","text":"name description data_edits.yaml Settings for editing the input data in the model code, e.g. clipping values. manual_edits.csv Overrides the current h5 data using the table name, attribute name, and new value, so we don't have to generate a new one each time. household_building_id_overrides.csv Moves households to match new city household totals during the data preprocessing. tpp_id_2016.csv Updates tpp_ids after changes were made to the ids."},{"location":"input/#existing_policy","title":"existing_policy/","text":"name description development_caps.yaml Base year job cap policies in place in jurisdictions (TODO: remove the asserted development capsk-factors entangled here.) inclusionary.yaml Base year inclusionary zoning policies in place in jurisdictions (TODO: have all model runs inherit these, even if an inclusionary stratey is applied)."},{"location":"input/#hazards","title":"hazards/","text":"name desctiption slr_progression.csv The sea level rise level, for each forecast year. slr_inundation.csv The sea level rise level at which each inundation parcel becomes inundated, for each forecast year. Rows marked with \"100\" are parcels where sea level rise has been mitigated, either through planned projects or a plan strategy."},{"location":"input/#parcels_buildings-agents","title":"parcels_buildings-agents/","text":"name description bayarea_v3.h5 Base year database of households, jobs, buildings, and parcels. The data is pre-processed in pre-processing.py. costar.csv Commercial data from CoStar, including non-residential price to inform the price model. development_projects.csv The list of projects that have happened since the base data, or buildings in the development pipeline. This file tends to have more attributes than we use in the model. deed_restricted_zone_totals.csv An approximate number of deed restricted units per TAZ to assign randomly within the TAZ. baseyear_taz_controls.csv Base year control totals by TAZ, to use for checking and refining inputs. The file includes number of units, vacancy rates, and employment by sector (TODO: add households). sfbay_craisglist.csv Craigslist data to inform rental unit information and model tenure."},{"location":"input/#zoning","title":"zoning/","text":"name description zoning_parcels.csv A lookup table from parcels to zoning_id, zoning area information, and a \"nodev\" flag (currently all set to 0). zoning_lookup.csv The existing zoning for each jurisdiction, assigned to parcels with the \"id\" field. Fields include the city name, city id, and the name of the zoning. The active attributes are max_dua, max_far, and max_height, all of which must be respected by each development."},{"location":"input/#plan_strategies-optional","title":"plan_strategies (optional)/","text":"name description accessory_units.csv A file to add accessory dwelling units to jurisdictions by year, simulating policy to allow or reduce barriers to ADU construction in jurisdictions (TODO: Make this a default policy). account_strategies.yaml This files contains the settings for all strategies in a model run that use accounts. The file may include account settings (e.g., how much to spend, where to spend) for development_caps_strategy.yaml A file that specifies a strategy to limit development (generally office development) to a certain number of residential units andor job spaces. inclusionary_strategy.yaml A file to apply an inclusionary zoning strategy by geography and inclusionary housing requirement percentage. preservation.yaml A file to apply an affordable housing preservation strategy through specifying geography and target number of units for preservation. profit_adjustment_stratgies.yaml This file contains the settings for all strategies in a model run which modify the profitability of projects thus altering their feasibility. The file may include profit adjustment settings (e.g., the percent change to profit) for renter_protections_relocation_rates_overwrites The rows in this file overwrite the household relocation rates in the model's settings. telecommute_sqft_per_job_adjusters These are multipliers which adjust the sqft per job setting by superdistrict by year to represent changes from a telework strategy. (TODO: Disentangle the k-factors and the policy application within this file and sqft_per_job_adjusters.csv. In the meantime, use both files as is done in the PBA50 No Project). vmt_fee_zonecats.csv This file pairs with the VMT Fee and SB-743 strategies. It provides VMT levels by TAZ1, which map to the corresponding price adjustments in the strategies. zoning_mods.csv A file which allows you to upzone or downzone. If you enter a value in \"dua_up\" or \"far_up\", the model will apply that as the new zoning or maintain the existing zoning if it is higher. If you enter a value in \"dua_down\" or \"far_down\", the model will apply that as the zoning or maintain the existing zoning if it is lower. UGBs are also controlled using this file, using zoning changes to enforce them. This file is mapped to parcels using the field \"zoningmodcat\", which is the concatenated field of growth designations in parcels_geography.csv."},{"location":"input/#regional_controls","title":"regional_controls/","text":"name description employment_controls.csv The total number of jobs in the region for the model to allocate, by year. The controls are provided by 6-sector job category. household_controls.csv The total number of households in the region for the model to allocate, by year. The controls are provided by household income quartile."},{"location":"input/#zone_forecasts","title":"zone_forecasts/","text":"name description taz_growth_rates_gov_ed.csv This file has ratios of governement and education employment per population by County and TAZ. The files has two header rows prportional_retail_jobs_forecast.csv This contains the field \"minimum_forecast_retail_jobs_per_household\" by jurisdiction, which is used to keep local numbers of retail jobs reasonable through the forecast. tm1_taz1_forecast_inputs.csv This is closely related to regional_controls.csv. These are zone level inputs used for the process of generating variables for the travel model, while the other file contains regional-level controls. These inputs provide TAZ1454 information, used for Travel Model One summaries. tm2_taz2_forecast_inputs.csv The same as above, except these inputs provide TAZ2 information, usED for Travel Model Two summaries. tm1_tm2_maz_forecast_inputs.csv The same as above, except these inputs provide MAZ information, used for btoh Travel Model One and Travel Model Two summaries. tm2_emp27_employment_shares The forecasted share of jobs by 26 sectors, used to apportion that 6 sectors used in the model into more detailed categories Travel Model Two. The shares are provided by county and by year. tm2_occupation_shares The forecasted share of jobs by occupation, used for Travel Model Two. The shares are provided by county and by year. tm1_tm2_regional_controls.csv Controls from the regional forecast which give us employed residents and the age distribution by year, used to forecast variables used by the travel model. tm1_tm2_regional_demographic_forecast Similar to regional_controls.csv, this file provides regional-level information to produce travel model variables, in this case using forecasts of shares by year."},{"location":"model/","title":"Bay Area UrbanSim (BAUS)","text":""},{"location":"model/#model-overview","title":"Model Overview","text":"

Bay Area UrbanSim (BAUS) is a microeconomic land use model used to forecast intraregional growth and study urban policies. BAUS simulates the movement of households and firms within the region and the construction of built space. The total number of households and jobs in the region in future years is forecast using the REMI regional economic model and additional demographic processing scripts. BAUS uses these projections incrementally forecast urban growth trajectories, with forecasted land use patterns then used in the regional travel demand model to evaluate future travel patterns.

Households, firms, and developers in BAUS act on the parcel as the model's base unit of analysis. Developers determine feasible parcels in the region to build housing units and jobs space. Households and firms choose where to locate based on behavioral model preferences for particular locations. The price of buildings in BAUS is updated each model time step to reflect local changes and changes in demand for particular areas, in turn altering the feasibility of redevelopment for developers. These core models run every five years to produce the land use forecast.

"},{"location":"model/#baus-sub-model-flow","title":"BAUS Sub-Model Flow","text":"

A series of sub-models are used to simulate the decisions of households and firms in a land use forecast. The BAUS sub-models and their modeling methods are described below. Some BAUS models have been segmented to capture key elements of real estate markets, such as housing tenure, or to capture varying preferences among households and firms, such as the varying location preferences of different employment sectors. Additional models have been added that help model urban policies, such as the option to locate in affordable housing units.

"},{"location":"model/#accessibility-calculations","title":"Accessibility Calculations","text":"

Pandana is open-source software package used to calculate endogenous accessibility variables. These generally describe how close a parcel is to something (e.g., BART) or how many things are nearby a parcel (e.g., number of jobs), informing both price prediction models and location choice models. Both local (local street network from Open Street Map) and regional (travel model network) networks are used to compute these variables.

"},{"location":"model/#price-rent-prediction","title":"Price & Rent Prediction","text":"

Hedonic regression models are applied to current model year conditions to estimate both prices and rents in that year. Accessibillity information from the regional travel model is entered into these models, allowing future year travel conditions to influence real estate prices. This feature is central to MTC's integrated land use and travel modeling.

"},{"location":"model/#household-firm-relocation","title":"Household & Firm Relocation","text":"

Households and firm are selected to move based on historic relocation probabilities. Household move-out choice is conditional on tenure status. Households and firms that are selected to relocate are added to the set of relocation agents looking for homes and job space, to be placed with the model's location choice models.

"},{"location":"model/#household-firm-transition","title":"Household & Firm Transition","text":"

REMI is used to generate the model's control totals for region's total number of households and jobs, while BAUS outputs on housing production are used to adjust regional housing prices in REMI. Additional households and employees are added or subtracted from BAUS in each model time step to reflect the exogenous control totals. Any net additional households and firms are added to the set of relocation agents looking for homes and job space, to be placed with the model's location choice models.

"},{"location":"model/#pipeline-project-development","title":"Pipeline Project Development","text":"

Buildings in the region's development pipeline are constructed by entering the projects into the development poipeline list. These are often large approved development projects and development that has occurred after the model's base year.

"},{"location":"model/#market-rate-developer-model","title":"Market-Rate Developer Model","text":"

The for-profit real estate development model in BAUS samples locations in the region in order to evaluate potential development sites using a simplified pro forma model. Sub-features of the developer model include a zone-level model that asserts ADU development to reflect ADU policy and a ground floor retail model adds retail to multi-story buildings to reflect typical policy.

"},{"location":"model/#affordable-housing-developer-model","title":"Affordable Housing Developer Model","text":"

In many simulations, a similar not-for-profit real estate development process produces affordable housing units based on money available within BAUS affordable housing funding accounts.

"},{"location":"model/#household-firm-location-choice-models","title":"Household & Firm Location Choice Models","text":"

Households and firms are assigned to new locations based on logistic regresssion models that capture the preferences of particular segments of households and jobs (e.g., lower income households, retail jobs). Household location choice models are separated by housing tenure. Additional household location choice models are also run that ensure low-income households are given priority for affordable housing units, allowing affordable housing to be explicity modeled in BAUS.

"},{"location":"model/#institutional-jobs-model","title":"Institutional Jobs Model","text":"

Particular industry sectors which don't follow traditional market economics are forecast separately from. For government and education jobs, the number of jobs grow over the simulation period in proportion to their zonal shares. The buildings that house these jobs are off-limits from redevelopment.

"},{"location":"model/#retail-model","title":"Retail Model","text":"

An additional retail model takes into account where demand for retail is high and supply is low to ensure there are retail services in each jurisdiction. Retail demand is a function of the number of households and household incomes.

"},{"location":"output/","title":"Output","text":""},{"location":"output/#baus-outputs","title":"BAUS Outputs","text":"

The outputs of BAUS and a description of each file. Model output files are written to an outputs folder during a BAUS model run.

"},{"location":"output/#outputs","title":"outputs/","text":""},{"location":"output/#core-summaries","title":"core summaries","text":"name description parcel_summary_[year].csv Development, households, and jobs on each parcel in a given year. parcel_growth_summary.csv Change in development, households, and jobs on each parcel between the model's base year and forecast year. building_summary_[year].csv Inventory of buildings in a given year, linked to the parcel they sit on. new_buildings_summary.csv Inventory of all buildings built during the simulation. interim_zone_output_[year].csv Interim model data at the TAZ level. feasibility.csv Parcel-level data on the development feasibilities of various development types given the zoning, development costs, and expected return. Contains two sets of development variables grouped by six development types (coded as form): retail, industrial, office, residential, mixedresidential, mixedoffice. For every development type, one set of variables are passed through from the parcels table as input for the feasibility evaluation; the other set of variables are the result of the feasibility evaluation.Only parcels where at least one development type is feasible are included."},{"location":"output/#geographic-summaries","title":"geographic summaries","text":"name description jurisdiction_summary_[year].csv Jurisdiction-level summary of development, households, and jobs in a given year. jurisdiction_summary_growth.csv Jurisdiction-level change in development, households, and jobs between the model's base year and forecast year. superdistrict_summary_[year].csv Superdistrict-level summary of development, households, and jobs in a given year. superdistrict_summary_growth.csv Superdistrict-level change in development, households, and jobs between the model's base year and forecast year. county_summary_[year].csv County-level summary of development, households, and jobs in a given year. county_summary_growth.csv County-level change in development, households, and jobs between the model's base year and forecast year. subregion_summary_[year].csv Subregion-level change in development, households, and jobs in a given year. subregion_summary_growth.csv Subregion-level change in development, households, and jobs between the model's base year and forecast year. region_summary_[year].csv Regional summary of development, households, and jobs in a given year. region_summary_growth.csv Regional change in development, households, and jobs between the model's base year and forecast year."},{"location":"output/#travel-model-summaries","title":"travel model summaries","text":"name description taz1_summary_[year].csv TAZ1/TAZ1454-level summaries of development, households, jobs, demographics, and density attributes used for travel modeling. taz1_summary_growth.csv TAZ1/TAZ1454-level change in development, households, jobs, demographics, and density attributes used for travel modeling. maz_marginals_[year].csv MAZ-level summaries of households and demographics used to create the synthesized population for travel modeling. maz_summary_[year].csv MAZ-level summaries of development, households, jobs, and density attributes used for travel modeling. maz_summary_growth.csv MAZ-level change in development, households, jobs, and density attributes used for travel modeling. taz2_marginals_[year].csv TAZ2-level summaries of households and demographics used to create the synthesized population for travel modeling. county_marginals_[year].csv County-level summaries of demographics and jobs used to create the synthesized population for travel modeling. region_marginals_[year].csv Region-level summaries of demographics used to create the synthesized population for travel modeling."},{"location":"output/#affordable-housing-summaries","title":"affordable housing summaries","text":"name description juris_dr_summary_[year].csv Jurisdiction-level summary of deed-restricted units by type in a given year. juris_dr_growth.csv Jurisdiction-level change in deed-restricted units by type between the model's base year and forecast year. superdistrict_dr_summary_[year].csv Superdistrict-level summary of deed-restricted units by type in a given year. superdistrict_dr_growth.csv Superdistrict-level change in deed-restricted units by type between the model's base year and forecast year. county_dr_summary_[growth].csv County-level summary of deed-restricted units by type in a given year. county_dr_growth County-level change in deed-restricted units by type between the model's base year and forecast year. region_dr_summary_[year].csv Region-level summary of deed-restricted units by type in a given year. region_dr_growth.csv Region-level change in deed-restricted units by type between the model's base year and forecast year."},{"location":"output/#hazards-summaries","title":"hazards summaries","text":"name description slr_summary_[year].csv Sea level rise impacted parcels, buildings, households, and jobs in a given year. eq_codes_summary_[year].csv Summary of earthquake codes assigned to buildings, in the earthquake year. eq_fragilities_summary_[year].csv SUmmary of fragilities assigned to buildings, in the earthquake year. slr_summary_[year].csv Earthquake impacted parcels, buildings, households, and jobs in the earthquake year. eq_demolish_buildings_[year].csv Inventory of buildings impacted by earthquake, by TAZ for the resilience team. eq_demolish_buildings_[year].csv Inventory of buildings retrofit for earthquake, by TAZ for the resilience team. eq_buildings_list_[year].csv Inventory of buildings in key earthquake years, by TAZ for the resilience team."},{"location":"output/#metrics","title":"metrics","text":"name description growth_geog_summary_[year].csv Households and jobs in growth geographies and combinations of growth geographies, by year. growth_geog_growth_summary_[year].csv Change in households and jobs in growth geographies and combinations of growth geographies between the model's base year and forecast year. dr_units_metrics.csv Change in deed-restricted units by HRA and COC. household_income_metrics_[year].csv Low income households by growth geography, by year. equity_metrics.csv Change in low income households in Displacement tracts and COC tracts. jobs_housing_metrics.csv Jobs-Housing ratios by county, by year. jobs_metrics.csv Change in PPA and manufacturing jobs. slr_metrics.csv Sea level rise affected and protected total households, low-income households and COC households. earthquake_metrics.csv Total housing units retrofit and total retrofit cost, for all units and for COC units. Earthquake affected and protected total households, low-income households, and COC households. greenfield_metric.csv Change in annual greenfield development acres."},{"location":"output/#interim_zone_outputcsv","title":"interim_zone_output.csv","text":"Attribute Description Data Type Source Sub-model/step unit_residential_price median residential price of all residential units in a TAZ float BAUS \"residential_units\" table rsh_simulate() unit_residential_price_>_rent 1 or 0 representing if the TAZ-level per-unit residential price is higher than annualized rent divided by cap_rate. int BAUS \"residential_units\" table and \"developer_settings\" summary.py residential_price median per sq.ft. residential price of all residential buildings in a TAZ (based on general building type); currently used only for estimation, not for simulation float \"buildings\" table residential_price() zoned_du maximum number of dwelling units allowed on all parcels in a TAZ int BAUS \"parcels\" table zoned_du() zoned_du_underbuild additional dwelling units allowed on all parcels in a TAZ given existing development conditions, 0 if the additional units are not at least half of existing development int BAUS \"parcels\" table zoned_du_underbuild() zoned_du_underbuild_ratio ratio of additional allowable residential units to maximum allowable residential units int BAUS \"zones\" table zoned_du_build_ratio() building_count total number of residential buildings in a TAZ, based on general building type int BAUS \"buildings\" table XXX residential_units total number of residential units in a TAZ int BAUS \"buildings\" table XXX ave_unit_sqft 0.6 quantile of building-level average residential unit size of all builidings in a TAZ int BAUS \"building\" table ave_unit_sqft() residential_vacancy percentage of residential units in a TAZ that are not occupied by a household float BAUS \"households\" table, BAUS \"buildings\" table BAUS summary.py non_residential_sqft total sq.ft. of all non-residential buildings in a TAZ int BAUS \"buildings\" table XXX job_spaces total number of jobs that can be accommodated by non-residential space in a TAZ int BAUS \"building\" table; sq.ft. per job setting XXX non_residential_vacancy percentage of job_spaces in a TAZ that are not occupied by a job float BAUS \"jobs\" table, BAUS \"buildings\" table XXX average_income median income of all households in a TAZ int BAUS \"households\" table; BAUS \"households_preproc\" table summary.py; MTC/ABAG household models?"},{"location":"output/#new_building_summarycsv","title":"new_building_summary.csv","text":"Attribute Description Data Type Source Sub-model/step development_id XXX XXX XXX XXX SDEM XXX XXX XXX XXX building_type XXX XXX XXX XXX residential XXX XXX XXX XXX building_sqft XXX XXX XXX XXX non_residential_sqft XXX XXX XXX XXX job_spaces XXX XXX XXX XXX residential_sqft XXX XXX XXX XXX residential_units XXX XXX XXX XXX total_residential_units XXX XXX XXX XXX total_sqft XXX XXX XXX XXX source XXX XXX XXX XXX x XXX XXX XXX XXX y XXX XXX XXX XXX year_built XXX XXX XXX XXX"},{"location":"output/#feasibilitycsv","title":"feasibility.csv","text":"Attribute Description Data Type Source parcel_id Parcel index int oldest_building ? ? pass_through from input parcel frame total_sqft ? ? pass_through from input parcel frame total_residential_units ? ? pass_through from input parcel frame max_far int pass_through from input parcel frame max_dua int pass_through from input parcel frame land_cost int pass_through from input parcel frame residential pass_through from input parcel frame min_max_fars int pass_through from input parcel frame max_height int pass_through from input parcel frame building_purchase_price int pass_through from input parcel frame building_purchase_price_sqft pass_through from input parcel frame residential_sales_price_sqft https://app.asana.com/0/0/1201856230375726/f pass_through from input parcel frame pda_pba40 pass_through from input parcel frame pda_pba50 pass_through from input parcel frame trich_id str pass_through from input parcel frame cat_id pass_through from input parcel frame tra_id pass_through from input parcel frame ppa_id pass_through from input parcel frame sesit_id pass_through from input parcel frame coc_id pass_through from input parcel frame juris pass_through from input parcel frame county pass_through from input parcel frame superdistrict pass_through from input parcel frame geom_id pass_through from input parcel frame vmt_res_cat pass_through from input parcel frame vmt_nonres_cat pass_through from input parcel frame parking_config parking type, e.g. deck, surface string created by run_feasibility() building_sqft The number of square feet for the building to build. Keep in mind this includes parking and common space. Will need a helpful function to convert from gross square feet to actual usable square feet in residential units. float created by run_feasibility() building_cost The cost of constructing the building as given by the ave_cost_per_sqft from the cost model (for this FAR) and the number of square feet. float created by run_feasibility() parking_ratio ? ? ? stories ? ? ? total_cost The cost of constructing the building plus the cost of acquisition of the current parcel/building. float created by run_feasibility() building_revenue The NPV of the revenue for the building to be built, which is the number of square feet times the yearly rent divided by the cap rate (with a few adjustment factors including building efficiency). float created by run_feasibility() max_profit_far The FAR of the maximum profit building (constrained by the max_far and max_height from the input dataframe). float created by run_feasibility() max_profit The profit for the maximum profit building (constrained by the max_far and max_height from the input dataframe). float created by run_feasibility() residential_sqft float created by run_feasibility() non_residential_sqft float created by run_feasibility() fees created by run_feasibility() policy_based_revenue_reduction int created by run_feasibility() deed_restricted_units int created by run_feasibility() inclusionary_units int created by run_feasibility()"},{"location":"scenarios/","title":"Scenarios","text":""},{"location":"scenarios/#baus-scenarios","title":"BAUS Scenarios","text":"

BAUS model runs have serveral optional levers that can be used to create a forecast scenario. These levers are used to observe potential outcomes of urban planning policies and natural hazards. Packages of changes can be applied to create modeling scenarios and forecast impacts on urban growth, equity, and the environment. Optional model features used to build BAUS scenarios are described below.

"},{"location":"scenarios/#earthquake-model","title":"Earthquake Model","text":"

This model simulates the impact of an earthquake occuring by destroying buildings based on a their locational likelihood of damage and their building attributes. Households and firms are displaced in the earthquake event to find new housing and job locations. The model then forecasts where redevelopment might occur. If mitigtion is applied in an earthquake simulation scenario, buildings are selected to be retrofit based on their building attributes, changing their damage likelihood.

"},{"location":"scenarios/#sea-level-rise-model","title":"Sea Level Rise Model","text":"

Sea level rise model: The sea level rise model simulates the impact of sea level rise in a given year. Buildings impacted by sea level rise in that year are destroyed and their households and firms are displaced to search for new housing and job locations. A parcel that has been inundated sea level rise can no longer be developed. If mitigation is applied in a sea level rise simulation scenario, protected parcels are no longer impacted in their forecasted inundation year.

"},{"location":"scenarios/#housing-preservation","title":"Housing Preservation","text":"

This model randomly selects buildings to preserve in BAUS based on preservation targets established by geography. All deed-restricted affordable housing units in the model are treated in two ways. The first is that they cannot be redeveloped when the developer models examine potential sites. The second is that low-income households receive priority to locate in them in the location choice models using the models filters.

"},{"location":"scenarios/#inclusionary-zoning","title":"Inclusionary Zoning","text":"

Inclusionary zoning sets a requirement that a percentage of new housing development must be affordable units. The default inclusionary settings in BAUS represent the existing requirements without plan strategy interventions. Scenario-based strategies can set inclusionary rates at a given geography level. The model calculates Area Median Income, feasible new affordable housing count, and revenue_reduction amount.

"},{"location":"scenarios/#housing-cost-reduction","title":"Housing Cost Reduction","text":"

Reducing the cost of buildings housing can come in various forms: CEQA reform, lowering parking requirements, etc. These have the potential to make new projects profitable, especially when combined with other policies. For these policies, parcels within the specified geography decrease the required profitability level needed for the model to build on those parcels.

"},{"location":"scenarios/#transportation-impact-fees","title":"Transportation Impact Fees","text":"

This policy is implemented by changing the cost of development in a zone based on the VMT in the area. Low VMT areas see a slight reduction in fees.

"},{"location":"scenarios/#housing-and-office-subsidies","title":"Housing and Office Subsidies","text":"

Subsidies provide funding to either residential or commerical projects to improve their feasibility. A user-specified funding amount is applied to each model time step Development projects that are not feasible under market conditions are potentially qualified for subsidy. A qualified project draws money from the corresponding account to fill the feasibility gap. Not all qualified projects will be subsidized.

"},{"location":"scenarios/#vmt-linkage-fees","title":"VMT Linkage Fees","text":"

These fees on new commercial or residential development reflect transportation impacts associated with such development, focusing primarily on new commercial spaces or residential units anticipated to have high employment-related or residence-related vehicle miles traveled (VMT). The fees are applied to the specified geogrpahy on a $/sqft basis for commercial development and $/unit basis for residential development. They can be used on commercial development to subsidize residential development, on residential development to subsidize residential development, and on commercial development to subsidize commercial development. Each parcel in a given geography is assigned a user-specified fee based on its categorized VMT-level.

"},{"location":"scenarios/#jobs-housing-linkage-fee","title":"Jobs-Housing Linkage Fee","text":"

This policy is mechanically similar to transportatin impact fees, but is a regional jobs-housing linkage fee to generate funding for affordable housing when new office development occurs in job-rich places, thereby incentivizing more jobs to locate in housing-rich places. The $/sqft fee assigned to each geography is a composite fee based on the jobs-housing ratio and jobs-housing fit for both cities and counties.

"},{"location":"scenarios/#office-and-residential-construction-caps","title":"Office and Residential Construction Caps","text":"

These caps limit the number of new residential units and job spaces that can occur in a given geography. The default caps in BAUS are inherited in all model runs, including when scenario-based caps are added.

"}]} \ No newline at end of file diff --git a/viz_interim_based_on_new_inputs/sitemap.xml b/viz_interim_based_on_new_inputs/sitemap.xml deleted file mode 100755 index 51a0ff5c9..000000000 --- a/viz_interim_based_on_new_inputs/sitemap.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - http://bayareametro.github.io/bayarea_urbansim/viz_interim_based_on_new_inputs/configuration/ - 2023-10-16 - daily - - - http://bayareametro.github.io/bayarea_urbansim/viz_interim_based_on_new_inputs/input/ - 2023-10-16 - daily - - - http://bayareametro.github.io/bayarea_urbansim/viz_interim_based_on_new_inputs/model/ - 2023-10-16 - daily - - - http://bayareametro.github.io/bayarea_urbansim/viz_interim_based_on_new_inputs/output/ - 2023-10-16 - daily - - - http://bayareametro.github.io/bayarea_urbansim/viz_interim_based_on_new_inputs/scenarios/ - 2023-10-16 - daily - - \ No newline at end of file diff --git a/viz_interim_based_on_new_inputs/sitemap.xml.gz b/viz_interim_based_on_new_inputs/sitemap.xml.gz deleted file mode 100755 index 8a9f36b55..000000000 Binary files a/viz_interim_based_on_new_inputs/sitemap.xml.gz and /dev/null differ