From 59311fabae00af178ee30e50b0c9146e26ef0c4f Mon Sep 17 00:00:00 2001 From: Phil Varner Date: Thu, 18 May 2023 11:11:44 -0400 Subject: [PATCH] add support for naip 2021 --- .pre-commit-config.yaml | 4 + CHANGELOG.md | 6 + src/stactools/naip/stac.py | 7 +- .../m_3907864_sw_17_060_20210912_20211220.xml | 860 ++++++++++++++++++ ...3907864_sw_17_060_20210912_downsampled.tif | Bin 0 -> 64763 bytes tests/test_stac.py | 29 +- 6 files changed, 901 insertions(+), 5 deletions(-) create mode 100644 tests/data-files/m_3907864_sw_17_060_20210912_20211220.xml create mode 100644 tests/data-files/m_3907864_sw_17_060_20210912_downsampled.tif diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 45ec05e..c498f58 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -2,6 +2,10 @@ # Please run `pre-commit run --all-files` when adding or changing entries. repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.4.0 + hooks: + - id: check-added-large-files - repo: https://github.com/psf/black rev: 22.12.0 hooks: diff --git a/CHANGELOG.md b/CHANGELOG.md index 31d4068..2579265 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). This project attempts to match the major and minor versions of [stactools](https://github.com/stac-utils/stactools) and increments the patch number as needed. +## Unreleased + +### Added + +- Support for NAIP 2021 + ## [v0.3.2] - 2023-05-03 ### Added diff --git a/src/stactools/naip/stac.py b/src/stactools/naip/stac.py index 0e42ce3..b46858b 100644 --- a/src/stactools/naip/stac.py +++ b/src/stactools/naip/stac.py @@ -9,6 +9,7 @@ import rasterio as rio import shapely from lxml import etree +from pystac import Item from pystac.extensions.eo import EOExtension from pystac.extensions.grid import GridExtension from pystac.extensions.item_assets import ItemAssetsExtension @@ -109,7 +110,7 @@ def create_item( fgdc_metadata_href: Optional[str], thumbnail_href=None, additional_providers=None, -): +) -> Item: """Creates a STAC Item from NAIP data. Args: @@ -144,8 +145,8 @@ def create_item( precision=6, ) - if fgdc_metadata_href is not None: - if year == "2020": + if fgdc_metadata_href: + if year in ["2020", "2021"]: first_xpath = "gmd:fileIdentifier/gco:CharacterString" second_xpath = "idinfo/citation/citeinfo/title" diff --git a/tests/data-files/m_3907864_sw_17_060_20210912_20211220.xml b/tests/data-files/m_3907864_sw_17_060_20210912_20211220.xml new file mode 100644 index 0000000..e811caf --- /dev/null +++ b/tests/data-files/m_3907864_sw_17_060_20210912_20211220.xml @@ -0,0 +1,860 @@ + + + + m_3907864_sw_17_060_20210912 + + + eng; USA + + + utf8 + + + dataset + + + + + USDA-FSA Aerial Photography Field Office + + + + + + + 801-844-2922 + + + 801-956-3653 + + + + + + + 125 S. State Street Suite 6416 + + + Salt Lake City + + + UT + + + 84138 + + + USA + + + apfo.sales@slc.usda.gov + + + + + Monday through Friday 8:00 AM to 5:00 PM + + + + + pointOfContact + + + + + 2021-09-12 + + + ISO 19115-2 Geographic Information - Metadata - Part 2: Extensions for Imagery and Gridded Data + + + ISO 19115-2:2009(E) + + + + + + point + + + + + + + + + + + + + + + NAIP Digital Orthophoto (DOQQ - quarter-quadrangle) m_3907864_sw_17_060_20210912 + + + + + 2021-11-11 + + + publication + + + + + + + DOQQs + + + + + + + Surdex Corporation + + + originator + + + + + + + USDA-FSA Aerial Photography Field Office + + + + + + + Salt Lake City + + + Utah + + + + + + + publisher + + + + + + + + This data set contains imagery from the National Agriculture Imagery Program (NAIP). The NAIP program is administered by USDA FSA and has been established to support two main FSA strategic goals centered on agricultural production. These are, increase stewardship of America's natural resources while enhancing the environment, and to ensure commodities are procured and distributed effectively and efficiently to increase food security. The NAIP program supports these goals by acquiring and providing ortho imagery that has been collected during the agricultural growing season in the U.S. The NAIP ortho imagery is tailored to meet FSA requirements and is a fundamental tool used to support FSA farm and conservation programs. Ortho imagery provides an effective, intuitive means of communication about farm program administration between FSA and stakeholders. New technology and innovation is identified by fostering and maintaining a relationship with vendors and government partners, and by keeping pace with the broader geospatial community. As a result of these efforts the NAIP program provides three main products: DOQQ tiles, Compressed County Mosaics (CCM), and Seamline shape files. The Contract specifications for NAIP imagery have changed over time reflecting agency requirements and improving technologies. These changes include image resolution, horizontal accuracy, coverage area, and number of bands. In general, flying seasons are established by FSA and are targeted for peak crop growing conditions. The NAIP acquisition cycle is based on a minimum 3 year refresh of base ortho imagery. The tiling format of the NAIP imagery is based on a 3.75' x 3.75' quarter quadrangle with a 300 pixel buffer on all four sides. NAIP quarter quads are formatted to the UTM coordinate system using the North American Datum of 1983. NAIP imagery may contain as much as 10% cloud cover per tile. + + + NAIP imagery is available for distribution within 60 days of the end of a flying season and is intended to provide current information of agricultural conditions in support of USDA farm programs. For USDA Farm Service Agency, the 60 centimeter GSD product provides an ortho image base for Common Land Unit boundaries and other data sets. The NAIP imagery is generally acquired in projects covering full states in cooperation with state government and other federal agencies that use the imagery for a variety of purposes including land use planning and natural resource assessment. The NAIP is also used for disaster response. While suitable for a variety of uses, prior to 2007 the 2 meter GSD NAIP imagery was primarily intended to assess "crop condition and compliance" to USDA farm program conditions. The 2 meter imagery was generally acquired only for agricultural areas within state projects. + + + completed + + + + + USDA-FSA Aerial Photography Field Office + + + + + + + 801-844-2922 + + + 801-956-3653 + + + + + + + 125 S. State Street Suite 6416 + + + Salt Lake City + + + UT + + + 84138 + + + USA + + + apfo.sales@slc.usda.gov + + + + + Monday through Friday 8:00 AM to 5:00 PM + + + + + pointOfContact + + + + + + + irregular + + + + + + + None + + + None + + + None + + + + + + + Farming + + + Digital Ortho Rectified Image + + + Ortho Rectification + + + Quarter Quadrangle + + + NAIP + + + Aerial Compliance + + + Compliance + + + theme + + + + + None + + + + + + + + + + VA + + + USA + + + place + + + + + Geographic Names Information System + + + + + + + + + + otherRestrictions + + + otherRestrictions + + + Access Constraints: There are no limitations for access. Use Constraints: None. The USDA-FSA Aerial Photography Field Office asks to be credited in derived products. Distribution Liability: In no event shall the creators, custodians, or distributors of this information be liable for any damages arising out of its use (or the inability to use it). + + + + + grid + + + eng; USA + + + Native Dataset Environment: Xpro 6.4; ArcGIS 10.4.1 + + + + + + + -78.131114 + + + -78.055811 + + + 38.995641 + + + 39.067354 + + + + + + + + Ground Condition + 2021-09-12 + + + + + + + + + + + + false + + + + + Entity and Attribute Information + + + + Entity and Attribute Overview: 8-bit pixels per band, 0-255, 4-band RGBiR Entity and Attribute Detail Citation: None + + + + + + + + + + + Digital Orthorectified Quarter Quad + + + + + + + + + + Supervisor Customer Services Section + + + USDA-FSA Aerial Photography Field Office + + + + + + + 801-844-2922 + + + 801-956-3653 + + + + + + + 125 S. State Street Suite 6416 + + + Salt Lake City + + + UT + + + 84138 + + + USA + + + apfo.sales@slc.usda.gov + + + + + + + distributor + + + + + + + Contact the USDA-FSA Aerial Photography Field Office for information. + + + Ordering Instructions: Contact the USDA-FSA Aerial Photography Field Office for information. + + + + + + + + + + + + + + cdRom + + + + + + + + + + + + + iso9660 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Horizontal Positional Accuracy + + + This product as a whole meets 4m CE95 or better positional accuracy RMSEr. + + + NAIP horizontal accuracy specifications have evolved over the life of the program. From 2003 to 2004 the specifications were as follows: 1-meter GSD imagery was to match within 3-meters, and 2-meter GSD to match within 10 meters of reference imagery. For 2005 the 1-meter GSD specification was changed to 5 meters matching the reference imagery. In 2006 a pilot project was performed using true ground specifications rather than reference imagery. All states used the same specifications as 2005 except Utah, which required a match of +/- 6 meters to true ground. In 2007 all specifications were the same as 2006 except Arizona used true ground specifications and all other states used reference imagery. In 2008 and subsequent years no 2-meter GSD imagery was acquired and all specifications were the same as 2007 except approximately half of the states acquired used true ground specifications and the other half used reference imagery. The 2008 states that used absolute ground control were; Indiana, Minnesota, New Hampshire, North Carolina, Texas, Vermont, and Virginia. Beginning in 2009, all NAIP imagery acquisitions used the +/- 6 meters to ground and in 2016 the specification was changed to +/- 4 meters to true ground. + + + + + + + + + + + 4 + + + + + + + + + + + + + + None + + + + + + + + NAIP 3.75 minute tile file names are based on the USGS quadrangle naming convention. + + + + + + + + + + + DOQQ Production Process Description; + USDA FSA APFO NAIP Program 2021; + + The imagery was collected using the following digital sensors: + Leica ADS-100 (Serial Number 10530), + Leica ADS-100 (Serial Number 10510), + Leica ADS-100 (Serial Number 10515), + Leica ADS-100 (Serial Number 10522), + Leica ADS-100 (Serial Number 10537), + Leica ADS-100 (Serial Number 10519), + Leica ADS-100 (Serial Number 10552) + + with Flight and Sensor Control Management + System (FCMS) firmware: + v4.57 and v4.6, + + Cameras are calibrated radiometrically and geometrically + by the manufacturer and are all certified by the USGS. + + Collection was performed using a combination of the + following twin-engine aircraft with turbines flying + at 27,100 ft above mean terrain. + + Plane types: + C441, C414, Rockwell Turbo Commander + + Tail numbers: + N441EH, + N414EH, + N440EH, + N441FS, + N2NQ, + N811HJ, + N690LS, + + With these flying heights, there is a 27% sidelap, + giving the collected data nominal ground sampling distance + of 0.60 meters. + + Based-upon the CCD Array configuration present in + the ADS digital sensor, imagery for each flight + line is 20,000-pixels in width. Red, Green, Blue, + Near-Infrared and Panchromatic image bands were collected. + + The ADS 100 has the following band specifications: + Red 619-651, + Green 525-585, + Blue 435-495, + Near Infrared 808-882, + all values are in nanometers. + + + Flight planning was performed in Leica MissionPro over a + buffered boundary covering DOQQ extents provided by the USDA. + A 500m reduced resolution DEM file was used to determine + ground heights. A targeted flight altitude of approximately + 27,000 feet above ground level for native 60cm image + acquisition with sidelap of 27% was used + for flight planning parameters. Five aircraft were utilized + for acquisition, the seamline + shapefile clarifies which aircraft were used for a given area. + + All aircraft were equipped with Leica + ADS100 systems where utilized for data + capture. The Leica ADS100 pushbroom sensor + has been calibrated by the manufacturer as well as validated + against a local calibration range. The calibration includes + measuring the radiometric and geometric properties of the + camera. These data are used in the Post Processing Software + to eliminate the radiometric and geometric distortion. + All aerial imagery was collected with associated GPS/IMU + data. ADS collection requires high quality IMU data for + processing and was critical for early access hosting of digital + data to the web for USDA interim access and review. + + After early access web delivery was complete, all + imagery was triangulated using Leica XPro in which + the airborne GPS data was constrained to expected limits. + To validate the accuracy of the block adjustment derived from + GPS/IMU, sensor parameters and conjugate point measurements, + photo identifiable ground control points were field surveyed within + each State. These points were surveyed using GPS techniques to + produce coordinates that are accurate to +/- 0.25 meters RMSE in XYZ. + The GPS surveying techniques utilized assured that the coordinates + are derived in the required project datum and relative to an approved + National Reference System. If the block does not fit the + control points within specifications the pass and tie + points were reviewed for blunders and weak areas. If, + after these corrections were made, the block still + does not fit the control well the GPS and IMU processing were + reviewed. Once the block has proper statistics and fits the + control to specifications, the final bundle adjustment was + made. As AT points are frequently on man-made and other + vertical features not included in the DEM, these ortho + points can only be used to indicate regions of error by the + clusters of points that predict excessive horizontal displacement. + + The final adjustments assure a high quality relative adjustment + and a high quality absolute adjustment limited to the + airborne GPS data accuracy. This process assures the final + absolute accuracy of all geopositioned imagery. Both + signalized and photo identified ground control were used to + QC and control the IMU/GPS based aerial triangulation bundle + block solution. Surdex Grouping Tool provides real-time updates + of the USDA APFO Image Metrics. The image technician adjusts + image correction parameters to bring the radiometric + characteristics of large groups of images within the Image + Metrics ranges. For each project area the highest resolution + DEM or LiDAR was obtained and utilized for rectification of captured + imagery. + + A visual inspection of the final DEM using color cycled + classification by elevation and a shaded relief was performed + to check for gaps, corruption and gross errors. + The predicted horizontal error for each + point was added as an attribute in the SURDEX enterprise + database. An operator reviews ortho seams + in areas these predicted errors indicate horizontal error in + excess of the contract specifications. Any imagery errors + introduced by source DEM required patching from an alternate + perspective or strip of photography. + Processing hardware used included various brands of survey grade + GPS receivers, various brands and models of computers, + RAID6 storage, calibrated monitors, various brands of monitor + calibration colorimeters. Leica XPro was used for post + processing of ADS pushbroom data, triangulation and + orthorectification. SURDEX software was used to color correct + and remove bidirectional reflectance, vignetting and other + illumination trends. USDA APFO Image Metrics are measured and + images corrected to conform to the Image Metrics using + SURDEX software. GPS/IMU data was reduced to projected + coordinates in the appropriate UTM zone using + Inertial Explorer software from Novatel. Aerial Triangulation + and orthorectification was performed using Leica XPro. SURDEX + software was used to adjust for minor radiometric + variation between adjacent images. SURDEX software was used + to calculate the optimal seam path, check seam topology and + create master tiles. SURDEX ortho software generates + occlusion/smear polygons used during seam review + of steep terrain. SURDEX software was used to + visually inspect master tiles for seam and image defects. + SURDEX software was used to project and cut final DOQQ image + files from masters. SURDEX software was used to create CCM + metadata. Lizardtech GeoExpress version 10.0.1.5035 was used + to create the CCM image file. SURDEX software was + used to perform final formatting, QC and naming of the DOQQ. + USGS metadata parser software was used to validate the metadata. + Various versions of Microsoft Windows were used in all phases of + production. Grouping Tool was used again after DOQQ and CCM + production to provide a quality assurance check. Individual + DOQQ and CCM may not meet the USDA APFO Image Metrics ranges + due to land cover. The goal is to have the state as a + whole meet the Image Metrics. All products are reviewed + by independent personnel prior to delivery. + The delivery is checked for omissions, commissions, + naming, formatting, specification compliance and data integrity. + + + + + + + None + + + USDA-FSA Aerial Photography Field Office + + + + + + + + 801-844-2922 + + + 801-956-3653 + + + + + + + 125 S. State Street Suite 6416 + + + Salt Lake City + + + UT + + + 84138 + + + USA + + + + + Monday through Friday 8:00 AM to 5:00 PM + + + + + + processor + + + + + + + + + + + + + + This metadata was automatically generated from the FGDC Content Standards for Digital Geospatial Metadatastandard version FGDC-STD-001-1998 using the January 2013 version of the FGDC CSDGM to ISO 19115-2 transform. + + + + + + USDA-FSA Aerial Photography Field Office + + + + + + + 801-844-2922 + + + 801-956-3653 + + + + + + + 125 S. State Street Suite 6416 + + + Salt Lake City + + + UT + + + 84138 + + + USA + + + apfo.sales@slc.usda.gov + + + + + Monday through Friday 8:00 AM to 5:00 PM + + + + + custodian + + + + + + diff --git a/tests/data-files/m_3907864_sw_17_060_20210912_downsampled.tif b/tests/data-files/m_3907864_sw_17_060_20210912_downsampled.tif new file mode 100644 index 0000000000000000000000000000000000000000..6753d6a16d383b6d08836a7c7eb36136062c4c9d GIT binary patch literal 64763 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%0Db=s8N_K=P8FVZzQ&1P_tba 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 literal 0 HcmV?d00001 diff --git a/tests/test_stac.py b/tests/test_stac.py index 84023f7..6c55884 100644 --- a/tests/test_stac.py +++ b/tests/test_stac.py @@ -5,6 +5,7 @@ from pystac.extensions.projection import ProjectionExtension from pystac.extensions.raster import DataType, RasterExtension from pystac.extensions.scientific import CollectionScientificExtension +from pystac.utils import datetime_to_str from stactools.naip.stac import create_collection, create_item from tests import test_data @@ -44,8 +45,7 @@ def test_create_item_txt(self): projection.centroid["lat"] == pytest.approx(30.96876) projection.centroid["lon"] == pytest.approx(-85.90624) - # test stac on year = 2020 - def test_create_item_xml(self): + def test_create_item_xml_2020(self): item = create_item( "tx", "2020", @@ -67,6 +67,31 @@ def test_create_item_xml(self): self.assertEqual(type(item.datetime), datetime) self.assertEqual(type(item.id), str) + def test_create_item_xml_2021(self): + item = create_item( + "va", + "2021", + test_data.get_path( + "data-files/m_3907864_sw_17_060_20210912_downsampled.tif" + ), + test_data.get_path("data-files/m_3907864_sw_17_060_20210912_20211220.xml"), + ) + + image_asset = item.assets["image"] + raster_ext = RasterExtension.ext(image_asset) + self.assertEqual(len(raster_ext.bands), 4) + for raster_band in RasterExtension.ext(image_asset).bands: + self.assertEqual(raster_band.nodata, 0) + self.assertEqual(raster_band.spatial_resolution, item.properties["gsd"]) + self.assertEqual(raster_band.data_type, DataType.UINT8) + self.assertEqual(raster_band.unit, "none") + + self.assertEqual(datetime_to_str(item.datetime), "2021-09-12T16:00:00Z") + self.assertEqual(item.id, "va_m_3907864_sw_17_060_20210912") + self.assertEqual( + item.properties["proj:centroid"], {"lat": 39.0315, "lon": -78.09348} + ) + # test stac on year 2011 # resource description key is missing from the metadata def test_incorrect_metadata_txt(self):