<?xml version="1.0" encoding="UTF-8"?>
<rss  xmlns:atom="http://www.w3.org/2005/Atom" 
      xmlns:media="http://search.yahoo.com/mrss/" 
      xmlns:content="http://purl.org/rss/1.0/modules/content/" 
      xmlns:dc="http://purl.org/dc/elements/1.1/" 
      version="2.0">
<channel>
<title>Christopher Goodmans&#39;s blog</title>
<link>https://www.cgoodman.com/feed.html#category=local-govt</link>
<atom:link href="https://www.cgoodman.com/feed-local-govt.xml" rel="self" type="application/rss+xml"/>
<description>Christopher Goodman&#39;s blog</description>
<language>en</language>
<generator>quarto-1.10.18</generator>
<lastBuildDate>Thu, 27 Aug 2026 00:00:00 GMT</lastBuildDate>
<item>
  <title>Thinking About Professional Local Government Management Education, Part I</title>
  <link>https://www.cgoodman.com/blog/2026-08-27-thinking-lgm-pt-1/</link>
  <description><![CDATA[ 






<p>In July of 2025, I took over as (or became the first, depending on the accounting) MPA director at NIU. My role is to run the academic side of the house; my department chair runs the university side. As such, I spend a lot of time thinking about how our program (and MPA programs, generally) can best train current and future local government leaders. This post is some of those thoughts. As I begin to walk through this, I need to emphasize that none of this is an official declaration of the intentions of NIU–it’s simply my musings on what I see as needs and potentially how we can solve them.</p>
<section id="one-degree-many-audiences" class="level2">
<h2 class="anchored" data-anchor-id="one-degree-many-audiences">One degree, many audiences</h2>
<p>One attribute of the MPA, as a degree, is that it is one degree with many audiences.<sup>1</sup> In my own program, this includes many pre-career students, or those students right out of their undergraduate training, in more or less a cohort-model. They come in as a group in the fall, take two years to complete their studies (while also engaging in a 1/2 time internship, a unique attribute of the <a href="https://mpa.niu.edu">NIU MPA</a>), and graduate into bigger and better things.<sup>2</sup></p>
<p>The second audience is mid-career folks (we define that as 2+ years of experience, but this is typically 2-5 years in MPA programs), but these are really several audiences in somewhat different circumstances. The first are folks in the profession at a middle-ish manager level–program directors, senior management analysts, etc, but importantly, closer to the beginning of their career than the end–that don’t have an MPA. They’re often specialized in the sense that they’re embedded in an operational department (i.e., not in the central administrative office) doing a specific task. They know their operational field (and usually have an undergraduate degree in that area), but often come to us to gain more general management training. This audience has been the mid-career bread and butter for MPA programs since the beginning.</p>
<p>The second group of mid-career folks are much more senior, often department heads that could have advanced degrees in their specialty (engineering, accounting/finance, etc) but don’t have an MPA. Many of these folks see the MPA as a route to being the city/town/village manager, perhaps that job description even requires an MPA. These students are not devoid of management skills, clearly they have some because they’re doing the job. What they seek is a broader perspective than their relatively narrow, department view. They know they don’t know enough about the other functions of their government and are trying to get a better handle on all the things a city manager is responsible for.</p>
<p>A third group that the MPA typically doesn’t capture but I think is important to include here are current city managers. They might want an educational refresher, but already have an MPA (or other advanced degree) and have no practical need for an entire degree.</p>
<p>Just reading through these incredibly diverse audiences, it’s clear that one monolithic degree program will struggle to serve all the varied student needs. Most MPA programs, more or less reinforced by the accrediting body <a href="https://www.naspaa.org">NASPAA</a>, are designed to most effectively service the pre-career and very early mid-career student. That leaves the other mid-career student archetypes in a bit of a bind.</p>
</section>
<section id="mpa-program-design-interlude" class="level2">
<h2 class="anchored" data-anchor-id="mpa-program-design-interlude">MPA program design interlude</h2>
<p>To understand why the MPA doesn’t really work for all the potential audiences, it’s helpful to understand how the MPA is designed. NASPAA, the MPA accrediting body, gives some flexibility in program design but not much, so this largely applies to all MPA programs.</p>
<ol type="1">
<li>There is a core of classes, typically 4-6, that are required for all students. Using NASPAA’s language, these classes are designed to deliver the <em>universal competencies</em> or learning outcomes that all MPA students should have. The important aspect is that <u>all</u> students have to take these classes, so they are largely designed for students with the least prior knowledge (the definition of least prior knowledge varies by program).</li>
<li>Some number of specializations, collections of electives around a theme, that vary by the student’s program of study. Some smaller programs have a single specialization, while others might have several. These allow for customization.</li>
</ol>
<p>The core classes are largely the problematic ones for those students other than pre-career or early mid-career. They’re often pitched at too low of a level for senior managers, leading to a feeling that they’re taking classes that aren’t very relevant to them.</p>
</section>
<section id="where-does-this-leave-us" class="level2">
<h2 class="anchored" data-anchor-id="where-does-this-leave-us">Where does this leave us?</h2>
<p>We have several current or potential audiences who want or need local government management training. And we have a degree program that only effectively serves those audiences closest to the beginning of their careers. This requires modifying the existing degree or coming up with a new one. These are things I’ll discuss in part II.</p>


</section>


<div id="quarto-appendix" class="default"><section id="footnotes" class="footnotes footnotes-end-of-document"><h2 class="anchored quarto-appendix-heading">Footnotes</h2>

<ol>
<li id="fn1"><p>I’m ignoring executive-style MPA programs for the moment; however, I will come back to these.↩︎</p></li>
<li id="fn2"><p>As a small humble brag, our job placement rate is nearly 100%. The demand for professional local government workers is incredibly high.↩︎</p></li>
</ol>
</section></div> ]]></description>
  <category>local-govt</category>
  <category>pedagogy</category>
  <category>teaching</category>
  <guid>https://www.cgoodman.com/blog/2026-08-27-thinking-lgm-pt-1/</guid>
  <pubDate>Thu, 27 Aug 2026 00:00:00 GMT</pubDate>
  <media:content url="https://www.cgoodman.com/files/img/transparent-placeholder.png" medium="image" type="image/png" height="96" width="144"/>
</item>
<item>
  <title>A figure that has been stuck in my head</title>
  <link>https://www.cgoodman.com/blog/2026-06-08-a-figure-that-has/</link>
  <description><![CDATA[ 






<p>I have been generating this figure, more or less every month, for six years. It helps us understand “Is the local government sector growing similarly to the private sector?”.</p>
<div class="column-body-outset">
<p><img src="https://www.cgoodman.com/blog/2026-06-08-a-figure-that-has/index-locgov-ces-private-local.png" class="img-fluid" alt="Local government and private employment have converged."></p>
</div>
<p>Why should we care about that?</p>
<p>If we were to pull back the timeline by a decade, a clear upward trend line would appear. When we are faced with a shock (COVID-19 in this example), we’re often interested in how quickly, if ever, the series returns to the trend. We can interrogate that quite easily. The private sector (in orange) returns relatively quickly—in early 2023; however, the local government sector (in blue) lags significantly.</p>
<p>This, of course, begets more questions. Why did the local government sector lag? What are the consequences of this? Certainly, the answers differ on an individual organization level than on a sectoral level. And those answers are the topic of another post.</p>
<p>I love a figure that answers a question and makes you ask additional follow-ups.</p>



 ]]></description>
  <category>dataviz</category>
  <category>local-govt</category>
  <guid>https://www.cgoodman.com/blog/2026-06-08-a-figure-that-has/</guid>
  <pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate>
  <media:content url="https://www.cgoodman.com/blog/2026-06-08-a-figure-that-has/index-locgov-ces-private-local.png" medium="image" type="image/png" height="103" width="144"/>
