syncID: 5be9f80592394af3bc09cf8e469fef6e title: "Using neonUtilities in Python" description: "Use the neonUtilities R package in Python, via the rpy2 library." dateCreated: 2018-5-10 authors: Claire K. Lunch contributors: estimatedTime: 20 minutes packagesLibraries: rpy2 topics: data-management,rep-sci languagesTool: python dataProduct: code1: /Python/neonUtilities/neonUtilitiesPython.py tutorialSeries:

urlTitle: neon-utilities-python

The instructions below will guide you through using the neonUtilities R package in Python, via the rpy2 package. rpy2 creates an R environment you can interact with from Python.

The assumption in this tutorial is that you want to work with NEON data in Python, but you want to use the handy download and merge functions provided by the neonUtilities R package to access and format the data for analysis. If you want to do your analyses in R, use one of the R-based tutorials below.

For more information about the neonUtilities package, and instructions for running it in R directly, see the Download and Explore tutorial and/or the neonUtilities tutorial.

Install and set up

Before starting, you will need:

  1. Python 3 installed. It is probably possible to use this workflow in Python 2, but these instructions were developed and tested using 3.7.4.
  2. R installed. You don't need to have ever used it directly. We tested using R 3.6.1, but most other recent versions should also work.
  3. rpy2 installed. Run the line below from the command line, it won't run within Jupyter. See Python documentation for more information on how to install packages. rpy2 often has install problems on Windows, see "Windows Users" section below if you are running Windows.
  4. You may need to install pip before installing rpy2, if you don't have it installed already.

From the command line, run:


In [ ]:
pip install rpy2

Windows users

The rpy2 package was built for Mac, and doesn't always work smoothly on Windows. If you have trouble with the install, try these steps.

  1. Add C:\Program Files\R\R-3.3.1\bin\x64 to the Windows Environment Variable “Path”
  2. Install rpy2 manually from https://www.lfd.uci.edu/~gohlke/pythonlibs/#rpy2
    1. Pick the correct version. At the download page the portion of the files with cp## relate to the Python version. e.g., rpy2 2.9.2 cp36 cp36m win_amd64.whl is the correct download when 2.9.2 is the latest version of rpy2 and you are running Python 36 and 64 bit Windows (amd64).
    2. Save the whl file, navigate to it in windows then run pip directly on the file as follows “pip install rpy2 2.9.2 cp36 cp36m win_amd64.whl”
  3. Add an R_HOME Windows environment variable with the path C:\Program Files\R\R-3.4.3 (or whichever version you are running)
  4. Add an R_USER Windows environment variable with the path C:\Users\yourUserName\AppData\Local\Continuum\Anaconda3\Lib\site-packages\rpy2

Load packages

Now import rpy2 into your session.


In [1]:
import rpy2
import rpy2.robjects as robjects
from rpy2.robjects.packages import importr

Load the base R functionality, using the rpy2 function importr().


In [2]:
base = importr('base')
utils = importr('utils')
stats = importr('stats')

The basic syntax for running R code via rpy2 is package.function(inputs), where package is the R package in use, function is the name of the function within the R package, and inputs are the inputs to the function. In other words, it's very similar to running code in R as package::function(inputs). For example:


In [3]:
stats.rnorm(6, 0, 1)


Out[3]:
FloatVector with 6 elements.
-0.526960 0.381438 0.192045 0.004371 -1.876321 -0.352350

Suppress R warnings. This step can be skipped, but will result in messages getting passed through from R that Python will interpret as warnings.


In [4]:
from rpy2.rinterface_lib.callbacks import logger as rpy2_logger
import logging
rpy2_logger.setLevel(logging.ERROR)

Install the neonUtilities R package. Here I've specified the RStudio CRAN mirror as the source, but you can use a different one if you prefer.

You only need to do this step once to use the package, but we update the neonUtilities package every few months, so reinstalling periodically is recommended.

This installation step carries out the same steps in the same places on your hard drive that it would if run in R directly, so if you use R regularly and have already installed neonUtilities on your machine, you can skip this step. And be aware, this also means if you install other packages, or new versions of packages, via rpy2, they'll be updated the next time you use R, too.

The semicolon at the end of the line (here, and in some other function calls below) can be omitted. It suppresses a note indicating the output of the function is null. The output is null because these functions download or modify files on your local drive, but none of the data are read into the Python or R environments.


In [ ]:
utils.install_packages('neonUtilities', repos='https://cran.rstudio.com/');

Now load the neonUtilities package. This does need to be run every time you use the code; if you're familiar with R, importr() is roughly equivalent to the library() function in R.


In [5]:
neonUtilities = importr('neonUtilities')

Join data files: stackByTable()

The function stackByTable() in neonUtilities merges the monthly, site-level files the NEON Data Portal provides. Start by downloading the dataset you're interested in from the Portal. Here, we'll assume you've downloaded IR Biological Temperature. It will download as a single zip file named NEON_temp-bio.zip. Note the file path it's saved to and proceed.

