"Rocks and sediments bind up almost 98 percent of all nitrogen. The remaining 2 percent is in motion, part of a global chemical cycle that includes humans, bacteria, plants, and the atmosphere.
“Plants need nitrogen to grow,” says U.S. Forest Service research ecologist Steve McNulty. “However, excess nitrogen can harm plants.”
"Nitrogen and sulfur can combine with oxygen to form nitrogen or sulfur oxides. These compounds become part of the atmosphere, where they react with water vapor and other elements. Eventually, the nitrogen and sulfur – now in the form of nitric and sulfuric acid – fall to the ground with the rain drops."
"About three-quarters of tree species common to eastern American forests—including white oaks, sugar maples, and American hollies—have shifted their population center west since 1980. More than half of the species studied also moved northward during the same period."
"Earlier this month, the social studies classrooms of Boston Public Schools underwent a slight but significant change in decor. Down came the Mercator Projection—a common choice of world maps for schools—which distorts the size of each land mass but keeps continental shapes intact. Up went a different map, the Peters, which stretches out the world in order to give each continent a proportionally accurate amount of room. On the Peters, Canada—so huge on the Mercator—shrinks to its proper size, while Africa, which the Mercator shows shrunk and jammed beneath a too-large Europe, stretches out."
"Natural Earth is a public domain map dataset available at 1:10m, 1:50m, and 1:110 million scales. Featuring tightly integrated vector and raster data, with Natural Earth you can make a variety of visually pleasing, well-crafted maps with cartography or GIS software."
The Global Positioning System (GPS) is a network of about 30 satellites orbiting the Earth at an altitude of 20,000 km. The system was originally developed by the US government for military navigation but now anyone with a GPS device, be it a SatNav, mobile phone or handheld GPS unit, can receive the radio signals that the satellites broadcast.
Wherever you are on the planet, at least four GPS satellites are ‘visible’ at any time. Each one transmits information about its position and the current time at regular intervals. These signals, travelling at the speed of light, are intercepted by your GPS receiver, which calculates how far away each satellite is based on how long it took for the messages to arrive.
I use this script for my various map making efforts when I use LiDAR data in making hillshades and contours. I have automated the calling of this script from QGIS by using PyQGIS plugin that I developed.
Here is a brief PHP script I use to download LiDAR data from NYGIS website. You simply supply it a list of quads on the command line like php getlidar.php u_3592573775_1m_DEM.img u_3600073175_1m_DEM.img then execute the below script. This script requires PHP and the dbase extension. If you use PHP7, you can download a version of dbase for PHP7 .
#!/usr/bin/php -q
array_shift($argv); // remove program name
$lidarDir = "/home/andy/Documents/GIS.Data/lidar";
$tomerge = "";
$merged = "";
$conDir = "/tmp";
foreach ($argv as $quad) {
$wgetCommand = "wget -c -P $lidarDir \"ftp://ftporthos.dhses.ny.gov/lidar/nysdop/dem/$quad\"";
#echo "$wgetCommand\n";
system($wgetCommand);
$tomerge .= "$lidarDir/$quad ";
$merged = "merge".substr($quad,1,-4);
}
$mergeLidarCommand = "gdalwarp -co \"COMPRESS=LZW\" $tomerge $conDir/$merged.tif -r average -overwrite";
#echo "$mergeLidarCommand\n";
system($mergeLidarCommand);
// produce hillshade
system("gdaldem hillshade {$conDir}/{$merged}.tif {$conDir}/{$merged}hillshade.tif -z 2.0 -s 1.0 -az 315.0 -alt 45.0 -compute_edges");
// produce deeper hillshade
system("gdaldem hillshade {$conDir}/{$merged}.tif {$conDir}/{$merged}hillshade.6x.tif -z 6.0 -s 1.0 -az 315.0 -alt 45.0 -compute_edges &");
$minor = 5;
$major = 25;
$minorMeters = $minor * 0.3048;
$majorMeters = $major * 0.3048;
// produce contours
if (file_exists("{$conDir}/{$merged}{$major}ft-contour.shp")) {
unlink("{$conDir}/{$merged}{$major}ft-contour.shp");
}
if (file_exists("{$conDir}/{$merged}{$minor}ft-contour.shp")) {
unlink("{$conDir}/{$merged}{$minor}ft-contour.shp");
}
system("gdal_contour -a elev -i {$majorMeters} {$conDir}/{$merged}.tif {$conDir}/{$merged}{$major}ft-contour.shp");
system("gdal_contour -a elev -i {$minorMeters} {$conDir}/{$merged}.tif {$conDir}/{$merged}{$minor}ft-contour.shp");
// convert contour elevation to feet from meters
foreach (array("{$conDir}/{$merged}{$minor}ft-contour.dbf", "{$conDir}/{$merged}{$major}ft-contour.dbf") as $file) {
$db = dbase_open("$file", 2);
if ($db) {
$record_numbers = dbase_numrecords($db);
for ($i = 1; $i <= $record_numbers; $i++) {
// gets the old row
$row = dbase_get_record($db, $i);
// Update the date field with feet instead of meters
$row[1] = ceil($row[1] * 3.280839);
// remove the 'deleted' entry
unset($row['deleted']);
// replace record and save
dbase_replace_record($db, $row, $i);
}
}
dbase_close($db);
}