</item>
<item>
  <title>Quoting Dube</title>
  <link>https://www.cgoodman.com/blog/2025-12-08-Quoting-Dube/</link>
  <description><![CDATA[ 






<p>Some new evidence from South Africa on the effect of local governemnt amagamations (consolidations) on scale effects (operating spending) in <em>Urban Studies</em>. While the mechanism might be different due to the context, the results are surprisingly similar to those the US and elsewhere.</p>
<blockquote class="blockquote">
<p>Municipal amalgamations have been implemented for, among others, linguistic, cultural, geographic, service equity, social transformation or political reasons. However, the idea that larger municipalities are in a better position to reap the benefits of scale effects has been the main motivation for amalgamations in several industrialised countries and, in more recent years, South Africa. Existing literature suggests that financial performance has not improved after municipal amalgamations in South Africa. However, this literature has relied almost exclusively on evidence from descriptive studies and similar approaches. Using the difference-in-differences approach with municipal panel data, this study sought to determine the financial impacts of the 2016 South African amalgamations. The results suggest that the amalgamations did not give rise to scale effects as they had no significant impact on operating expenditure per capita. Suggestive evidence, based on descriptive analyses, is presented of some of the main factors that might militate against post-merger cost savings in a developing country setting – the transition grant, whose scope is very limited, the harmonisation of salaries and service levels in the post-merger municipality, and poor financial governance.</p>
<p>– <a href="https://journals.sagepub.com/doi/abs/10.1177/00420980251393801">Dube (2025)</a></p>
</blockquote>



 ]]></description>
  <category>local-govt</category>
  <guid>https://www.cgoodman.com/blog/2025-12-08-Quoting-Dube/</guid>
  <pubDate>Mon, 08 Dec 2025 00:00:00 GMT</pubDate>
  <media:content url="https://www.cgoodman.com/blog/2025-12-08-Quoting-Dube/usja_63_5.largecover.png" medium="image" type="image/png" height="207" width="144"/>
</item>
<item>
  <title>Quoting Haixin-Tsik, Miyazaki, and Drew</title>
  <link>https://www.cgoodman.com/blog/2025-12-05-quoting-haixin-tsik-miyazaki/</link>
  <description><![CDATA[ 






<p>It’s ineresting to see that population decline does not necessarily mean financial distress for local governments (in New South Wales).</p>
<blockquote class="blockquote">
<p>This work represents another example of the importance of testing assumptions with scholarly theory and evidence. As we have seen, the effect of population decline on organisational sustainability is not what some have imagined. Of particular importance, was the specific structure of the NSW local government revenue base, as well as the response in expenditure to decline.</p>
<p>Our predictions based on an examination of context were also attested to by a review of individual financial ratio data over the time period, and ultimately the sophisticated regression work. Otherwise stated, all three ways of understanding all point in the same direction and readers can thus rest assured in our conclusion that there is no good reason to believe that population decline will ineluctably result in a decline to financial sustainability – certainly for the case of NSW Australia.</p>
<p>– <a href="https://journals.sagepub.com/doi/10.1177/0160323X251391799">Haixin Tsik, Miyazaki, and Drew (2025)</a></p>
</blockquote>



 ]]></description>
  <category>local-govt</category>
  <category>public-finance</category>
  <guid>https://www.cgoodman.com/blog/2025-12-05-quoting-haixin-tsik-miyazaki/</guid>
  <pubDate>Fri, 05 Dec 2025 00:00:00 GMT</pubDate>
  <media:content url="https://www.cgoodman.com/blog/2025-12-05-quoting-haixin-tsik-miyazaki/slgb_58_1.largecover.png" medium="image" type="image/png" height="209" width="144"/>
