<div dir="ltr"><div><div><div>I have improved the population balancing and the html formatting.<br><br></div>The new link is at<br><br><a href="http://raphfrk.com/district/2010/html/index.html">http://raphfrk.com/district/2010/html/index.html</a><br><br></div>PS<br></div>The original mail bounced since my EM membership expired.<br><div><div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Nov 27, 2016 at 2:48 AM, Raph Frank <span dir="ltr"><<a href="mailto:raphfrk@gmail.com" target="_blank">raphfrk@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div>I haven't posted here in a while.<br><br>I re-implemented my code in Java to process the 2010 data.  The new code can process the shapefiles, so it has information about the block boundaries and connectivity.<br><br></div><div>The software generates tiles that can be viewed online using the Leaflet interactive map library.<br><br></div><div>I tried to make it flexible.  So far it supports "official districts" and "splitline".<br></div><div><br></div><div>The latest (splitline) maps can be viewed at this link.<br></div><div><br><a href="http://raphfrk.com/splitline_2010/html/Alabama.html" target="_blank">http://raphfrk.com/splitline_<wbr>2010/html/Alabama.html</a><br><br></div><div>(I am not sure how much bandwidth this uses, but hopefully, it doesn't kill my webhost.)<br></div><div><br></div>Details:<br><br></div><div>2010 Census block level data is used.<br><br></div><div>The census defines an internal point for each block.<br><br></div><div>The population of the block is considered concentrated at that point.<br><br></div><div>The state boundary is the boundary of the combination of all the blocks.<br><br></div><div>When a split is part of the boundary, I use the line.  It doesn't recompute the block based boundary.<br><br></div><div>(Using the block boundaries to determine longest split could be abused anyway)<br></div><div><br></div><div>Gnonomic projection is used because the lines are actually great circles.<br></div><div><br></div><div></div><div>The shortest splitline algorithm is run using the block internal points.<br><br></div><div>Once the splitline algorithm completes, I run a post processing step using the connectivity data.<br><br></div><div>This moves isolates blocks into the district that envelops them so that the districts are contiguous.<br><br></div><div>Then it moves blocks that are on the boundary to another district to balance population.<br><br></div><div>The post processor moves at most 0.25% of the population of a state around.  In most cases, it is around 0.1%<br><br></div><div>In many cases the post processor gets the population to a range of 1 or 2.  Some maps are harder to balance.<br></div></div>
</blockquote></div><br></div></div></div></div></div></div>