Run the stackByTable() function to stack the data. It requires only one input, the path to the zip file you downloaded from the NEON Data Portal.

For additional, optional inputs to stackByTable(), see the R tutorial for neonUtilities.


In [6]:
neonUtilities.stackByTable(filepath='~/Downloads/NEON_temp-bio.zip');


Unpacking zip files using 1 cores.
Stacking operation across a single core.
Stacking table IRBT_1_minute
Stacking table IRBT_30_minute
Merged the most recent publication of sensor position files for each site and saved to /stackedFiles
Copied the most recent publication of variable definition file to /stackedFiles
Finished: Stacked 2 data tables and 2 metadata tables!
Stacking took 31.57414 secs
All unzipped monthly data folders have been removed.

Check the folder containing the original zip file from the Data Portal; you should now have a subfolder containing the unzipped and stacked files called stackedFiles.

Download files to be stacked: zipsByProduct()

The function zipsByProduct() uses the NEON API to programmatically download data files for a given product. The files downloaded by zipsByProduct() can then be fed into stackByTable().

Run the downloader with these inputs: a DPID, a set of 4-letter site IDs (or "all" for all sites), a download package (either basic or expanded), the filepath to download the data to, and an indicator to check the size of your download before proceeding or not (TRUE/FALSE).

The DPID is the data product identifier, and can be found in the data product box on the NEON Explore Data page. Here we'll download Breeding landbird point counts, DP1.10003.001.

There are two differences relative to running zipsByProduct() in R directly:

  1. check.size becomes check_size, because dots have programmatic meaning in Python
  2. TRUE (or T) becomes 'TRUE' because the values TRUE and FALSE don't have special meaning in Python the way they do in R, so it interprets them as variables if they're unquoted.

check_size='TRUE' does not work correctly in the Python environment. It estimates the size of the download and asks you to confirm before proceeding, and this interactive display doesn't work correctly outside R. Set check_size='FALSE' to avoid this problem, but be thoughtful about the size of your query since it will proceed to download without checking.


In [7]:
neonUtilities.zipsByProduct(dpID='DP1.10003.001', 
                            site=base.c('HARV','BART'), 
                            savepath='~/Downloads',
                            package='basic', 
                            check_size='FALSE');


Downloading files totaling approximately 0.564841 MB
Downloading 11 files
  |======================================================================| 100%
11 files downloaded to ~/Downloads/filesToStack10003

The message output by zipsByProduct() indicates the file path where the files have been downloaded.

Now take that file path and pass it to stackByTable().


In [8]:
neonUtilities.stackByTable(filepath='~/Downloads/filesToStack10003');


Unpacking zip files using 1 cores.
Stacking operation across a single core.
Stacking table brd_countdata
Stacking table brd_perpoint
Copied the most recent publication of validation file to /stackedFiles
Copied the most recent publication of variable definition file to /stackedFiles
Finished: Stacked 2 data tables and 2 metadata tables!
Stacking took 0.269058 secs
All unzipped monthly data folders have been removed.

Read downloaded and stacked files into Python

We've now downloaded biological temperature and bird data, and merged the site by month files. Now let's read those data into Python so you can proceed with analyses.

First let's take a look at what's in the output folders.


In [11]:
import os
os.listdir('Downloads/filesToStack10003/stackedFiles/')


Out[11]:
['brd_countdata.csv',
 'brd_perpoint.csv',
 'readme_10003.txt',
 'variables_10003.csv',
 'validation_10003.csv']

In [12]:
os.listdir('Downloads/NEON_temp-bio/stackedFiles/')


Out[12]:
['IRBT_1_minute.csv',
 'sensor_positions_00005.csv',
 'IRBT_30_minute.csv',
 'variables_00005.csv',
 'readme_00005.txt']

Each data product folder contains a set of data files and metadata files. Here, we'll read in the data files and take a look at the contents; for more details about the contents of NEON data files and how to interpret them, see the Download and Explore tutorial.

There are a variety of modules and methods for reading tabular data into Python; here we'll use the pandas module, but feel free to use your own preferred method.

First, let's read in the two data tables in the bird data: brd_countdata and brd_perpoint.


In [13]:
import pandas
brd_perpoint = pandas.read_csv('Downloads/filesToStack10003/stackedFiles/brd_perpoint.csv')
brd_countdata = pandas.read_csv('Downloads/filesToStack10003/stackedFiles/brd_countdata.csv')

And take a look at the contents of each file. For descriptions and unit of each column, see the variables_10003 file.


In [14]:
brd_perpoint