</item>
<item>
  <title>My Necessarily Flawed List of Best or Most Interesting Articles of 2023</title>
  <link>https://www.cgoodman.com/blog/2024-01-09-favorite-papers-2023/</link>
  <description><![CDATA[ 






<p>Below is my list of the six best or most interesting articles appearing in print last year. Some of these manuscripts are a bit long in the tooth, only just now appear in “official” print, while being online first for many years. Some of these are directly related to my research (special districts, preemption, municipal incorporation), while others are simply theoretically or empirically important to the field I contribute to. I hope you find them useful.</p>
<section id="city-state-ideological-incongruence-and-municipal-preemption" class="level3">
<h3 class="anchored" data-anchor-id="city-state-ideological-incongruence-and-municipal-preemption"><a href="https://doi.org/10.1111/ajps.12655">City-State Ideological Incongruence and Municipal Preemption</a></h3>
<p>Barber and Dynes, <em>American Journal of Political Science</em></p>
<blockquote class="blockquote">
<p>A growing concern among municipal officials across the United States is that their policymaking capacity is under attack by state legislatures who are increasingly likely to preempt those municipalities. However, determining the extent to which municipalities are preempted is challenging. We overcome this by surveying a large sample of municipal officials from across the United States. We find that officials from municipalities that are more ideologically distant from their state overall are more likely to report being preempted by their state government. Moreover, this pattern is driven by more liberal municipalities in both Republican and Democratic states reporting higher rates of preemption. Additionally, municipalities under unified state governments are more likely to report preemption, especially those under unified Republican control. These findings have important implications for the quality of representation in our federalist system and indicate that preemption is not just an issue between Republican states and liberal urban cities.</p>
</blockquote>
<p>Barber and Dynes is one of those “long in the tooth” papers, having been published online in 2021. It provides useful insight into a common claim about preemption (ideological distance between state and local officials). The only real downside is the reliance on self-reported preemption–local official’s recall may not be perfect. Still, I found the paper hugely useful in my own work on preemption.</p>
</section>
<section id="american-local-government-elections-database" class="level3">
<h3 class="anchored" data-anchor-id="american-local-government-elections-database"><a href="https://doi.org/10.1038/s41597-023-02792-x">American Local Government Elections Database</a></h3>
<p>de Benedictis-Kessner, Lee, Velez, and Warshaw, <em>Scientific Data</em></p>
<blockquote class="blockquote">
<p>The study of urban and local politics in the United States has long been hindered by a lack of centralized sources of election data. We introduce a new database of about 78,000 candidates in 57,000 electoral contests that encompasses races for seven distinct local political offices in most medium and large cities and counties in the U.S. over the last three decades. This is the most comprehensive publicly-available source of information on local elections across the country. We provide partisan and demographic information about candidates in these races as well as electoral outcomes. This new database will facilitate a myriad of new research on representation and elections in local governments.</p>
</blockquote>
<p>DATA! It’s hard not to get excited about the release of a huge new dataset on local elections. We have shocking little information on local elections, despite their importance to daily life, and this dataset is a huge step forward. I’m excited to see what comes of it.</p>
</section>
<section id="specialized-local-government-and-water-conservation-policy-in-the-united-states" class="level3">
<h3 class="anchored" data-anchor-id="specialized-local-government-and-water-conservation-policy-in-the-united-states"><a href="https://doi.org/10.1177/10780874221080122">Specialized Local Government and Water Conservation Policy in the United States</a></h3>
<p>Switzer and Deng, <em>Urban Affairs Review</em></p>
<blockquote class="blockquote">
<p>Special districts are an increasingly important part of the local government equation in the United States, representing over forty percent of local governments. The spread of these governments is controversial, however, as some argue that they will have a negative impact on service delivery, due to a perceived lack of political accountability. Others argue that their focus on single policy issues allow them to more efficiently respond to the citizens they serve. Despite the controversy, only a few studies have quantitatively investigated the differences in service delivery between special district and general purpose governments. Building on Mullin’s earlier work, in this research note we investigate the relationship between specialized local government and water utility rates. We find little direct difference between special districts and general-purpose governments, with some minimal support for a conditional relationship between special districts and scarcity.</p>
</blockquote>
<p>Of course, there will be a special districts paper on this list. This is a good one examining if there are difference between special district and general purpose governments in water conservation policy. Spoiler: there are not.</p>
</section>
<section id="decree-or-democracy-state-takeovers-and-local-government-financial-outcomes" class="level3">
<h3 class="anchored" data-anchor-id="decree-or-democracy-state-takeovers-and-local-government-financial-outcomes"><a href="https://doi.org/10.1111/puar.13609">Decree or democracy? State takeovers and local government financial outcomes</a></h3>
<p>Singla, Spreen, and Shumberger, <em>Public Administration Review</em></p>
<blockquote class="blockquote">
<p>Many states possess the authority to intervene in local fiscal emergencies, in some cases curtailing decision-making powers of local officials through the appointment of an emergency financial manager. Previous research has recognized that these managers can push through unpopular reforms that may improve financial health but come at the expense of local control and democratic accountability. We assess the financial outcomes after eight recent state takeovers relative to a matched counterfactual comprised of similarly distressed general purpose local governments. The staggered difference-in-differences analysis shows emergency managers improve budgetary solvency and increase fiscal reserves. These enhancements are achieved through significant reduction of general fund expenditures. Several long-term indicators show deterioration in financial health after state intervention reflecting a significant decline in long-term assets. Overall, municipalities subjected to a state takeover did not realize significant long-run improvements in financial health indicators relative to counterfactual governments.</p>
</blockquote>
<p>State takeovers of municipalities have long fascinated me (my brilliant and hugely accomplished former RA from Rutgers, Ashley Nickels has written extensively on it). While the costs to democracy are well documented, the potential fiscal payoffs, i.e.&nbsp;the reason for doing the takeover in the first place, are less explored. Akheil, Luke, and Jason find short-term imporvements that do not appear to last. So, state takeovers “work” but not in a way that leads to any lasting financial improvements. Taken with the costs to local democracy, it’s increasingly difficult to endorse these programs.</p>
</section>
<section id="local-public-finance-dynamics-and-hurricane-shocks" class="level3">
<h3 class="anchored" data-anchor-id="local-public-finance-dynamics-and-hurricane-shocks"><a href="https://doi.org/10.1016/j.jue.2022.103516">Local public finance dynamics and hurricane shocks</a></h3>
<p>Jerch, Kahn, and Lin, <em>Journal of Urban Economics</em></p>
<blockquote class="blockquote">
<p>Since 1980, over 2,000 local governments in US Atlantic states have been hit by a hurricane. We study local government fiscal dynamics in the aftermath of hurricanes. These shocks reduce tax revenues, public expenditures, and debt financing in the decade following a hurricane. Hurricanes create collateral fiscal damage for local governments by increasing the cost of debt at critical moments after a strike. Municipalities with a 1 standard deviation-above-average racial minority composition suffer expenditure losses more than 2 times larger and debt default risk 8 times larger than the average municipalities in the decade following a hurricane strike.</p>
</blockquote>
<p>As climate change increases the frequency and severity of hurricanes on the southern U.S. coast, understanding the fiscal impacts of these storms on the ability of local governments to fiscally sustain themselves becomes more important. Therefore, Jerch, Kahn, and Lin is a timely addition to the literature. Hurricanes have a fiscal cost, and that cost is greater in communities with larger minority populations. Perhaps (sadly) not a surprising finding; however, it points to which municipalities need greater fiscal support in the wake of a hurricane.</p>
</section>
<section id="suburbs-inc.-exploring-municipal-incorporation-as-a-mechanism-of-racial-and-economic-exclusion-in-suburban-communities" class="level3">
<h3 class="anchored" data-anchor-id="suburbs-inc.-exploring-municipal-incorporation-as-a-mechanism-of-racial-and-economic-exclusion-in-suburban-communities"><a href="https://doi.org/10.7758/RSF.2023.9.2.10">Suburbs, Inc.: Exploring Municipal Incorporation as a Mechanism of Racial and Economic Exclusion in Suburban Communities</a></h3>
<p>Wyndham-Douds, <em>RSF: The Russell Sage Foundation Journal of the Social Sciences</em></p>
<blockquote class="blockquote">
<p>This article provides suburban scholars with a starting point for considering how municipal incorporation contributes to suburban inequality. I conduct an exploratory empirical analysis of incorporation in 2010 and find that incorporated suburbs are less racially diverse, Whiter, and have smaller shares of Black, Latinx, and Native American residents than unincorporated suburbs, suggesting that incorporation and its related municipal powers enable greater racial exclusion than strategies available to unincorporated suburbs. However, incorporated suburbs vary, and racial exclusion is most apparent in suburbs incorporated during and after the postwar suburban boom. Further, recently incorporated suburbs are more economically exclusive than unincorporated suburbs. I end by calling for greater integration of incorporation into suburban inequality research.</p>
</blockquote>
<p>In my opinion, municipal incorporation is understudied. There are data reasons for this; however, it is an important topic. This piece examines how incorporation is used to exclude minorities from suburban communities. Again, perhaps an unsurprising finding, but one that is important to document. This particular paper spurred me to push forward <a href="https://github.com/cbgoodman/muni-incorporation">my own data collection on municipal incorporation</a>. I hope to get that paper finished in 2024.</p>
<p>And that’s it! Imperfect, incomplete, but the handful of paper I found interesting or useful published in 2023.</p>


</section>

 ]]></description>
  <category>local-govt</category>
  <category>urban</category>
  <category>climate</category>
  <guid>https://www.cgoodman.com/blog/2024-01-09-favorite-papers-2023/</guid>
  <pubDate>Tue, 09 Jan 2024 00:00:00 GMT</pubDate>
  <media:content url="https://www.cgoodman.com/files/img/transparent-placeholder.png" medium="image" type="image/png" height="96" width="144"/>
