with

My Love-Hate Relationship with Albany Pine Bush

I have a Love-Hate Relationship with the Albany Pine Bush. It is an …

  • urban unique
  • wildlife preserve

Out in the Pine Bush

The Albany Pine Bush’s strengths are are ..

  • It is conviently located near the city of Albany, you can take either take a bus and walk to get there, or drive a short distance from the city
  • It is a fascinating Pine Bush/sand-dune ecosystem, with fantastic views of the Heldebergs and Catskills and wildlife close to the city.

Overlook Dune 2

At the same time those strengths are it’s greatest weakness …

  • In many ways the preserve is over-regulated and over-governed by the overbearing Albany Pine Bush Commission
  • The Madison Avenue and Karner East Barriens are overused, dominated by joggers and those walking dogs
  • There are too many restrictions on hunting, camping, and even hiking and nature observation — such as a ban on traveling off of trails except in the taking of wildlife.

Untitled

The Adirondack Forest Preserve model might not work in Albany Pine Bush Preserve, but a hybrid model could work. The Commission should try to work more with the public’s desires and demands, and have friendly processes and policies that show that they are there to work with the public rather then restrict access.

Untitled

Urban preserves are a tricky balancing act. It means easy access to yahoos and those who don’t know basic respect. There are far greater human demands compared to relatively unknown state forests, far off the beaten track.

Pitch Pine Outline

A Script to Make Pretty Political Google Maps

A while back I wrote I script for converting and styling KML files from ERSI Shapefiles, like you might download or export form a program like Quantum GIS. It requires you have the web programming language PHP 5 installed, along with the ogr2ogr command.

‘ ?>


View Larger Map ‘ ?>

This program extensively uses the PHP/DOM model, to read and write the XML file. I am not an expert programmer — it’s a hobby, but I am very happy with the results. You might consider using the LATFOR data and Census TIGER/Line for this if your a New York State resident.


#!/usr/bin/php -q
<?php
// POLITICAL STYLING FOR KML
// Converts a Shapefile with Election Results in Percentage
// 
// Input:
//      File_Title = Title for KML Name Field (as Seen in Google Maps)
//      District_Name = Field with District Name In It
//      Percent_as_Decimal = Election Result with Percent. 
//      0.00 - 0.49 = Shade of Red
//      0.50 = White
//      0.50 - 1.00 = Blue
//      Shapefile_Name = Path to Shapefile
//
// Output:
//      Google Maps KML File, Nicely Styled

if (!isset($argv[4])) {
        echo "usage: php politicalKML.php [File_Title] [District_Name] [Percent_as_Decimal]  [Shapefile_Name]\n";
        exit;
}

// required fields
$fileTitle = $argv[1];
$nameField = $argv[2];
$percentField = $argv[3];

// filename
$filename = $argv[4];
$KMLfileName = substr($filename,0,-4).'.kml';

// convert shapefile to kml using ogr2ogr
system("ogr2ogr -f \"KML\" -sql \"SELECT * FROM ". substr($filename,0,-4)." ORDER BY $fileTitle ASC\" $KMLfileName $filename -dsco NameField=$nameField -dsco DescriptionField=$percentField");

// load our new kml file
$doc = new DOMDocument();
$doc->load($KMLfileName);

// first let's replace the name field with a nicer one
$oldnode = $doc->getElementsByTagName('name')->item(0);
$node = $doc->createElement('name', $fileTitle);
$doc->getElementsByTagName('Folder')->item(0)->replaceChild($node, $oldnode);

// delete schema field to save space
$oldnode = $doc->getElementsByTagName('Schema')->item(0);
$doc->getElementsByTagName('Folder')->item(0)->removeChild($oldnode);


// load each placemark, search for maximum — used for making color judgements
foreach ($doc->getElementsByTagName('SimpleData') as $data) {
        if( $data->getAttribute('name') == $percentField) {
                $max[] = abs(substr($data->nodeValue,0)-0.5);
        }
}

// maximum in the political race
sort($max); $max = array_pop($max);
        
// calcuate multiplier for each race
$multiple = 255/$max;