Out[14]:
uid namedLocation domainID siteID plotID plotType pointID nlcdClass decimalLatitude decimalLongitude ... startRH endRH observedHabitat observedAirTemp kmPerHourObservedWindSpeed laboratoryName samplingProtocolVersion remarks measuredBy publicationDate
0 dcc40f7c-e1db-4355-8fc9-534541e81a38 BART_025.birdGrid.brd D01 BART BART_025 distributed C1 evergreenForest 44.060146 -71.315479 ... 72 56.0 evergreen forest 18.0 1.0 Bird Conservancy of the Rockies NEON.DOC.014041vG NaN JRUEB 20191107T154457Z
1 6a33d032-49ac-4bb5-8d51-887de8a84444 BART_025.birdGrid.brd D01 BART BART_025 distributed B1 evergreenForest 44.060146 -71.315479 ... 72 56.0 deciduous forest 19.0 3.0 Bird Conservancy of the Rockies NEON.DOC.014041vG NaN JRUEB 20191107T154457Z
2 7336c159-6101-4eda-98e4-5d5cf90eabae BART_025.birdGrid.brd D01 BART BART_025 distributed A1 evergreenForest 44.060146 -71.315479 ... 72 56.0 mixed deciduous/evergreen forest 17.0 0.0 Bird Conservancy of the Rockies NEON.DOC.014041vG NaN JRUEB 20191107T154457Z
3 66c44275-3ea7-435f-9c3f-119c840ef331 BART_025.birdGrid.brd D01 BART BART_025 distributed A2 evergreenForest 44.060146 -71.315479 ... 72 56.0 deciduous forest 19.0 0.0 Bird Conservancy of the Rockies NEON.DOC.014041vG NaN JRUEB 20191107T154457Z
4 886e0b82-7e78-4432-860e-ffd209a81466 BART_025.birdGrid.brd D01 BART BART_025 distributed B2 evergreenForest 44.060146 -71.315479 ... 72 56.0 deciduous forest 16.0 0.0 Bird Conservancy of the Rockies NEON.DOC.014041vG NaN JRUEB 20191107T154457Z
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
892 e5129d53-8eea-45db-8c06-e553f054422f HARV_016.birdGrid.brd D01 HARV HARV_016 distributed C3 woodyWetlands 42.458224 -72.231982 ... 70 67.0 mixed deciduous/evergreen forest 15.0 0.0 Bird Conservancy of the Rockies NEON.DOC.014041vJ NaN WFREE 20191205T150111Z
893 d5e55ae2-f798-423b-abaf-5dae15074050 HARV_016.birdGrid.brd D01 HARV HARV_016 distributed B3 woodyWetlands 42.458224 -72.231982 ... 70 67.0 deciduous forest 16.0 0.0 Bird Conservancy of the Rockies NEON.DOC.014041vJ NaN WFREE 20191205T150111Z
894 4c0efec0-0bc2-447e-a264-57efe00a5dca HARV_016.birdGrid.brd D01 HARV HARV_016 distributed B2 woodyWetlands 42.458224 -72.231982 ... 70 67.0 wetland 17.0 0.0 Bird Conservancy of the Rockies NEON.DOC.014041vJ NaN WFREE 20191205T150111Z
895 ce77d845-fcb8-4dfd-96ac-b05a491e83a1 HARV_016.birdGrid.brd D01 HARV HARV_016 distributed A2 woodyWetlands 42.458224 -72.231982 ... 70 67.0 deciduous forest 19.0 0.0 Bird Conservancy of the Rockies NEON.DOC.014041vJ NaN WFREE 20191205T150111Z
896 4afd8d46-a6b5-408a-9a4a-6ed3ec12c035 HARV_016.birdGrid.brd D01 HARV HARV_016 distributed A3 woodyWetlands 42.458224 -72.231982 ... 70 67.0 deciduous forest 19.0 0.0 Bird Conservancy of the Rockies NEON.DOC.014041vJ NaN WFREE 20191205T150111Z

897 rows × 28 columns


In [15]:
brd_countdata