</item>
<item>
  <title>Overlapping local governments in DuPage County, IL</title>
  <link>https://www.cgoodman.com/blog/2023-05-26-tilted-sf/</link>
  <description><![CDATA[ 






<p>Local governments in the United States generally overlap other local governments. It’s a feature of U.S.-styled federalism that’s difficult to escape. It similarly presents problems for researchers in demonstrating the exact extent of such overlap. Commonly, one might make a map that demonstrates the number of overlapping local governments aggregated by some base geography like a city or a parcel (see right). These are ok; however, they don’t demonstrate how local government borders can be quite eccentric. The borders get lost in the sea of other overlapping governments. We need another method of visualization.</p>

<div class="no-row-height column-margin column-container"><div class="">
<p><img src="https://www.cgoodman.com/blog/2023-05-26-tilted-sf/spdist.jpeg" class="img-fluid"></p>
</div></div><p>One such method is to rely on 3D visualization methods vs 2D methods. Since local governments overlap, there is a ready made case for separating the layers vertically to demonstrate how each layer differs from the one below. Unfortunately, this is somewhat difficult because map layers are meant to operate in 2D space. Enter the tilting function.</p>
<section id="the-tilting-function" class="level2">
<h2 class="anchored" data-anchor-id="the-tilting-function">The tilting function</h2>
<p>Original function created by <a href="https://www.mzes.uni-mannheim.de/socialsciencedatalab/article/geospatial-data/">Stefan Jünger</a>.</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb1-1"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Function to tilt sf</span></span>
<span id="cb1-2">rotate_sf <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span>(data, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x_add =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y_add =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>) {</span>
<span id="cb1-3">  </span>
<span id="cb1-4">  shear_matrix <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span> (x) { </span>
<span id="cb1-5">    <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">matrix</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.2</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>), <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>) </span>
<span id="cb1-6">  }</span>
<span id="cb1-7">  </span>
<span id="cb1-8">  rotate_matrix <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span>(x) { </span>
<span id="cb1-9">    <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">matrix</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">cos</span>(x), <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">sin</span>(x), <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">sin</span>(x), <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">cos</span>(x)), <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>) </span>
<span id="cb1-10">  }</span>
<span id="cb1-11">  </span>
<span id="cb1-12">  data <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">%&gt;%</span> </span>
<span id="cb1-13">    dplyr<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">::</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">mutate</span>(</span>
<span id="cb1-14">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">geometry =</span> </span>
<span id="cb1-15">        .<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>geometry <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">shear_matrix</span>() <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rotate_matrix</span>(pi <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">20</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(x_add, y_add)</span>
<span id="cb1-16">    )</span>
<span id="cb1-17">}</span></code></pre></div></div>
<p>The function essentially tilts the map layer and rotates it off-axis. Then we can arrange each layer on top of one another. See <a href="https://www.mzes.uni-mannheim.de/socialsciencedatalab/article/geospatial-data/">Stefan’s</a> post for more technical details on what the function is doing mathematically. Importantly, the <code>x_add = 0, y_add = 0</code> options allow us to offset map layers in the x or y directions. I use this extensively in creating the map below.</p>
</section>
<section id="creating-the-map" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="creating-the-map">Creating the map</h2>
<p>The visualization of geospatial data has become almost trivial with <code>ggplot</code> and <code>sf</code> in R. We’ll need those packages to begin.</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb2-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">library</span>(tidyverse)</span>
<span id="cb2-2"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">library</span>(sf)</span>
<span id="cb2-3"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">library</span>(ggnewscale)</span></code></pre></div></div>
<section id="load-data" class="level3">
<h3 class="anchored" data-anchor-id="load-data">Load data</h3>
<p>The example here uses shapefiles from DuPage County, IL. Illinois has the most independent local governments of any state in the U.S., making this a good test case. Additionally, DuPage County publishes excellent geospatial data on local governments within its borders. They can all be found at <a href="https://gisdata-dupage.opendata.arcgis.com">DuPage County GIS</a>. I load a subset of such data as a demonstration; however, you can use nearly any <code>sf</code> compatible map layer.</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb3" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb3-1"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># import parcel database ----------------</span></span>
<span id="cb3-2">parcels <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">st_read</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"~/Dropbox/Data/Spatial Data/Dupage/ParcelsRealEstate/ParcelsRealEstate.shp"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">%&gt;%</span></span>
<span id="cb3-3">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">st_union</span>() <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">%&gt;%</span></span>
<span id="cb3-4">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">st_sf</span>()</span>
<span id="cb3-5"></span>
<span id="cb3-6"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># import townships ----------------</span></span>
<span id="cb3-7">towns <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">st_read</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"~/Dropbox/Data/Spatial Data/Dupage/Townships_(PLSS)/Townships.shp"</span>)</span>
<span id="cb3-8"></span>
<span id="cb3-9"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># import municipalities ----------------</span></span>
<span id="cb3-10">cities <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">st_read</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"~/Dropbox/Data/Spatial Data/Dupage/Municipalities/Municipalities.shp"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">%&gt;%</span></span>
<span id="cb3-11">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">filter</span>(CITY <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">!=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Uninc"</span>)</span>
<span id="cb3-12"></span>
<span id="cb3-13"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># import unit school districts ----------------</span></span>
<span id="cb3-14">unit_sd <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">st_read</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"~/Dropbox/Data/Spatial Data/Dupage/Unit_School_Districts/Unit_School_Districts.shp"</span>)</span>
<span id="cb3-15"></span>
<span id="cb3-16"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># import high school districts ----------------</span></span>
<span id="cb3-17">high_sd <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">st_read</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"~/Dropbox/Data/Spatial Data/Dupage/High_School_Districts/High_School_Districts.shp"</span>)</span>
<span id="cb3-18"></span>
<span id="cb3-19"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># import grade school districts ----------------</span></span>
<span id="cb3-20">grade_sd <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">st_read</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"~/Dropbox/Data/Spatial Data/Dupage/Grade_School_Districts/Grade_School_Districts.shp"</span>)</span>
<span id="cb3-21"></span>
<span id="cb3-22"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># import fire protection districts ----------------</span></span>
<span id="cb3-23">fpd <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">st_read</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"~/Dropbox/Data/Spatial Data/Dupage/Fire_Protection_Districts/Fire_Protection_Districts.shp"</span>)</span>
<span id="cb3-24"></span>
<span id="cb3-25"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># import fire protection districts ----------------</span></span>
<span id="cb3-26">lib <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">st_read</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"~/Dropbox/Data/Spatial Data/Dupage/Library_Districts/Library_Districts.shp"</span>)</span>
<span id="cb3-27"></span>
<span id="cb3-28"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># import park districts ----------------</span></span>
<span id="cb3-29">parks <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">=</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">st_read</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"~/Dropbox/Data/Spatial Data/Dupage/Park_Districts/Park_Districts.shp"</span>)</span></code></pre></div></div>
<p>Much of this is run of the mill; however, there are two important bits here. First, I collapse the parcel dataset down to one single polygon using <code>st_union()</code> and make it <code>sf</code>-compatable with <code>st_sf()</code>. This reduces the complexity of the layer and the computation load it takes to render it. You might want to use a terrain raster or some other base map. The parcel map includes the transportation network in the negative spaces, so it is a information-rich base layer. Second, I filter out the unincorporated area polygon from the cities layer. This is useful for identifying which areas are unincorporated; however, I don’t need that information, so it’s filtered out.</p>
</section>
<section id="render" class="level3 page-columns page-full">
<h3 class="anchored" data-anchor-id="render">Render</h3>
<div class="column-screen-inset">
<p><img src="https://www.cgoodman.com/blog/2023-05-26-tilted-sf/layers.png" class="preview-image img-fluid"></p>
</div>
<p>The process here is relatively straightforward. I render each layer, running each data source through the <code>rotate_sf</code> function, and use the <code>x_add = 0, y_add = 0</code> offset options to create a horizontally and vertically tiled map. The offset parameters rely on the units the map projection uses. This will change depending on how your data are projected.</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb4" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb4-1"><span class="do" style="color: #5E5E5E;
background-color: null;
font-style: italic;">### plot  ----------------</span></span>
<span id="cb4-2"></span>
<span id="cb4-3">x <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">=</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4800000</span></span>
<span id="cb4-4">color <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"gray40"</span></span>
<span id="cb4-5">column2offset <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">=</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">550000</span></span>
<span id="cb4-6">column3offset <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">=</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1100000</span></span>
<span id="cb4-7"></span>
<span id="cb4-8">p <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">ggplot</span>() <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb4-9">  <span class="do" style="color: #5E5E5E;
background-color: null;
font-style: italic;">### general purpose local government </span></span>
<span id="cb4-10">  <span class="do" style="color: #5E5E5E;
background-color: null;
font-style: italic;">### county base layer</span></span>
<span id="cb4-11">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">geom_sf</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">data =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rotate_sf</span>(parcels), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">NA</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">fill =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"gray60"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">show.legend =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">FALSE</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb4-12">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">annotate</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"text"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">label=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'DuPage County'</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x=</span>x, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1175000</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">hjust =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color=</span>color) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb4-13">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">annotate</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"text"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">label=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'General Purpose Governments'</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x=</span>(x<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">-125000</span>), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y=</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1550000</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">125000</span>), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">hjust =</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.5</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"black"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb4-14">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">annotate</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"text"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">label=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'School Districts'</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x=</span>(x<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span>column2offset<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">-125000</span>), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y=</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1550000</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">125000</span>), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">hjust =</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.5</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"black"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb4-15">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">annotate</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"text"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">label=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Special Districts'</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x=</span>(x<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span>column3offset<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">-125000</span>), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y=</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1550000</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">125000</span>), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">hjust =</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.5</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"black"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb4-16">  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># townships</span></span>
<span id="cb4-17">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">new_scale_fill</span>() <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> </span>
<span id="cb4-18">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">new_scale_color</span>() <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb4-19">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">geom_sf</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">data =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rotate_sf</span>(towns, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y_add =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">125000</span>),</span>
<span id="cb4-20">          <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">aes</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">fill =</span> TOWNSHIP_N), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color=</span><span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">NA</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">show.legend =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">FALSE</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb4-21">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">scale_fill_grey</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">aesthetics =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"fill"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb4-22">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">annotate</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"text"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">label=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Townships'</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x=</span>x, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1300000</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">hjust =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color=</span>color) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb4-23">  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># cities</span></span>
<span id="cb4-24">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">new_scale_fill</span>() <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> </span>
<span id="cb4-25">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">new_scale_color</span>() <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb4-26">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">geom_sf</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">data =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rotate_sf</span>(cities, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y_add =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">250000</span>),</span>
<span id="cb4-27">          <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">aes</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">fill =</span> CITY), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color=</span><span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">NA</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">show.legend =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">FALSE</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb4-28">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">scale_fill_grey</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">aesthetics =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"fill"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb4-29">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">annotate</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"text"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">label=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Cities'</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x=</span>x, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1425000</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">hjust =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color=</span>color) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb4-30">  </span>
<span id="cb4-31">  <span class="do" style="color: #5E5E5E;
background-color: null;
font-style: italic;">### school districts</span></span>
<span id="cb4-32">  <span class="do" style="color: #5E5E5E;
background-color: null;
font-style: italic;">### county base layer</span></span>
<span id="cb4-33">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">geom_sf</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">data =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rotate_sf</span>(parcels, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x_add =</span> column2offset), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">NA</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">fill =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"gray60"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">show.legend =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">FALSE</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb4-34">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">annotate</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"text"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">label=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'DuPage County'</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x=</span>(x<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span>column2offset), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1175000</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">hjust =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color=</span>color) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb4-35">  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># unit school districts</span></span>
<span id="cb4-36">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">new_scale_fill</span>() <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> </span>
<span id="cb4-37">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">new_scale_color</span>() <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb4-38">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">geom_sf</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">data =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rotate_sf</span>(unit_sd, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x_add =</span> column2offset, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y_add =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">125000</span>),</span>
<span id="cb4-39">          <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">aes</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">fill =</span> UNIT_SCHOO), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color=</span><span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">NA</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">show.legend =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">FALSE</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb4-40">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">scale_fill_grey</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">aesthetics =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"fill"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb4-41">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">annotate</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"text"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">label=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Unit School </span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">Districts'</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x=</span>(x<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span>column2offset), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1300000</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">hjust =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color=</span>color) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb4-42">  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># high school districts</span></span>
<span id="cb4-43">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">new_scale_fill</span>() <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> </span>
<span id="cb4-44">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">new_scale_color</span>() <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb4-45">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">geom_sf</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">data =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rotate_sf</span>(high_sd, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x_add =</span> column2offset, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y_add =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">250000</span>),</span>
<span id="cb4-46">          <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">aes</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">fill =</span> HIGH_SCHOO), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color=</span><span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">NA</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">show.legend =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">FALSE</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb4-47">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">scale_fill_grey</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">aesthetics =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"fill"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb4-48">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">annotate</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"text"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">label=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'High School </span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">Districts'</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x=</span>(x<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span>column2offset), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1425000</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">hjust =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color=</span>color) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb4-49">  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># grade school districts</span></span>
<span id="cb4-50">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">new_scale_fill</span>() <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> </span>
<span id="cb4-51">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">new_scale_color</span>() <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb4-52">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">geom_sf</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">data =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rotate_sf</span>(grade_sd, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x_add =</span> column2offset, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y_add =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">375000</span>),</span>
<span id="cb4-53">          <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">aes</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">fill =</span> GRADE_SCHO), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color=</span><span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">NA</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">show.legend =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">FALSE</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> </span>
<span id="cb4-54">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">scale_fill_grey</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">aesthetics =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"fill"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb4-55">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">annotate</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"text"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">label=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Grade School </span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">Districts'</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x=</span>(x<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span>column2offset), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1550000</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">hjust =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color=</span>color) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb4-56">  </span>
<span id="cb4-57">  <span class="do" style="color: #5E5E5E;
background-color: null;
font-style: italic;">### special districts</span></span>
<span id="cb4-58">  <span class="do" style="color: #5E5E5E;
background-color: null;
font-style: italic;">### county base layer</span></span>
<span id="cb4-59">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">geom_sf</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">data =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rotate_sf</span>(parcels, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x_add =</span> column3offset), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">NA</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">fill =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"gray60"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">show.legend =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">FALSE</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb4-60">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">annotate</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"text"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">label=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'DuPage County'</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x=</span>(x<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span>column3offset), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1175000</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">hjust =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color=</span>color) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb4-61">  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># fire protection districts</span></span>
<span id="cb4-62">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">new_scale_fill</span>() <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> </span>
<span id="cb4-63">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">new_scale_color</span>() <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb4-64">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">geom_sf</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">data =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rotate_sf</span>(fpd, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x_add =</span> column3offset, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y_add =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">125000</span>),</span>
<span id="cb4-65">          <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">aes</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">fill =</span> FIRE), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color=</span><span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">NA</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">show.legend =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">FALSE</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> </span>
<span id="cb4-66">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">scale_fill_grey</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">aesthetics =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"fill"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb4-67">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">annotate</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"text"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">label=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Fire Protection </span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">Districts'</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x=</span>(x<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span>column3offset), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1300000</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">hjust =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color=</span>color) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb4-68">  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># library districts</span></span>
<span id="cb4-69">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">new_scale_fill</span>() <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> </span>
<span id="cb4-70">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">new_scale_color</span>() <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb4-71">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">geom_sf</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">data =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rotate_sf</span>(lib, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x_add =</span> column3offset, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y_add =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">250000</span>),</span>
<span id="cb4-72">          <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">aes</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">fill =</span> LIBRARY), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color=</span><span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">NA</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">show.legend =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">FALSE</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> </span>
<span id="cb4-73">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">scale_fill_grey</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">aesthetics =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"fill"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb4-74">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">annotate</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"text"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">label=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Library Districts'</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x=</span>(x<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span>column3offset), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1425000</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">hjust =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color=</span>color) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb4-75">  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># park districts</span></span>
<span id="cb4-76">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">new_scale_fill</span>() <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> </span>
<span id="cb4-77">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">new_scale_color</span>() <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb4-78">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">geom_sf</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">data =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rotate_sf</span>(lib, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x_add =</span> column3offset, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y_add =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">375000</span>),</span>
<span id="cb4-79">          <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">aes</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">fill =</span> LIBRARY), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color=</span><span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">NA</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">show.legend =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">FALSE</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> </span>
<span id="cb4-80">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">scale_fill_grey</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">aesthetics =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"fill"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb4-81">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">annotate</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"text"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">label=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Park Districts'</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x=</span>(x<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span>column3offset), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1550000</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">hjust =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color=</span>color) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb4-82">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">theme_void</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">base_family =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Open Sans Condensed Light"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb4-83">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">scale_x_continuous</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">limits =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4450000</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6100000</span>))</span></code></pre></div></div>
<p>All that’s left is to export.</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb5" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb5-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">ggsave</span>(p, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">filename =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"./output/layers.png"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">width=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">11</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">height=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.5</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">units=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"in"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">dpi=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">300</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">device =</span> grDevices<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">::</span>png, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">bg =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#ffffff"</span>)</span></code></pre></div></div>
</section>
</section>
<section id="concluding-thoughts" class="level2">
<h2 class="anchored" data-anchor-id="concluding-thoughts">Concluding thoughts</h2>
<p>Local governments in the U.S. are arranged in a complex manner, and showing that complexity is difficult. I present one method of reducing the difficulty of visualization while keeping significant information about the complexity of local government boundaries. Both the number of layers and the relationship between the layers are important.</p>
<p>On a more personal note, creating a map like this has been a bucket list item for a long time. I even considered hiring a graphic designer to make such a map. I am beyond happy that this is easily achievable in R, and that’s largely thanks to <a href="https://www.mzes.uni-mannheim.de/socialsciencedatalab/article/geospatial-data/">Stefan</a>.</p>


</section>

 ]]></description>
  <category>dataviz</category>
  <category>maps</category>
  <category>local-govt</category>
  <category>r</category>
  <guid>https://www.cgoodman.com/blog/2023-05-26-tilted-sf/</guid>
  <pubDate>Fri, 26 May 2023 00:00:00 GMT</pubDate>
  <media:content url="https://www.cgoodman.com/blog/2023-05-26-tilted-sf/layers.png" medium="image" type="image/png" height="52" width="144"/>