// load each placemark, then set styling and percentage description
foreach ($doc->getElementsByTagName('Placemark') as $placemark) {
        foreach ($placemark->getElementsByTagName('SimpleData') as $data) {
                if( $data->getAttribute('name') == $percentField) {
                        $value = $data->nodeValue;
                        $color = substr($value,0);
                }
        }
        
        // decide if we want to do this blue or red, and then calculate
        // the amount of color versus white
        
        // republican leaning
        if ($color <= 0.5) {
                $colorStr = sprintf('%02x', 255-floor(abs($color-0.5)*$multiple));
                $colorStr = "a0{$colorStr}{$colorStr}ff";
        }
        
        // democratic leaning
        if ($color > 0.5) {
                $colorStr = sprintf('%02x', 255-floor(abs($color-0.5)*$multiple));
                $colorStr = "a0ff{$colorStr}{$colorStr}";
        }
        
        if ($color == 0) {
                $colorStr = '00ffffff';
        }
        
        // stylize the node based on color
        $node = $doc->createElement('Style');

        $linestyle = $doc->createElement('LineStyle');
        $node->appendChild($linestyle);
        $linestyle->appendChild($doc->createElement('width', 0.1));
        $linestyle->appendChild($doc->createElement('color', 'ffffffff'));
        
        $polystyle = $doc->createElement('PolyStyle');
        $node->appendChild($polystyle);
        $polystyle->appendChild($doc->createElement('color', $colorStr));       

        $oldnode = $placemark->getElementsByTagName('Style')->item(0); 
        
        $placemark->replaceChild($node, $oldnode);
                        
        // delete extended data to save KML space
        $data = $placemark->getElementsByTagName('ExtendedData')->item(0);
        $placemark->removeChild($data);
        
        // update the description
        $oldnode = $placemark->getElementsByTagName('description')->item(0); 
        $node = $doc->createElement('description', 'Recieved '.($color*100).'% of the vote.');
        $placemark->replaceChild($node, $oldnode); 
}

// finally write to the file
$doc->save($KMLfileName);

// calculate size in MB
$filesize = filesize($KMLfileName)/1024/1024;
if ( $filesize < 10) {
        $zipCommand = "zip ".substr($KMLfileName,0,-4).".kmz $KMLfileName";
        system($zipCommand);
        
        $kmzfilesize = filesize(substr($KMLfileName,0,-4).".kmz")/1024/1024;
        echo "KMZ is " .sprintf('%01.2f', $kmzfilesize)." MB, while the KML file is ".sprintf('%01.2f',$filesize)." MB.\n"; 
}
else {
        echo "Woah Horsey! The produced file is greater then 10 MB, at a size of ".sprintf('%01.2f',$filesize)." MB uncompressed. You need to simply your polygons before proceeding, otherwise Google Maps won't be able to read it. \n";
}

>
Map: Ketchumville State Forest
Map: Bates State Forest

A Look Back at Sandy Gordon vs Debbie Bush

The Race Crunched.

ED DEM DEM % REP REP % CON CON % WF WF % ICE ICE % Write-In Over Vote Blank Blank Percent Total Votes Sandy Total Bush Total Sandy % Sandy Net Votes
Berne 1 88 37.13% 89 37.55% 34 14.35% 6 2.53% 20 8.44% 0 0 10 4% 248 94 143 39% -49
Berne 2 210 52.11% 113 28.04% 41 10.17% 12 2.98% 27 6.70% 0 1 4 1% 409 222 181 55% 41
Knox 3 97 40.59% 79 33.05% 36 15.06% 15 6.28% 12 5.02% 4 0 9 4% 253 112 127 46% -15
Rensselaerville 1 87 43.28% 50 24.88% 35 17.41% 13 6.47% 16 7.96% 0 0 2 1% 204 100 101 50% -1
Rensselaerville 2 87 37.50% 61 26.29% 53 22.84% 10 4.31% 21 9.05% 0 1 16 6% 250 97 135 42% -38
Rensselaerville 3 162 43.55% 106 28.49% 63 16.94% 22 5.91% 19 5.11% 0 0 13 3% 386 184 188 49% -4
Westerlo 1 130 37.57% 131 37.86% 63 18.21% 7 2.02% 15 4.34% 0 0 14 4% 361 137 209 39% -72
Westerlo 2 183 56.48% 84 25.93% 29 8.95% 8 2.47% 20 6.17% 0 0 26 7% 351 191 133 59% 58
Westerlo 3 105 34.31% 117 38.24% 53 17.32% 16 5.23% 15 4.90% 0 0 16 5% 323 121 185 39% -64
Total 1149 43.20% 830 31.20% 407 15.30% 109 4.10% 165 6.20% 4 2 110 4% 2785 1258 1402 47% -144