Out[15]:
uid namedLocation domainID siteID plotID plotType pointID startDate eventID pointCountMinute ... taxonRank vernacularName observerDistance detectionMethod visualConfirmation sexOrAge clusterSize clusterCode identifiedBy publicationDate
0 ad84f42b-f85c-4bb7-8da8-c01ded456940 BART_025.birdGrid.brd D01 BART BART_025 distributed C1 2015-06-14T09Z BART_025.C1.2015-06-14T05:23-04:00[US/Eastern] 2 ... species Black-throated Green Warbler 50.0 singing No Male 1.0 NaN JRUEB 20191107T154457Z
1 211540a7-1661-4bc7-a066-367eab8eb458 BART_025.birdGrid.brd D01 BART BART_025 distributed C1 2015-06-14T09Z BART_025.C1.2015-06-14T05:23-04:00[US/Eastern] 1 ... species Black-throated Green Warbler 12.0 singing No Male 1.0 NaN JRUEB 20191107T154457Z
2 0592c99f-6716-4f94-928c-37b1ebb399c9 BART_025.birdGrid.brd D01 BART BART_025 distributed C1 2015-06-14T09Z BART_025.C1.2015-06-14T05:23-04:00[US/Eastern] 2 ... species Black-and-white Warbler 17.0 singing No Male 1.0 NaN JRUEB 20191107T154457Z
3 8e5a8287-1bca-4431-8b61-4830867079a4 BART_025.birdGrid.brd D01 BART BART_025 distributed C1 2015-06-14T09Z BART_025.C1.2015-06-14T05:23-04:00[US/Eastern] 1 ... species Red-eyed Vireo 9.0 singing No Male 1.0 NaN JRUEB 20191107T154457Z
4 9b07a045-73a6-40f7-8f88-8c422cc756b8 BART_025.birdGrid.brd D01 BART BART_025 distributed C1 2015-06-14T09Z BART_025.C1.2015-06-14T05:23-04:00[US/Eastern] 1 ... species Black-capped Chickadee 42.0 singing No Male 1.0 NaN JRUEB 20191107T154457Z
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
8993 8b235e8b-c283-4a48-bbe4-91140a94bad0 HARV_016.birdGrid.brd D01 HARV HARV_016 distributed A3 2019-06-15T14Z HARV_016.A3.2019-06-15T09:45-04:00[US/Eastern] 6 ... family NaN 61.0 singing No Unknown 1.0 NaN WFREE 20191205T150111Z
8994 0d1bc9ae-9335-4edc-afab-ffd6b687d674 HARV_016.birdGrid.brd D01 HARV HARV_016 distributed A3 2019-06-15T14Z HARV_016.A3.2019-06-15T09:45-04:00[US/Eastern] 1 ... species Yellow-bellied Sapsucker 17.0 drumming Yes Male 1.0 NaN WFREE 20191205T150111Z
8995 271dac86-df78-49b6-8704-0f4457fc8635 HARV_016.birdGrid.brd D01 HARV HARV_016 distributed A3 2019-06-15T14Z HARV_016.A3.2019-06-15T09:45-04:00[US/Eastern] 6 ... species Rose-breasted Grosbeak 32.0 calling No Unknown 1.0 NaN WFREE 20191205T150111Z
8996 7d59225c-a208-4093-8987-211aaa647230 HARV_016.birdGrid.brd D01 HARV HARV_016 distributed A3 2019-06-15T14Z HARV_016.A3.2019-06-15T09:45-04:00[US/Eastern] 3 ... species Ovenbird 52.0 singing No Unknown 1.0 NaN WFREE 20191205T150111Z
8997 cf021aa5-152b-4c65-8094-b1a7e98a0426 HARV_016.birdGrid.brd D01 HARV HARV_016 distributed A3 2019-06-15T14Z HARV_016.A3.2019-06-15T09:45-04:00[US/Eastern] 5 ... species Yellow-billed Cuckoo 63.0 singing No Unknown 1.0 NaN WFREE 20191205T150111Z

8998 rows × 23 columns

And now let's do the same with the 30-minute data table for biological temperature.


In [16]:
IRBT30 = pandas.read_csv('Downloads/NEON_temp-bio/stackedFiles/IRBT_30_minute.csv')
IRBT30


Out[16]:
domainID siteID horizontalPosition verticalPosition startDateTime endDateTime bioTempMean bioTempMinimum bioTempMaximum bioTempVariance bioTempNumPts bioTempExpUncert bioTempStdErMean finalQF publicationDate
0 D02 BLAN 0 10 2016-05-31T23:30:00Z 2016-06-01T00:00:00Z 20.96 20.34 21.65 0.14 1800.0 0.58 0.01 0 20171023T054007Z
1 D02 BLAN 0 10 2016-06-01T00:00:00Z 2016-06-01T00:30:00Z 19.75 19.34 20.36 0.08 1800.0 0.58 0.01 0 20171023T054007Z
2 D02 BLAN 0 10 2016-06-01T00:30:00Z 2016-06-01T01:00:00Z 19.13 18.91 19.46 0.02 1800.0 0.58 0.00 0 20171023T054007Z
3 D02 BLAN 0 10 2016-06-01T01:00:00Z 2016-06-01T01:30:00Z 18.71 18.49 18.95 0.01 1800.0 0.58 0.00 0 20171023T054007Z
4 D02 BLAN 0 10 2016-06-01T01:30:00Z 2016-06-01T02:00:00Z 18.47 18.27 18.64 0.00 1800.0 0.58 0.00 0 20171023T054007Z
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
308481 D19 BONA 3 0 2019-09-30T21:30:00Z 2019-09-30T22:00:00Z 11.44 10.18 12.73 0.60 1800.0 0.58 0.02 0 20191004T075451Z
308482 D19 BONA 3 0 2019-09-30T22:00:00Z 2019-09-30T22:30:00Z 11.60 9.59 12.80 0.47 1800.0 0.58 0.02 0 20191004T075451Z
308483 D19 BONA 3 0 2019-09-30T22:30:00Z 2019-09-30T23:00:00Z 9.52 8.66 10.41 0.29 1800.0 0.58 0.01 0 20191004T075451Z
308484 D19 BONA 3 0 2019-09-30T23:00:00Z 2019-09-30T23:30:00Z 10.39 9.90 10.90 0.04 1800.0 0.58 0.00 0 20191004T075451Z
308485 D19 BONA 3 0 2019-09-30T23:30:00Z 2019-10-01T00:00:00Z 10.31 9.76 10.69 0.05 1800.0 0.58 0.01 0 20191004T075451Z