</item>
<item>
  <title>Illinois Special Districts Per Capita, 2017</title>
  <link>https://www.cgoodman.com/blog/2023-01-25-il-spdist/</link>
  <description><![CDATA[ 






<p>&nbsp;</p>
<div class="page-columns page-full">
<div class="quarto-figure quarto-figure-center page-columns page-full">
<figure class="figure page-columns page-full">
<p class="page-columns page-full"><img src="https://www.cgoodman.com/blog/2023-01-25-il-spdist/il-cog-17-pcspdist.png" class="img-fluid figure-img column-page"></p>
<figcaption>Illinois independent special districts per 10,000 residents, 2017.</figcaption>
</figure>
</div>
</div>



 ]]></description>
  <category>dataviz</category>
  <category>maps</category>
  <category>local-govt</category>
  <category>special-districts</category>
  <guid>https://www.cgoodman.com/blog/2023-01-25-il-spdist/</guid>
  <pubDate>Wed, 25 Jan 2023 00:00:00 GMT</pubDate>
  <media:content url="https://www.cgoodman.com/blog/2023-01-25-il-spdist/il-cog-17-pcspdist.png" medium="image" type="image/png" height="180" width="144"/>
</item>
<item>
  <title>Florida is dissolving the Reedy Creek Improvement District, home of Disney World. What happens next is anyone’s guess.</title>
  <link>https://www.cgoodman.com/blog/2022-04-28-reedy-creek/</link>
  <description><![CDATA[ 






<p><a href="https://blogs.lse.ac.uk/usappblog/2022/04/27/florida-is-dissolving-the-reedy-creek-improvement-district-home-of-disney-world-what-happens-next-is-anyones-guess/"><strong>LSE US Centre Blog</strong></a></p>
<p><em>Following criticism from the Disney company over a controversial education bill, last week Florida’s Governor, Ron DeSantis signed legislation which would dissolve the Reedy Creek Improvement District, the location of the company’s Disney World Resort. <strong>Chris Goodman</strong> explains the history of the special district, how it has functioned, and the uncertainty around what may happen next.</em></p>
<p>On April 22, Florida Governor Ron DeSantis <a href="https://www.sun-sentinel.com/news/politics/os-ne-disney-reedy-creek-bill-signed-20220422-3ijuuhs5wra6vcbmy4qhpqp6gy-story.html">signed legislation</a>, dissolving the Reedy Creek Improvement District, effective June 1, 2023, apparently in reaction to the Disney corporation’s opposition to the state’s recently enacted Parental Rights in Education bill, which limits classroom instruction on gender identity and sexual orientation. The <a href="https://www.washingtonpost.com/travel/2022/04/22/florida-disney-reedy-creek-desantis/">politics of this action notwithstanding</a>, what exactly is going on and who is involved? What is the Reedy Creek Improvement District, and why does it matter that it’s being dissolved? Welcome to the shadowy world of special districts.</p>
<p>Let’s back up. In the United States, there are five main forms of local government. The first three are cities, counties, and in 27 states, town or townships are general purpose local governments. They provide many services, tax residents and levy fees, and issue debt to support infrastructure. They’re often the local governments that people identify with. The fourth are school districts. Finally, we have special districts. Typically, these local governments provide a single service to a fixed geographic area. They often have the power to tax (mostly property tax but sometimes other taxes too) or levy fees for services (like transit fares or water fees). Some special districts have the power to issue debt. The Reedy Creek Improvement District (RCID) in central Florida, and home to the Walt Disney World Resort, falls in this camp; however, in 1967 the state endowed the RCID with many more powers, powers generally associated with a city or county. These services are to the benefit of landholders, primarily the Disney Corporation and its subsidiaries, and are largely paid for by taxes and utility fees.</p>
<div class="quarto-figure quarto-figure-center page-columns page-full">
<figure class="figure page-columns page-full">
<p><img src="https://blogsmedia.lse.ac.uk/blogs.dir/58/files/2022/04/New-blog-image-test-3.png" class="img-fluid figure-img"></p>
<figcaption class="margin-caption">Credit: Asher Heimermann, CC BY-SA 4.0, via Wikimedia Commons</figcaption>
</figure>
</div>
<p>The RCID is responsible for services such as environmental planning, water control, roadway maintenance, emergency services, and water, sewer, and electrical utilities. If you think that these sound like many of the services a city provides, you would be correct. These services are supported by property taxes and utilities fees levied on the landowners inside the RCID. In effect, Disney taxes or charges itself to provide services it values.</p>
<p>The RCID is like another kind of special district in Florida, the Community Development District (CDD). CDDs exist primarily to facilitate the issuing of bonds to fund infrastructure development in new residential developments. They allow housing developers to put in roads, water pipes, sewer lines, and other things, pay for them with debt, and pay the debt off by charging an additional property tax to new homeowners. Rather than increase the purchase price of new housing, CDDs allow the cost of necessary infrastructure to be spread over time. CDDs differ from the RCID in a few important ways. CDDs are more limited in their ability to provide public services, and importantly, CDDs have a completely different governance structure. CDD’s governing board members are initially allocated by the amount of land an owner has in the district. As the primarily landowner, this is the developer. As homes are sold, board seats convert to popular election until the entire governing board comprises popularly elected members. The RCID is different in that landowners always control the board seats. As such, the Disney Corporation and its subsidiaries control the decisions made about service delivery and infrastructure within the district.</p>
<section id="what-next-for-the-reedy-creek-improvement-district" class="level4">
<h4 class="anchored" data-anchor-id="what-next-for-the-reedy-creek-improvement-district">What next for the Reedy Creek Improvement District?</h4>
<p>The RCID is dissolving in 2023. What now? The answer to this question is unclear. The legislation inserts a single paragraph into the Florida statutes and does little to explain how the dissolution will occur or what happens during the process. Undoubtedly, the law will be subject to litigation; however, the RCID, like all special districts in Florida, is subject to the <em>The Uniform Special Districts Accountability Act</em>, which <a href="http://www.leg.state.fl.us/statutes/index.cfm?App_mode=Display_Statute&amp;Search_String=&amp;URL=0100-0199/0189/Sections/0189.072.html">outlines</a> how independent special districts dissolve. This law specifies the debt and assets of a dissolving special district be transferred to a local general-purpose government, who assumes responsibility for paying off the debts and/or continuing to provide services. This likely means Orange (and possibly Osceola) County will have some responsibility for the transferred debt and assets.</p>
<p>Importantly, the tax levy that supports the RCID is also eliminated upon dissolution. Currently, the RCID taxes itself about double the average property rate of Orange County, FL. If Orange County assumes the debt, assets, and service delivery requirements of the RCID, it must do so with its own (lower) property tax levy. This could mean taxpayers county-wide will foot the bill in the form of future tax increases, or it might not.</p>
<p>Little about the process is known. Many of the actors in the process of dissolution have yet to be assigned their roles. The uncertainty of the process is the issue. If an implementation plan accompanied the dissolution, the responsible parties could react and plan for what happens on June 1, 2023. Right now, we’re left with many questions and few answers.</p>


</section>

 ]]></description>
  <category>local-govt</category>
  <category>special-districts</category>
  <guid>https://www.cgoodman.com/blog/2022-04-28-reedy-creek/</guid>
  <pubDate>Thu, 28 Apr 2022 00:00:00 GMT</pubDate>
  <media:content url="https://blogsmedia.lse.ac.uk/blogs.dir/58/files/2022/04/New-blog-image-test-3.png" medium="image" type="image/png"/>