Maps Showing What Happened.

ED by ED percentage of votes for Sandy Gordon.

 Balm of Gilead

I often prefer to use Net Votes per Election District, as this more clearly shows were a person lost and won the race, because Turn out can very quite widely from Election District to Election District. Moreover, some Election Districts are more populus then others.

 Across the Lake To Balm of Gilead

Turn out was particularly high in districts that Sandy lost, particularly in Westerlo ED 3 (Dormansville), one of most conservative EDs in Albany County currently.

 Egypt

This map shows the Average Democratic Preformance of Statewide candidates by 2010 Voting Tabulation District, with the 2011 County Leg districts superimposed. Be aware that all statewide Democratic candidates preformed quite well across 2010 Albany County,but it also shows the weakness in Dormansville (Westerlo ED 3), and Cooksburg-Preston Hollow-Potters Hollow (Rensselearville ED 2). The entire district was and is marginal Democratic, and can easily swing into the Republican column.

 Bridge Over Stratton Pond Outflow

.

While Sandy Gordon got a higher percentage of votes on Democratic line then Debra Bush on the Republican line, the heavy Conservative-block vote in Renselearville EDs and South Westerlo (ED 1) provided a margin of victory for Debra Bush.

Springtime

Sandy Gordon lost 2/3rds of Knox in the redistricting. He preformed worst in the new portion of the district — specifically Westerlo — and failed to hold onto Renselearville.

While he faced a Tea-Party Movement in Renselearville that organized against him, if he had spent more time going door-to-door in this portion of district, along with introducing himself to Westerlo voters, he may have been able to hold on to his seat.

Regardless, it was tough year for Democratic Incumbents, especially those with a long record and many difficult votes to face, such as over-riding the tax-cap, which will hurt rural residents and those of the hilltowns who own a lot of land hardest.

Map: Shindagin Hollow State Forest Ortho
Map: Severence Hill Trail

So Why Does the Albany Pine Bush Commission Choose Not Recycle?

The Albany Pine Bush Preserve as seen from the Frontage Road on Washington Avenue …

Rapp Road Landfill

And view from the Overlook Dune…

Full

And the Albany Pine Bush Preserve from the Alfred E Smith Building Observation Deck …

Other

Walking in the preserve, I noticed the Albany Pine Bush Commission’s dumper, very full, and very full of recycables.

Free Primitive and Roadside Campsites in the Adirondacks

Exploring the dumpster, I found it full of junk mail, office paper, and plenty of other recycables …

2020 NY Population by (MTA) Region

The more you dug around there, the more aluminum cans and office paper you found in the dumpster.

Recycables in Albany Pine Bush Dumper

And even more recycable trash …

More Bottles and Cans in the Dumpster

… so if the Albany Pine Bush Commission is such a green organization, then why don’t they recycle paper, tin cans, magazines, junkmail, and so many other recycables ?

Plowing Day's Trash

..here’s Some Tip “Green” Sheets for the Albany Pine Bush Commission, brought to you by the New York State Power Authority Recycling Exhibit.

Recycle Plastic

Recycle Cans

Recycle Glass

We Recycle

Arteries as Art II

If you where to put a pencil to a piece of paper, and started drawing random interconnected lines and loops, what would get?

 Corning Artery Art

What about if you created a giant spider web and started to connecting them together?

 Inner Loop Connection Rochester

Or maybe took a sheet of paper, drew, a grid, erased some, drew some thicker lines?

 Willis-Wilcox Lake Trail

What about a curley line that bypasses that grid?

Artery Art 5

Or as time you got cute, and stopped drawing a grid, and started adding twists and turns to your lines?

 Artery Art, Ithaca Edition

As you get further and further away, and your lines are getting crazier, are you starting to suffer from cancer on the brain?

Albany Art

I don’t know. Maybe I shouldn’t know. Or maybe I’m not allowed to know.