308486 rows × 15 columns

Download remote sensing files: byFileAOP()

The function byFileAOP() uses the NEON API to programmatically download data files for remote sensing (AOP) data products. These files cannot be stacked by stackByTable() because they are not tabular data. The function simply creates a folder in your working directory and writes the files there. It preserves the folder structure for the subproducts.

The inputs to byFileAOP() are a data product ID, a site, a year, a filepath to save to, and an indicator to check the size of the download before proceeding, or not. As above, set check_size="FALSE" when working in Python. Be especially cautious about download size when downloading AOP data, since the files are very large.

Here, we'll download Ecosystem structure (Canopy Height Model) data from Hopbrook (HOPB) in 2017.


In [17]:
neonUtilities.byFileAOP(dpID='DP3.30015.001', site='HOPB', 
                        year='2017', check_size='FALSE',
                       savepath='~/Downloads');


Downloading files totaling approximately 147.8 MB MB
Downloading 213 files
  |======================================================================| 100%
Successfully downloaded  213  files.
NEON_D01_HOPB_DP1_718000_4706000_classified_point_cloud.prj downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_718000_4710000_classified_point_cloud.prj downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_719000_4705000_classified_point_cloud.shx downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_717000_4705000_classified_point_cloud.prj downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_717000_4707000_classified_point_cloud.shx downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP3_717000_4710000_CHM.tif downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/L3/DiscreteLidar/CanopyHeightModelGtif
NEON_D01_HOPB_DP1_717000_4710000_classified_point_cloud.kml downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/kmls
NEON_D01_HOPB_DP1_717000_4706000_classified_point_cloud.dbf downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_718000_4709000_classified_point_cloud.shp downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_716000_4705000_classified_point_cloud.prj downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP3_716000_4710000_CHM.tif downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/L3/DiscreteLidar/CanopyHeightModelGtif
NEON_D01_HOPB_DP1_716000_4708000_classified_point_cloud.dbf downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
2017_HOPB_2_L3_discrete_lidar_processing.pdf downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/Reports
NEON_D01_HOPB_DP1_716000_4710000_classified_point_cloud.dbf downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_716000_4705000_classified_point_cloud.dbf downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_718000_4705000_classified_point_cloud.prj downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_717000_4709000_classified_point_cloud.shx downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_720000_4704000_classified_point_cloud.prj downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_717000_4708000_classified_point_cloud.shp downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_717000_4710000_classified_point_cloud.prj downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_718000_4705000_classified_point_cloud.kml downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/kmls
NEON_D01_HOPB_DP1_720000_4710000_classified_point_cloud.shp downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP3_719000_4706000_CHM.tif downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/L3/DiscreteLidar/CanopyHeightModelGtif
NEON_D01_HOPB_DP1_719000_4710000_classified_point_cloud.prj downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_716000_4710000_classified_point_cloud.prj downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_718000_4708000_classified_point_cloud.shx downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP3_718000_4704000_CHM.tif downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/L3/DiscreteLidar/CanopyHeightModelGtif
NEON_D01_HOPB_DP1_716000_4705000_classified_point_cloud.shp downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_720000_4706000_classified_point_cloud.shx downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_720000_4707000_classified_point_cloud.kml downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/kmls
NEON_D01_HOPB_DP1_720000_4709000_classified_point_cloud.dbf downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_720000_4705000_classified_point_cloud.shp downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP3_720000_4708000_CHM.tif downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/L3/DiscreteLidar/CanopyHeightModelGtif
NEON_D01_HOPB_DP1_719000_4704000_classified_point_cloud.prj downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_717000_4706000_classified_point_cloud.prj downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_716000_4710000_classified_point_cloud.shp downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_718000_4706000_classified_point_cloud.kml downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/kmls
NEON_D01_HOPB_DP1_717000_4706000_classified_point_cloud.kml downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/kmls
NEON_D01_HOPB_DP1_717000_4708000_classified_point_cloud.shx downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_720000_4710000_classified_point_cloud.dbf downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP3_716000_4707000_CHM.tif downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/L3/DiscreteLidar/CanopyHeightModelGtif
NEON_D01_HOPB_DP1_717000_4708000_classified_point_cloud.kml downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/kmls
NEON_D01_HOPB_DP3_720000_4707000_CHM.tif downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/L3/DiscreteLidar/CanopyHeightModelGtif
NEON_D01_HOPB_DP3_718000_4706000_CHM.tif downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/L3/DiscreteLidar/CanopyHeightModelGtif
NEON_D01_HOPB_DP3_717000_4708000_CHM.tif downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/L3/DiscreteLidar/CanopyHeightModelGtif
NEON_D01_HOPB_DP1_719000_4707000_classified_point_cloud.shp downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_718000_4706000_classified_point_cloud.shp downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_718000_4709000_classified_point_cloud.shx downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_716000_4707000_classified_point_cloud.dbf downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_720000_4705000_classified_point_cloud.shx downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_719000_4705000_classified_point_cloud.dbf downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP3_718000_4710000_CHM.tif downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/L3/DiscreteLidar/CanopyHeightModelGtif
NEON_D01_HOPB_DP1_718000_4704000_classified_point_cloud.kml downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/kmls
NEON_D01_HOPB_DP1_718000_4707000_classified_point_cloud.kml downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/kmls
NEON_D01_HOPB_DP1_719000_4708000_classified_point_cloud.shp downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_716000_4706000_classified_point_cloud.dbf downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_719000_4705000_classified_point_cloud.kml downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/kmls
NEON_D01_HOPB_DP3_716000_4706000_CHM.tif downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/L3/DiscreteLidar/CanopyHeightModelGtif
NEON_D01_HOPB_DP1_719000_4709000_classified_point_cloud.kml downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/kmls
NEON_D01_HOPB_DP1_720000_4708000_classified_point_cloud.dbf downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_720000_4704000_classified_point_cloud.shp downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_717000_4704000_classified_point_cloud.prj downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_718000_4704000_classified_point_cloud.shx downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_719000_4706000_classified_point_cloud.prj downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_718000_4704000_classified_point_cloud.shp downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_719000_4709000_classified_point_cloud.dbf downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP3_717000_4705000_CHM.tif downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/L3/DiscreteLidar/CanopyHeightModelGtif
NEON_D01_HOPB_DP1_717000_4705000_classified_point_cloud.shp downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_716000_4709000_classified_point_cloud.shp downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_720000_4708000_classified_point_cloud.shp downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_720000_4707000_classified_point_cloud.shx downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_717000_4707000_classified_point_cloud.dbf downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_719000_4707000_classified_point_cloud.shx downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP3_716000_4709000_CHM.tif downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/L3/DiscreteLidar/CanopyHeightModelGtif
NEON_D01_HOPB_DP3_719000_4709000_CHM.tif downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/L3/DiscreteLidar/CanopyHeightModelGtif
NEON_D01_HOPB_DP1_716000_4710000_classified_point_cloud.kml downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/kmls
NEON_D01_HOPB_DP1_720000_4706000_classified_point_cloud.dbf downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_720000_4709000_classified_point_cloud.prj downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_717000_4709000_classified_point_cloud.prj downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_718000_4710000_classified_point_cloud.shx downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_720000_4709000_classified_point_cloud.shp downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_717000_4706000_classified_point_cloud.shx downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_717000_4710000_classified_point_cloud.dbf downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_716000_4709000_classified_point_cloud.prj downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_716000_4706000_classified_point_cloud.shx downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP3_717000_4706000_CHM.tif downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/L3/DiscreteLidar/CanopyHeightModelGtif
NEON_D01_HOPB_DP1_720000_4710000_classified_point_cloud.shx downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_716000_4708000_classified_point_cloud.prj downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP3_719000_4708000_CHM.tif downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/L3/DiscreteLidar/CanopyHeightModelGtif
NEON_D01_HOPB_DP1_718000_4708000_classified_point_cloud.kml downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/kmls
NEON_D01_HOPB_DP1_720000_4704000_classified_point_cloud.shx downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_717000_4704000_classified_point_cloud.kml downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/kmls
NEON_D01_HOPB_DP1_716000_4707000_classified_point_cloud.kml downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/kmls
NEON_D01_HOPB_DP1_720000_4708000_classified_point_cloud.shx downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_718000_4709000_classified_point_cloud.prj downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_720000_4706000_classified_point_cloud.shp downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_716000_4704000_classified_point_cloud.shx downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_716000_4704000_classified_point_cloud.kml downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/kmls
NEON_D01_HOPB_DP1_718000_4709000_classified_point_cloud.kml downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/kmls
NEON_D01_HOPB_DP1_717000_4705000_classified_point_cloud.dbf downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_716000_4705000_classified_point_cloud.shx downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_718000_4708000_classified_point_cloud.dbf downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_717000_4709000_classified_point_cloud.shp downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_719000_4710000_classified_point_cloud.dbf downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_717000_4709000_classified_point_cloud.kml downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/kmls
NEON_D01_HOPB_DP3_716000_4704000_CHM.tif downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/L3/DiscreteLidar/CanopyHeightModelGtif
NEON_D01_HOPB_DP3_719000_4705000_CHM.tif downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/L3/DiscreteLidar/CanopyHeightModelGtif
NEON_D01_HOPB_DP1_718000_4705000_classified_point_cloud.dbf downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_717000_4705000_classified_point_cloud.kml downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/kmls
NEON_D01_HOPB_DP1_720000_4705000_classified_point_cloud.prj downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_718000_4706000_classified_point_cloud.shx downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_717000_4709000_classified_point_cloud.dbf downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_718000_4704000_classified_point_cloud.dbf downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_719000_4709000_classified_point_cloud.prj downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP3_716000_4708000_CHM.tif downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/L3/DiscreteLidar/CanopyHeightModelGtif
NEON_D01_HOPB_DP1_716000_4704000_classified_point_cloud.dbf downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_716000_4708000_classified_point_cloud.kml downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/kmls
NEON_D01_HOPB_DP1_719000_4706000_classified_point_cloud.shp downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_718000_4708000_classified_point_cloud.prj downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_720000_4709000_classified_point_cloud.kml downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/kmls
NEON_D01_HOPB_DP1_716000_4708000_classified_point_cloud.shp downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_720000_4710000_classified_point_cloud.prj downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_718000_4710000_classified_point_cloud.kml downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/kmls
NEON_D01_HOPB_DP1_719000_4708000_classified_point_cloud.kml downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/kmls
NEON_D01_HOPB_DP1_716000_4709000_classified_point_cloud.shx downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_717000_4707000_classified_point_cloud.shp downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_716000_4707000_classified_point_cloud.shx downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_717000_4710000_classified_point_cloud.shx downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_719000_4709000_classified_point_cloud.shx downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_720000_4708000_classified_point_cloud.prj downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_720000_4705000_classified_point_cloud.dbf downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_716000_4704000_classified_point_cloud.prj downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP3_718000_4709000_CHM.tif downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/L3/DiscreteLidar/CanopyHeightModelGtif
NEON_D01_HOPB_DP1_719000_4707000_classified_point_cloud.prj downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_716000_4706000_classified_point_cloud.prj downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_718000_4706000_classified_point_cloud.dbf downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_720000_4706000_classified_point_cloud.kml downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/kmls
NEON_D01_HOPB_DP3_719000_4707000_CHM.tif downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/L3/DiscreteLidar/CanopyHeightModelGtif
NEON_D01_HOPB_DP1_720000_4707000_classified_point_cloud.dbf downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_719000_4710000_classified_point_cloud.kml downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/kmls
NEON_D01_HOPB_DP3_717000_4704000_CHM.tif downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/L3/DiscreteLidar/CanopyHeightModelGtif
NEON_D01_HOPB_DP1_720000_4704000_classified_point_cloud.kml downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/kmls
NEON_D01_HOPB_DP1_716000_4707000_classified_point_cloud.shp downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP3_720000_4705000_CHM.tif downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/L3/DiscreteLidar/CanopyHeightModelGtif
NEON_D01_HOPB_DP1_719000_4705000_classified_point_cloud.shp downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_720000_4707000_classified_point_cloud.prj downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP3_720000_4704000_CHM.tif downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/L3/DiscreteLidar/CanopyHeightModelGtif
NEON_D01_HOPB_DP3_718000_4705000_CHM.tif downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/L3/DiscreteLidar/CanopyHeightModelGtif
NEON_D01_HOPB_DP1_716000_4704000_classified_point_cloud.shp downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_716000_4709000_classified_point_cloud.kml downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/kmls
NEON_D01_HOPB_DP3_717000_4707000_CHM.tif downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/L3/DiscreteLidar/CanopyHeightModelGtif
NEON_D01_HOPB_DP3_719000_4704000_CHM.tif downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/L3/DiscreteLidar/CanopyHeightModelGtif
NEON_D01_HOPB_DP1_717000_4708000_classified_point_cloud.prj downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP3_720000_4706000_CHM.tif downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/L3/DiscreteLidar/CanopyHeightModelGtif
NEON_D01_HOPB_DP1_717000_4707000_classified_point_cloud.kml downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/kmls
NEON_D01_HOPB_DP1_716000_4710000_classified_point_cloud.shx downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_720000_4709000_classified_point_cloud.shx downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_719000_4704000_classified_point_cloud.shx downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_717000_4707000_classified_point_cloud.prj downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_717000_4710000_classified_point_cloud.shp downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
2017_HOPB_2_V01_LMS_QAQC.pdf downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/Reports
NEON_D01_HOPB_DP1_719000_4706000_classified_point_cloud.dbf downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_719000_4710000_classified_point_cloud.shx downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_719000_4706000_classified_point_cloud.shx downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP3_718000_4708000_CHM.tif downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/L3/DiscreteLidar/CanopyHeightModelGtif
NEON_D01_HOPB_DP1_720000_4704000_classified_point_cloud.dbf downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_719000_4707000_classified_point_cloud.kml downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/kmls
NEON_D01_HOPB_DP3_720000_4709000_CHM.tif downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/L3/DiscreteLidar/CanopyHeightModelGtif
NEON_D01_HOPB_DP1_718000_4707000_classified_point_cloud.shp downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_719000_4705000_classified_point_cloud.prj downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP3_716000_4705000_CHM.tif downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/L3/DiscreteLidar/CanopyHeightModelGtif
NEON.D01.HOPB.DP3.30015.001.readme.20190925T213945Z.txt downloaded to ~/Downloads/DP3.30015.001/NEON.DOM.SITE.DP3.30015.001/PROV/HOPB/20170801T000000--20170901T000000/basic
NEON_D01_HOPB_DP1_718000_4707000_classified_point_cloud.dbf downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_718000_4707000_classified_point_cloud.shx downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_719000_4708000_classified_point_cloud.prj downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP3_717000_4709000_CHM.tif downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/L3/DiscreteLidar/CanopyHeightModelGtif
NEON_D01_HOPB_DP1_718000_4705000_classified_point_cloud.shp downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_720000_4705000_classified_point_cloud.kml downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/kmls
NEON_D01_HOPB_DP1_716000_4706000_classified_point_cloud.kml downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/kmls
NEON_D01_HOPB_DP1_717000_4704000_classified_point_cloud.dbf downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP3_719000_4710000_CHM.tif downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/L3/DiscreteLidar/CanopyHeightModelGtif
NEON_D01_HOPB_DP1_719000_4708000_classified_point_cloud.dbf downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_716000_4709000_classified_point_cloud.dbf downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_719000_4710000_classified_point_cloud.shp downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_720000_4706000_classified_point_cloud.prj downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_717000_4705000_classified_point_cloud.shx downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_719000_4709000_classified_point_cloud.shp downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_718000_4707000_classified_point_cloud.prj downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_720000_4707000_classified_point_cloud.shp downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_718000_4710000_classified_point_cloud.shp downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP3_720000_4710000_CHM.tif downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/L3/DiscreteLidar/CanopyHeightModelGtif
NEON_D01_HOPB_DP1_719000_4708000_classified_point_cloud.shx downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_718000_4709000_classified_point_cloud.dbf downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_718000_4704000_classified_point_cloud.prj downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_717000_4704000_classified_point_cloud.shx downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_718000_4705000_classified_point_cloud.shx downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_717000_4708000_classified_point_cloud.dbf downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_718000_4710000_classified_point_cloud.dbf downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_719000_4704000_classified_point_cloud.kml downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/kmls
NEON_D01_HOPB_DP1_716000_4705000_classified_point_cloud.kml downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/kmls
NEON_D01_HOPB_DP1_717000_4706000_classified_point_cloud.shp downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_720000_4708000_classified_point_cloud.kml downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/kmls
NEON_D01_HOPB_DP3_718000_4707000_CHM.tif downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/L3/DiscreteLidar/CanopyHeightModelGtif
NEON_D01_HOPB_DP1_718000_4708000_classified_point_cloud.shp downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_719000_4707000_classified_point_cloud.dbf downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_716000_4708000_classified_point_cloud.shx downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_720000_4710000_classified_point_cloud.kml downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/kmls
NEON_D01_HOPB_DP1_719000_4704000_classified_point_cloud.dbf downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_717000_4704000_classified_point_cloud.shp downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_719000_4704000_classified_point_cloud.shp downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_716000_4706000_classified_point_cloud.shp downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_716000_4707000_classified_point_cloud.prj downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/shps
NEON_D01_HOPB_DP1_719000_4706000_classified_point_cloud.kml downloaded to ~/Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/Metadata/DiscreteLidar/TileBoundary/kmls

Let's read one tile of data into Python and view it. We'll use the rasterio and matplotlib modules here, but as with tabular data, there are other options available.


In [18]:
import rasterio
CHMtile = rasterio.open('Downloads/DP3.30015.001/2017/FullSite/D01/2017_HOPB_2/L3/DiscreteLidar/CanopyHeightModelGtif/NEON_D01_HOPB_DP3_718000_4709000_CHM.tif')

In [20]:
import matplotlib.pyplot as plt
from rasterio.plot import show
fig, ax = plt.subplots(figsize = (8,3))
show(CHMtile)


Out[20]:
<matplotlib.axes._subplots.AxesSubplot at 0x157bfb210>