</item>
<item>
  <title>Horizontal v. Vertical Fragmentation</title>
  <link>https://www.cgoodman.com/blog/2022-01-25-bivariate-fragmentation/</link>
  <description><![CDATA[ 






<p>&nbsp;</p>
<div class="page-columns page-full">
<div class="quarto-figure quarto-figure-center page-columns page-full">
<figure class="figure page-columns page-full">
<p class="page-columns page-full"><img src="https://www.cgoodman.com/blog/2022-01-25-bivariate-fragmentation/img/bivariate.png" class="img-fluid figure-img column-page"></p>
<figcaption>Bivariate map of county level municipalities per 10,000 residents v. special districts per 10,000 residents.</figcaption>
</figure>
</div>
</div>



 ]]></description>
  <category>dataviz</category>
  <category>maps</category>
  <category>local-govt</category>
  <guid>https://www.cgoodman.com/blog/2022-01-25-bivariate-fragmentation/</guid>
  <pubDate>Tue, 25 Jan 2022 00:00:00 GMT</pubDate>
  <media:content url="https://www.cgoodman.com/blog/2022-01-25-bivariate-fragmentation/img/bivariate.png" medium="image" type="image/png" height="101" width="144"/>
</item>
<item>
  <title>Municipal Incorporation in the US, 1789 - 2020</title>
  <link>https://www.cgoodman.com/blog/2021-12-07-muni-incorporation/</link>
  <description><![CDATA[ 






<div class="page-columns page-full">
<div class="quarto-figure quarto-figure-center page-columns page-full">
<figure class="figure page-columns page-full">
<p class="page-columns page-full"><img src="https://www.cgoodman.com/blog/2021-12-07-muni-incorporation/us_animated_compressed.gif" class="img-fluid figure-img column-page"></p>
<figcaption>Animation of municipal incorporations in the US by year</figcaption>
</figure>
</div>
</div>
<p>An easier to share version is below.</p>
<p></p><div id="youtube-frame" style="position: relative; padding-bottom: 56.25%; /* 16:9 */ height: 0;"><iframe width="100%" height="" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;" src="https://www.youtube.com/embed/J7WjPgGAnJc" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe></div><p></p>



 ]]></description>
  <category>dataviz</category>
  <category>maps</category>
  <category>cities</category>
  <category>local-govt</category>
  <guid>https://www.cgoodman.com/blog/2021-12-07-muni-incorporation/</guid>
  <pubDate>Tue, 07 Dec 2021 00:00:00 GMT</pubDate>
  <media:content url="https://www.cgoodman.com/blog/2021-12-07-muni-incorporation/us_animated_compressed.gif" medium="image" type="image/gif"/>
