Skip to content
Permalink
Browse files

completed TOC article

  • Loading branch information...
james-tyner committed Apr 26, 2019
1 parent c982ce0 commit f7ba84747efc742222cf7b629a6fd16871f3a642
26 app.js
@@ -18,7 +18,17 @@ var https = require('https');

require('dotenv').load();

app.engine('handlebars', exphbs({defaultLayout: 'main'}));
app.engine('handlebars', exphbs({
defaultLayout: 'main',
helpers:{
commaSeparated:function(val){
while (/(\d+)(\d{3})/.test(val.toString())){
val = val.toString().replace(/(\d+)(\d{3})/, '$1'+','+'$2');
}
return val;
}
}
}));
app.set('view engine', 'handlebars');

app.get('/', function (req, res) {
@@ -31,22 +41,18 @@ app.get('/', function (req, res) {
res.render('home', {
layout: false,
summaryData:summaryData,
tocData:tocData,
helpers:{
commaSeparated:function(val){
while (/(\d+)(\d{3})/.test(val.toString())){
val = val.toString().replace(/(\d+)(\d{3})/, '$1'+','+'$2');
}
return val;
}
}
tocData:tocData
});
});

app.get("/articles/activity", function(req, res){
res.render('articles/activity-overview', {layout:false})
})

app.get("/articles/TOC", function(req, res){
res.render("articles/TOC", {layout:false})
})

app.use(compression());
app.use(express.static("public"));

@@ -29,6 +29,26 @@
.chart-container {
position:relative;
width:100%;

table {
border-collapse:collapse;

th {
text-align:left;
padding:0.75em;
font-weight:bold;
font-size:0.8em;
}

td {
border:1px solid $gray;
padding:0.75em;
}

td[colspan="3"]{
font-style:italic;
}
}
}
}

Large diffs are not rendered by default.

This file was deleted.

@@ -1,3 +1,3 @@
{
"toc-units": 16815
"toc-units": 16817
}
@@ -0,0 +1,174 @@
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">

<title>Add it up. | Incentives to build transit-oriented communities don’t seem to make a big difference</title>

<link rel="icon" type="image/png" href="../favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="../favicon-16x16.png" sizes="16x16" />

<!-- FontAwesome -->
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/solid.css" integrity="sha384-QokYePQSOwpBDuhlHOsX0ymF6R/vLk/UQVz3WHa6wygxI5oGTmDTv8wahFOSspdm" crossorigin="anonymous">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/fontawesome.css" integrity="sha384-vd1e11sR28tEK9YANUtpIOdjGW14pS87bUBuOIoBILVWLFnS+MCX9T6MMf0VdPGq" crossorigin="anonymous">

<!-- Chart.js -->
<script src="https://cdn.jsdelivr.net/npm/chart.js@2.8.0"></script>

<!-- MY STYLESHEETS -->
<link rel="stylesheet" href="../../css/styles.min.css">

<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-135640841-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-135640841-1');
</script>
</head>
<body>
<header id="info-nav" style="border:none;">
<a href="/"><h1 id="nav-title"><span id="title-emphasis">Add it up.</span> <span id="beta">BETA</span></h1></a>
<form id="search" action="/info/search" method="post">
<input type="text" id="zip" name="zip" placeholder="Find a ZIP code or neighborhood">
</form>
</header>

<main class="article-main">
<h1 class="article-title">Incentives to build transit-oriented communities don’t seem to make a big difference</h1>
<h4 class="byline">by JAMES TYNER | Apr. 25, 2019</h4>

<div class="article-container">
<p><strong>TL;DR: Around Metro Rail stations in LA, the number of housing units built in 2018 — after TOC incentives went into effect — is lower than in 2016, the calendar year before they were instituted.</strong></p>

<p>After Los Angeles voters approved Measure JJJ in November 2016, the city went to work developing a program to encourage more housing construction near transit.</p>

<p>The resulting <a href="https://planning.lacity.org/ordinances/docs/TOC/TOCGuidelines.pdf">Transit Oriented Communities incentives</a> broadly allow for denser development within a half-mile of major transit stops, including rail and high-quality bus transit. Instead of facing density restrictions imposed by other city policies, developers of projects in these areas can apply to build up to 80 percent more units than would otherwise be allowed and as few as zero parking spaces. There are other incentives for things like building setbacks, height requirements, and open space. Incentives are only available for projects with 5 or more residential units that include a certain percentage of designated affordable units.</p>

<p>The program went into effect in September 2017, near the middle of the dataset that’s available from the city and used for this project. By looking at those half-mile zones around transit stops, we can see whether the TOC incentives had their intended effect.</p>

<p>For this analysis, I looked only at a subset of eligible TOC zones, comprising the half-mile radius around every Metro Rail station located in the city of Los Angeles. This doesn’t include the areas around major bus stops, including Orange or Silver Line stations, largely because geographic data describing those locations is much harder to compile.</p>

<p>I chose to compare the number of housing units approved in the calendar year 2016 versus calendar year 2018. Measure JJJ was approved in November 2016, but TOC incentives didn’t go into effect until late 2017. The incentives were available for all of 2018.</p>

<div class="chart-container">
<table>
<tr>
<th>Year</th>
<th>Number of housing units approved within ½ mi. of Metro Rail stations</th>
<th>Number of housing units approved citywide</th>
<th>Percentage of approved housing units located within ½ mi. of Metro Rail stations</th>
</tr>
<tr> <!-- 2014 -->
<td>2014</td>
<td>111</td>
<td>{{commaSeparated 2131}}</td>
<td>5.2%</td>
</tr>
<tr>
<td>2015</td>
<td>{{commaSeparated 3332}}</td>
<td>{{commaSeparated 7182}}</td>
<td>45.0%</td>
</tr>
<tr>
<td>2016</td>
<td>{{commaSeparated 4862}}</td>
<td>{{commaSeparated 13788}}</td>
<td>34.8%</td>
</tr>
<tr>
<td>2017</td>
<td colspan="3">TOC incentives introduced Sep. 22</td>
</tr>
<tr>
<td>2018</td>
<td>{{commaSeparated 3152}}</td>
<td>{{commaSeparated 13291}}</td>
<td>23.6%</td>
</tr>
</table>
</div>

<div class="chart-container" style="padding-top:2em;">
<canvas id="toc-portion-chart"></canvas>
</div>

<p>As you can see, the portion of housing units approved in a TOC zone near Metro Rail is significantly lower in 2018 than in 2016, at 24% instead of 35%. The number of units overall is also lower, down to 3,152 from 4,862. </p>

<p>The new TOC policy didn’t cause an immediate overwhelming increase in the number of units built near Metro Rail stations, but this doesn’t necessarily mean it’s not effective. Remember that the figures here only included the half-mile radii around Metro Rail stations in Los Angeles, not any of the areas near major bus lines that are also eligible for TOC incentives.</p>

<p>The TOC incentive program also only applies to buildings with five or more units, while these numbers include all projects in an area. I chose not to filter the projects by number of units because there are other criteria that determine which projects are eligible for TOC incentives, and not all projects eligible for the program accept the incentives.</p>

<p>Additionally, the large fluctuations in TOC construction from year-to-year signal that there may be other factors at play. The last major Metro Rail station opening occurred in 2016, so developers who planned to build near Metro’s rail lines may have done so earlier and left fewer lots available for such construction in 2018. On a similar note, the half-mile zones for stations that didn’t open until 2016 are included in the analysis for earlier years.</p>

<p>Overall, these numbers aren’t perfect, but they do illustrate that the city’s TOC incentive program didn’t immediately cause a dramatic change in the construction of housing near Metro Rail stations. To determine whether it was successful near other transit stops or will make a difference in the long-term would require more data.
</p>

<h3>Methodology:</h3>
<p>You can view the Python code used to obtain and filter the data <a href="https://github.com/james-tyner/la-unit-construction">on GitHub</a>.
</p>
</div>


<footer>
<h3>About the data</h3>
<small>Buildings permits data come from the <a href="//data.lacity.org">city of Los Angeles open data portal</a>. This dataset includes only housing approved under the jurisdiction of the city of Los Angeles, so other cities (like Santa Monica or Burbank) and unincorporated LA County land (like Willowbrook or Marina Del Rey) are not included.</small>
<br>
<small>Metro Rail station data comes from the <a href="https://developer.metro.net/introduction/gis-data/download-gis-data/">Los Angeles County Metropolitan Transportation Authority</a>.</small>
<br>
<small>Demographic data (including housing costs and median income) comes from the US Census Bureau 2017 American Communities Survey.</small>
<br>
<small>For weekly emails: Your email address will be stored on a secure server. Emails are sent via SendGrid, an industry-standard tool, over an encrypted connection.</small>
<br>
<small>&copy; 2019 James Tyner</small>
</footer>


</main>

<!-- Plugins -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>

<!-- Site scripts -->
<script src="../../js/scripts.js"></script>
<script>
Chart.defaults.global.defaultFontFamily = 'Roboto Condensed';
var tocPortionChart = document.getElementById("toc-portion-chart").getContext("2d");
var chart4 = new Chart(tocPortionChart, {
type:"line",
data:{
labels:["2014", "2015", "2016", "2017", "2018"],
datasets:[{
pointBackgroundColor:"#00adff",
borderColor:"#754aed",
data:[5.2, 45.0, 34.8, null, 23.6],
fill:false,
spanGaps:true,
pointRadius:6
}]
},
options:{
title:{
text:"Percentage of approved housing units located within ½ mi. of Metro Rail stations",
fontSize:14,
fontFamily:"Roboto",
fontWeight:"bold",
fontColor:"#1b2c42",
display:true
},
legend:{
display:false
}
}
})
</script>
</body>
</html>

0 comments on commit f7ba847

Please sign in to comment.
You can’t perform that action at this time.