</item>
<item>
  <title>The structure of US local governments is often a poor predictor of local economic growth</title>
  <link>https://www.cgoodman.com/blog/2021-11-17-lse-frag-grow/</link>
  <description><![CDATA[ 






<p><strong><a href="https://blogs.lse.ac.uk/usappblog/2021/11/17/the-structure-of-us-local-governments-is-often-a-poor-predictor-of-local-economic-growth/">LSE US Centre Blog</a></strong></p>
<p>Metropolitan economic growth is a perennial topic of interest to policymakers and scholars. Why do some areas flourish while others decline? <a href="https://doi.org/10.1016/0304-3932(95)01206-2">Previous analyses</a> suggest the underlying strength and structure of the economy is important, as is <a href="https://doi.org/10.1016/j.regsciurbeco.2006.11.004">nicer weather</a>. Another important consideration is the structure of local governments in a metropolitan area. The structure and powers of local government as a source of metropolitan growth are a popular topic in more international contexts. However, they have received significantly less attention in the US. States grant considerably more powers to local governments, and local governments are typically more numerous in the US than other parts of the world, making this an interesting case to study.</p>
<section id="the-influence-of-local-governments-on-growth" class="level4">
<h4 class="anchored" data-anchor-id="the-influence-of-local-governments-on-growth">The influence of local governments on growth</h4>
<p>How might the structure of local governments influence economic growth? There are two competing schools of thought. The “polycentrists” explain that more local governments can be a means to economic growth. Many local governments in an area create a competitive environment, where each government competes to provide public services most efficiently at the lowest cost. For overlapping local governments, the geographic differences in local government size offer the opportunity to match efficient production of services more closely, i.e., take advantage of economies of scale, and allow component local governments to make decisions on the level of service provision appropriate in their area.</p>
<p>On the opposing side, the “government reformists” suggest that fewer local governments can be a means to economic growth. Efficiency forms the core of the argument; however, mechanisms are different. Rather than focusing on competition-induced efficiency, the government reformists focus on potential administrative efficiencies of having fewer local governments. Eliminating duplication of services, overcoming coordination issues, and directly realizing economics of geographic scale are all possible mechanisms to drive growth.</p>
<p>In general, academic research falls more often on the polycentrists side. <a href="https://doi.org/10.1016/j.jue.2004.08.002">More local governments can be associated with higher growth</a> or <a href="https://doi.org/10.1111/jors.2011.51.issue-1">not</a>, and city-county consolidations, a recommended government reform, <a href="https://doi.org/10.1007/s11127-019-00699-z">is generally not related to economic growth</a>.</p>
</section>
<section id="measuring-economic-growth-in-us-metropolitan-areas" class="level4 page-columns page-full">
<h4 class="anchored" data-anchor-id="measuring-economic-growth-in-us-metropolitan-areas">Measuring economic growth in US metropolitan areas</h4>
<p>In new research I analyze economic growth (population, jobs, per capita money income) from 1960 to 2000 in 314 metropolitan areas in the US. I borrow the methodology of <a href="https://www.sciencedirect.com/science/article/pii/0304393295012062?via%3Dihub">Ed Glaeser</a> of Harvard University and colleagues, where long-run economic growth is a function of the initial conditions of the metropolitan area (population, wealth, population growth, unemployment rate, manufacturing share, and percent of the population with a college degree). Those metropolitan areas with “better” initial conditions should grow more quickly in the following period.</p>
<p>My model includes information on five variables covering local government characteristics. The first three variables are: the share of the total metropolitan population residing in central cities, the average population of suburban (non-central) cities and the share of the metropolitan population that resides in unincorporated areas. These variables measure the influence of general-purpose local governments with higher values associated with lower political fragmentation. The last two measures, the number of school districts divided by the number of non-overlapping cities/townships, and the number of special districts divided by the number of non-overlapping cities/townships, relate to the influence of special-purpose local governments. Higher levels are associated with greater political fragmentation.</p>
<p>Figure 1 shows the influence for my model’s variables with population growth as the dependent variable (results for jobs growth and income growth look similar). Of the general government structure variables, only the share of the central city population has any significant impact. Those metro areas with larger central cities relative to their suburbs declined in population on average, and the size of this effect grows as the period of growth increases. Special district overlap is a positive predictor of metropolitan growth in the longest time range as well.</p>
<div class="page-columns page-full">
<div class="quarto-figure quarto-figure-center page-columns page-full">
<figure class="figure page-columns page-full">
<p class="page-columns page-full"><img src="https://www.cgoodman.com/files/img/popgrow-coeff.png" class="img-fluid figure-img column-body-outset-right"></p>
<figcaption><strong>Figure 1 – Population growth, 1960-2000</strong></figcaption>
</figure>
</div>
</div>
<p>Compared to the other variables, local government structure is a poor predictor of metropolitan growth. Initial economic conditions such as prior growth or the unemployment rate are far better at predicting long-run growth.</p>
<p>Looking more closely at regional differences</p>
<p>But what if the overall results are masking variations between regions? Metropolitan areas in different parts of the US grow differently, and local government structures may affect these metropolitan areas in different ways. Figure 2 examines this possibility by breaking down the sample by Census region.</p>
<div class="page-columns page-full">
<div class="quarto-figure quarto-figure-center page-columns page-full">
<figure class="figure page-columns page-full">
<p class="page-columns page-full"><img src="https://www.cgoodman.com/files/img/popgrow-coeff-region.png" class="img-fluid figure-img column-body-outset-right"></p>
<figcaption><strong>Figure 2 – Regional differences</strong></figcaption>
</figure>
</div>
</div>
<p>Figure 2 shows that some local government structure factors affect economic growth differently depending on the region the metropolitan area is in. Local government structure has little effect on growth in metropolitan areas in the Midwest; however, the structure of the suburbs and special-purpose governments is important for the northeast. Results are far more mixed for the southern and western regions.</p>
<p>This research stands at odds with much of the international literature on decentralization and economic growth that suggests increased decentralization can be a means to enhanced growth. The US is a highly decentralized country from a governance perspective. The benefits of devolution are likely already baked into the system, whereas decentralization in highly centralized countries is new and more likely to shock the system.</p>
</section>
<section id="what-does-all-this-mean" class="level4">
<h4 class="anchored" data-anchor-id="what-does-all-this-mean">What does all this mean?</h4>
<p>Policymakers in the US sometimes claim that the structure of local governments is helping or hindering economic growth in their areas. Some areas are highly fragmented, and it is easy to claim this is a significant impediment (or enhancement) to growth. My results suggest a more tepid response. The structure of local governments can be important, but it is often region-specific and easily overshadowed by the underlying economic characteristics of metropolitan areas.</p>
<p>If a policymaker wants to develop a strategy to enhance economic growth, there are better options than to propose a radical alteration to the existing local government structure. There is more bang for the buck in improving local educational opportunities or working to reduce unemployment.</p>
<p>This article is based on the paper, “<a href="http://dx.doi.org/10.1080/07352166.2020.1742578">Political Fragmentation &amp; Economic Growth in US Metropolitan Areas</a>” in the <em>Journal of Urban Affairs</em>.</p>


</section>

 ]]></description>
  <category>local-govt</category>
  <category>urban</category>
  <category>cities</category>
  <guid>https://www.cgoodman.com/blog/2021-11-17-lse-frag-grow/</guid>
  <pubDate>Wed, 17 Nov 2021 00:00:00 GMT</pubDate>
  <media:content url="https://blogsmedia.lse.ac.uk/blogs.dir/58/files/2021/11/New-blog-image-test-4.png" medium="image" type="image/png"/>
</item>
<item>
  <title>Special Districts: America’s Shadow Governments</title>
  <link>https://www.cgoodman.com/blog/2021-04-22-gfrc-blog/</link>
  <description><![CDATA[ 






<blockquote class="blockquote">
<h3 id="special-districts-americas-shadow-governments" class="anchored">Special Districts: America’s Shadow Governments</h3>
<p>When I teach about the property tax at Northern Illinois University, I play a game with my public administration graduate students. I ask the homeowners in the class to dig out their property tax bill and share it with the class. We go line by line looking at the millage rates of each levy and examine who is doing the levying. Some, like the county, the city/village or the school district(s) are easy to identify. But other line items are somewhat more obscure, like mosquito abatement districts, conservation districts, civic center authorities, joint water authorities and on and on.</p>
<p>This naturally leads to conversations about why these specific services are provided by a special district rather than a general government and whether this arrangement leads to higher taxes. We discuss whether, if there was a different vehicle for funding these services, property taxes might go down. In my state of Illinois, home to the largest number of independent local governments in the country, this is a particularly important question. But like many questions like this, there are no easy answers.</p>
</blockquote>
<p>You can find the rest on <a href="https://gfrc.uic.edu/special-districts-americas-shadow-governments/">GFRC’s blog</a>.</p>



 ]]></description>
  <category>local-govt</category>
  <category>special-districts</category>
  <guid>https://www.cgoodman.com/blog/2021-04-22-gfrc-blog/</guid>
  <pubDate>Thu, 22 Apr 2021 00:00:00 GMT</pubDate>
  <media:content url="https://www.cgoodman.com/files/img/transparent-placeholder.png" medium="image" type="image/png" height="96" width="144"/>
</item>
<item>
  <title>Per Capita Independent Special Districts, 2017</title>
  <link>https://www.cgoodman.com/blog/2020-06-16-2017-pcspdist/</link>
  <description><![CDATA[ 






<p>&nbsp;</p>
<div class="page-columns page-full">
<div class="quarto-figure quarto-figure-center page-columns page-full">
<figure class="figure page-columns page-full">
<p class="page-columns page-full"><img src="https://www.cgoodman.com/blog/2020-06-16-2017-pcspdist/totspdistdpc-cog-17.png" class="img-fluid figure-img column-page"></p>
<figcaption>Independent special districts per capita by county from the 2017 Census of Government.</figcaption>
</figure>
</div>
</div>



 ]]></description>
  <category>dataviz</category>
  <category>maps</category>
  <category>local-govt</category>
  <guid>https://www.cgoodman.com/blog/2020-06-16-2017-pcspdist/</guid>
  <pubDate>Tue, 16 Jun 2020 00:00:00 GMT</pubDate>
  <media:content url="https://www.cgoodman.com/blog/2020-06-16-2017-pcspdist/totspdistdpc-cog-17.png" medium="image" type="image/png" height="115" width="144"/>
</item>
<item>
  <title>Per Capita General-Purpose Local Governments, 2017</title>
  <link>https://www.cgoodman.com/blog/2020-05-16-2017-pcgengovs/</link>
  <description><![CDATA[ 






<p>&nbsp;</p>
<div class="page-columns page-full">
<div class="quarto-figure quarto-figure-center page-columns page-full">
<figure class="figure page-columns page-full">
<p class="page-columns page-full"><img src="https://www.cgoodman.com/blog/2020-05-16-2017-pcgengovs/totgenpurposepc-cog-17.png" class="img-fluid figure-img column-page"></p>
<figcaption>General purpose local governments per capita by county from the 2017 Census of Government.</figcaption>
</figure>
</div>
</div>



 ]]></description>
  <category>dataviz</category>
  <category>maps</category>
  <category>local-govt</category>
  <guid>https://www.cgoodman.com/blog/2020-05-16-2017-pcgengovs/</guid>
  <pubDate>Sat, 16 May 2020 00:00:00 GMT</pubDate>
  <media:content url="https://www.cgoodman.com/blog/2020-05-16-2017-pcgengovs/totgenpurposepc-cog-17.png" medium="image" type="image/png" height="115" width="144"/>
</item>
<item>
  <title>Per Capita Local Governments, 2017</title>
  <link>https://www.cgoodman.com/blog/2020-05-07-2017-pctotgovs/</link>
  <description><![CDATA[ 






<p>&nbsp;</p>
<div class="page-columns page-full">
<div class="quarto-figure quarto-figure-center page-columns page-full">
<figure class="figure page-columns page-full">
<p class="page-columns page-full"><img src="https://www.cgoodman.com/blog/2020-05-07-2017-pctotgovs/totgovpc-cog-17-decile.png" class="img-fluid figure-img column-page"></p>
<figcaption>Local governments per capita by county from the 2017 Census of Government.</figcaption>
</figure>
</div>
</div>



 ]]></description>
  <category>dataviz</category>
  <category>maps</category>
  <category>local-govt</category>
  <guid>https://www.cgoodman.com/blog/2020-05-07-2017-pctotgovs/</guid>
  <pubDate>Thu, 07 May 2020 00:00:00 GMT</pubDate>
  <media:content url="https://www.cgoodman.com/blog/2020-05-07-2017-pctotgovs/totgovpc-cog-17-decile.png" medium="image" type="image/png" height="115" width="144"/>
</item>
<item>
  <title>Total Local Governments, 2017</title>
  <link>https://www.cgoodman.com/blog/2020-01-31-2017-totgovs/</link>
  <description><![CDATA[ 






<div class="column-page">
<p>&nbsp; <img src="https://www.cgoodman.com/blog/2020-01-31-2017-totgovs/totgov-cog-17.png" class="img-fluid quarto-figure quarto-figure-center" alt="Absolute number of local governments by county from the 2017 Census of Government."></p>
</div>



 ]]></description>
  <category>dataviz</category>
  <category>maps</category>
  <category>local-govt</category>
  <guid>https://www.cgoodman.com/blog/2020-01-31-2017-totgovs/</guid>
  <pubDate>Fri, 31 Jan 2020 00:00:00 GMT</pubDate>
  <media:content url="https://www.cgoodman.com/blog/2020-01-31-2017-totgovs/totgov-cog-17.png" medium="image" type="image/png" height="115" width="144"/>
</item>
<item>
  <title>Bill Fischel on School Districts</title>
  <link>https://www.cgoodman.com/blog/2013-05-23-school-districts/</link>
  <description><![CDATA[ 






<div class="quarto-video ratio ratio-16x9"><iframe data-external="1" src="https://www.youtube.com/embed/PBogXNx-t-U" title="" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe></div>
<p><a href="https://sites.dartmouth.edu/wfischel/">Bill Fischel</a> talking about his not so new book <a href="https://press.uchicago.edu/ucp/books/book/chicago/M/bo6823468.html">Making the Grade: The Economic Evolution of American School Districts</a>. Of most interest, to me at least, is the process by which one room schools consolidated into the multi-school districts we have today.</p>



 ]]></description>
  <category>local-govt</category>
  <category>school-districts</category>
  <guid>https://www.cgoodman.com/blog/2013-05-23-school-districts/</guid>
  <pubDate>Thu, 23 May 2013 00:00:00 GMT</pubDate>
</item>
</channel>
</rss>
