diff --git a/.github/workflows/format_code.yml b/.github/workflows/format_code.yml index 9a216503b..ceb473ce8 100644 --- a/.github/workflows/format_code.yml +++ b/.github/workflows/format_code.yml @@ -1,6 +1,8 @@ name: Code Format on: push: + branches-ignore: + - transfer permissions: contents: read jobs: diff --git a/Procfile b/Procfile index 82b4db951..2486669cb 100644 --- a/Procfile +++ b/Procfile @@ -1 +1 @@ -web: gunicorn -b :8080 transfers.entrypoint:app -k uvicorn.workers.UvicornWorker +web: python3 -m transfers.transfer diff --git a/core/initializers.py b/core/initializers.py index 0533d9587..33ad06d73 100644 --- a/core/initializers.py +++ b/core/initializers.py @@ -50,7 +50,7 @@ def init_hypertables(): # session.close() -def init_lexicon(path=None): +def init_lexicon(path: str = None) -> None: if path is None: path = Path(__file__).parent / "lexicon.json" diff --git a/db/location.py b/db/location.py index 7cccd2db0..ad1a99e5d 100644 --- a/db/location.py +++ b/db/location.py @@ -38,9 +38,7 @@ class Location(Base, AutoBaseMixin, ReleaseMixin): __versioned__ = {} - nma_pk_location: Mapped[UUID] = mapped_column( - String(36), nullable=True, unique=True - ) + nma_pk_location: Mapped[UUID] = mapped_column(String(36), nullable=True) description: Mapped[str] = mapped_column # name: Mapped[str] = mapped_column(String(255), nullable=True) point: Mapped[WKBElement] = mapped_column( diff --git a/pyproject.toml b/pyproject.toml index b94fd7de9..6b75d04cc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -54,7 +54,6 @@ dependencies = [ "multidict==6.6.3", "numpy==2.3.2", "packaging==25.0", - "pact-python>=2.3.3", "pandas==2.3.2", "pandas-stubs==2.3.0.250703", "pg8000==1.31.4", diff --git a/services/lexicon_helper.py b/services/lexicon_helper.py index c4a98454b..7c6c9d49b 100644 --- a/services/lexicon_helper.py +++ b/services/lexicon_helper.py @@ -58,8 +58,8 @@ def add_lexicon_term( ) audit_add(user, category) session.add(category) - session.commit() - session.flush() + # session.commit() + # session.flush() db_categories.append(category) diff --git a/transfers/asset_transfer.py b/transfers/asset_transfer.py index 3c90d2264..749bc926f 100644 --- a/transfers/asset_transfer.py +++ b/transfers/asset_transfer.py @@ -32,7 +32,8 @@ get_storage_bucket, get_storage_client, ) -from transfers.util import get_valid_things, logger +from transfers.util import get_valid_things, read_csv +from transfers.logger import logger def transfer_assets(session: Session) -> None: @@ -41,21 +42,34 @@ def transfer_assets(session: Session) -> None: bucket = get_storage_bucket(client) logger.info(f"Using bucket {bucket.name}") + well_photos = read_csv("WellPhotos") # for name in ['AR0001']: # for testing for thing in get_valid_things(session): - name = thing.name - # find images in temp bucket - logger.info(f"Processing PointID: {thing.name}") - blobs = bucket.list_blobs(prefix=f"nma-photos/{thing.name}") - # move blobs from temp to assets bucket - for srcblob in blobs: - f = srcblob.download_as_bytes() - head, filename = srcblob.name.split("/") + photos = well_photos[well_photos["PointID"] == thing.name] + if photos.empty: + photos = well_photos[well_photos["PointID"] == thing.name.replace("-", "")] + if photos.empty: + logger.info(f"No photos found for PointID: {thing.name}") + continue + for i, row in enumerate(photos.itertuples()): + photo_path = row.OLEPath + srcblob = bucket.get_blob(f"nma-photos/{photo_path}") + if not srcblob: + logger.critical( + f"No photo found for PointID: {thing.name}, {photo_path}" + ) + continue + + head, filename = srcblob.name.split("/") + f = srcblob.download_as_bytes() ff = UploadFile(file=io.BytesIO(f), filename=filename, size=len(f)) uri, blob_name = gcs_upload(ff, bucket) add_asset(session, ff, filename, thing.id, uri, blob_name) + logger.info( + f"Added asset thing.id={thing.id} thing={thing.name} uri: {uri}" + ) def transfer_assets_testing(session: Session) -> None: diff --git a/transfers/contact_transfer.py b/transfers/contact_transfer.py index 053f90ae3..e0a144185 100644 --- a/transfers/contact_transfer.py +++ b/transfers/contact_transfer.py @@ -15,9 +15,9 @@ # =============================================================================== import numpy as np import pandas as pd -from transfers.util import read_csv, filter_to_valid_point_ids, logger, replace_nans +from transfers.util import read_csv, filter_to_valid_point_ids, replace_nans +from transfers.logger import logger from db import Thing, Contact, ThingContactAssociation, Email, Phone, Address - from schemas.contact import CreateContact, CreateAddress @@ -58,9 +58,9 @@ def transfer_contacts(session): odf = filter_to_valid_point_ids(session, odf) for i, row in odf.iterrows(): thing = session.query(Thing).where(Thing.name == row.PointID).first() - print(f"Processing PointID: {i} {row.PointID}") + logger.info(f"Processing PointID: {i} {row.PointID}") if thing is None: - logger.warning( + logger.critical( f"Thing with PointID {row.PointID} not found. Skipping owner." ) continue @@ -71,7 +71,7 @@ def transfer_contacts(session): session.flush() logger.info(f"added first contact for PointID {row.PointID}") except Exception as e: - logger.warning( + logger.critical( f"Skipping first contact for PointID {row.PointID} due to validation error: {e}" ) from pprint import pprint @@ -83,9 +83,9 @@ def transfer_contacts(session): add_second_contact(session, row, thing) session.commit() session.flush() - print(f"added second contact for PointID {row.PointID}") + logger.info(f"added second contact for PointID {row.PointID}") except Exception as e: - print( + logger.critical( f"Skipping second contact for PointID {row.PointID} due to validation error: {e}" ) session.rollback() @@ -178,7 +178,7 @@ def add_first_contact(session, row, thing): CreateAddress.model_validate(address_data) contact.addresses.append(Address(**address_data)) except Exception as e: - logger.warning( + logger.critical( f"Skipping physical address for first contact {name}. Validation error: {e}" ) diff --git a/transfers/data/valid_measuring_agency.csv b/transfers/data/valid_measuring_agency.csv new file mode 100644 index 000000000..fa600aad4 --- /dev/null +++ b/transfers/data/valid_measuring_agency.csv @@ -0,0 +1,19 @@ +"MeasuringAgency","valid" +"Bayard",NO +"Bernalillo Cty",NO +"BLM",NO +"NESWCD",NO +"NMBGMR",Yes +"NMED",NO +"NMISC",NO +"NMOSE",NO +"NMT","Yes" +"NPS",Yes +"OSWCD",NO +"PVACD",NO +"SFC",NO +"SNL",Yes +"TSWCD",Yes +"TWDB",NO +"USFS",Yes +"USGS",NO diff --git a/transfers/data/valid_welldata_datasources.csv b/transfers/data/valid_welldata_datasources.csv new file mode 100644 index 000000000..24145751b --- /dev/null +++ b/transfers/data/valid_welldata_datasources.csv @@ -0,0 +1,659 @@ +"DataSource","valid" +"(Author?), 1998, Geohydrology of River Bend Subdivision Taos County, New Mexico, Glorieta Geoscience, Inc. Appendix A. (Full report filed w/TV-121).","Yes" +"1) Author?, 1995, Town of Taos San Juan/Chama Diversion Proj., Phase 2, Vol. 1, Production Well & Observation Well Installation, Testing, and Determination of Aquifer Coefficients, GGI. 2) Water Level","Yes" +"1) Bernalillo County, Sara Chudnoff; 2) San Pedro Creek Estates HOA","Yes" +"1) BLM - Part of the Capitan Aquifer Observation-Well Network","Yes" +"1) BLM, 2) Hiss, W.L. (1973) Capitan Aquifer Observation-Well Network Carlsbad to Jal, NM, OSE Technical Report #38, 3) Sandia Report SAND2018-12018 NM Permian Basin","Yes" +"1) BLM, 2) Hiss, W.L. (1973) Capitan Aquifer Observation-Well Network Carlsbad to Jal, NM, OSE Technical Report #38.","Yes" +"1) Discussion of Geology, Hydrogeol., & H2O Quality of Tailings Area, Molycorp Facility, Taos Cty, NM, 1995, South Pass Resources","Yes" +"1) Discussion of Geology, Hydrogeol., & H2O Quality of Tailings Area, Molycorp Facility, Taos Cty, NM, 1995, South Pass Resources 2) Pre-Design Groundwater Investigation at the Tailing Facil. ARCADIS","Yes" +"1) Drakos, P., Riesterer, J., Lazarus, J., 2007, Drilling and Completion Report, Rio Pueblo 3200 Feet Deep Production Well (RG-37303-S), Taos, NM, GGI (Filed w/TV-171). 2) Water Level Monitoring Prgm.","Yes" +"1) GW3: Geology and Ground-Water Resources of Eddy County, NM (1952) G.E. Hendrickson & R.S. Jones, NM Bureau of Geology; 2) USGS","Yes" +"1) Lowry, T.S., et al. (2018) Water Resource Assessment in the NM Permian Basin, Sandia Report SAND2018-12018, 2) 3) Sandia Natl. Labs Report SAND2021-1869","Yes" +"1) Lowry, T.S., et al. (2018) Water Resource Assessment in the NM Permian Basin, Sandia Report SAND2018-12018, 2) Sandia Natl. Labs Report SAND2021-1869","Yes" +"1) Myers, Everheart, Wilson (1994) Geohydrol. of San Agustin Basin, Alamosa Creek Basin upstream from Monticello Box & Upper Gila Basin in parts of Catron, Socorro & Sierra Cty, NM, USGS WRI 94-4125","Yes" +"1) Sandia National Labs/ BLM Wells, 2) Sandia Natl. Labs Report SAND2021-1869","Yes" +"1) Turner, B., 1996, Water Availability for the El Mirador Subdvn, Taos Cty, NM, Turner Environ. Consult., Appd 2&3 (filed w/TV-229). 2) Vista del Valle report (filed w/TV-153). 3) Drakos, P. 2005, Ge","Yes" +"1) USGS",NO +"1) USGS - WL; 2) Brandvold - WQ","Yes" +"1) USGS - WLs 2) Brandvold -WQ","Yes" +"1) USGS - WLs 2) Brandvold -WQ, 3) OFR-469 Hydrogeology & Water Resources of the Placitas Area","Yes" +"1) USGS 2) BLM, 3) Hiss, W.L. (1973) Capitan Aquifer Observation-Well Network Carlsbad to Jal, NM, OSE Technical Report #38, 4) Sandia National Labs SAND2018-12018 NM Permian Basin","Yes" +"1) USGS 2) David Chace of Hydro Resolutions","Yes" +"1) USGS 2) Hiss, W.L. (1973) Capitan Aquifer Observation-Well Network Carlsbad to Jal, NM, OSE Technical Report #38.","Yes" +"1) USGS 2) San Pedro Creek Estates HOA","Yes" +"1) USGS 2) Sandia National Labs/ BLM Well, 3) Sandia Natl. Labs Report SAND2018-12018 Water Assessment in the NM Permian Basin","Yes" +"1) USGS 2) Sandia National Labs/BLM Well","Yes" +"1) USGS and 2) Data from Lynn Brandvold with NMBGMR chemistry lab, 3) OFR-469 Hydrogeology & Water Resources of the Placitas Area","Yes" +"1) USGS, 2) BLM, 3) Hiss, W.L. (1973) Capitan Aquifer Observation-Well Network Carlsbad to Jal, NM, OSE Technical Report #38, 4) Sandia Report SAND2018-12018 NM Permian Basin","Yes" +"1) USGS, 2) Circular 26: Water Well Records and Well Water Quality in Southwestern San Agustin Plains, Catron Cty, NM (1954) Bushman, F.X. and Valentine, C.P., NMBGMR","Yes" +"1) USGS, 2) OFR-469 Hydrogeology & Water Resources of the Placitas Area","Yes" +"1) USGS, 2) Sandia National Labs Report SAND2018-12018 Water Assessment in the NM Permian Basin","Yes" +"1) USGS, 2) Sandia Natl. Lab Report SAND2018-12018 Water Resource Assessment in the NM Permian Basin.","Yes" +"1) USGS, 2) Sandia Natl. Labs Report SAND2018-12018 Water Assessment in the NM Permian Basin","Yes" +"1) USGS, 2) Sandia Natl. Labs Report SAND2018-12018 Water Assessment in the NM Permian Basin, 3) GW3: Geol. & Groundwater Res. of Eddy Cty. (1952) Hendrickson & Jones, NMBGMR, 4) SNL SAND2021-1869","Yes" +"1) USGS, 2) Sandia Natl. Labs Report SAND2018-12018 Water Assessment in the NM Permian Basin, 3) Sandia Natl. Labs Report SAND2021-1869","Yes" +"1) USGS, 2) Sandia Natl. Labs Report SAND2021-1869","Yes" +"1) Well depth and screen info. from spreadsheet from mayor of Questa. 2) Pre-design groundwater investigation at the tailing facility - Final work plan. April 24, 2013, Arcadis.","Yes" +"AGW Consultants, 12/85, Geohydro of R.San Marcos Property; Balleau GWA, 1999; field check","Yes" +"AGW Consultants, 12/85, Geohydrology of Rancho San Marcos","Yes" +"AGW Consultants, May 1984, Hydrogeology of the Santa Fe Downs Resort Area Near Santa Fe, Santa Fe County, NM","Yes" +"AGWC, Inc., 1983, Hydrogeology of the Great Cloud Zen Center, Oct 1983","Yes" +"Also see: Drakos, P., 2007, Geohydrology of the Estancias Atalaya Subdivision, Taos County, New Mexico, Glorieta Geoscience, Inc. (Filed w/TV-103).","Yes" +"American Ground Water Consultants, 1983, Hydrogeology of the Villa Marika Property, October 1983.","Yes" +"AMP visited this well on 5/25/2022 but we didn't do a well inventory.","Yes" +"ARCADIS Project B0046795.0019, Early Design Actions-Pre-Design Tailing Facility Groundwater Invest. Results from Monitoring Wells MW-43, MW-44 and MW-45 (May 1, 2015).","Yes" +"ARCADIS well/lithologic log","Yes" +"Author (?), 1998, Geohydrology of River Bend Subdivision, Taos County, New Mexico, Glorieta Geoscience, Inc. Also in NMGS Gdbk 55 pg 396.","Yes" +"Balleau Groundwater, 2001, CDEX1 Completion Report","Yes" +"Balleau Groundwater, 2002, CDPROD1 Completion Report, 2/02","Yes" +"Balleau Groundwater, Inc., Oct 2007, Injection Demonstration Well -- Well Completion Report","Yes" +"Balleau Groundwater, Inc., Oct 2007, Observation Well A -- Well Completion Report","Yes" +"Balleau Groundwater, Inc., Oct 2007, Observation Well B -- Well Completion Report","Yes" +"Balleau Groundwater, Inc., written communication, 11/27/2007","Yes" +"Balleau GW, 2002, CDPROD Completion Report; well log","Yes" +"Balleau GWA, 1999; Balleau GWA","Yes" +"Balleau GWA, 1999; field check","Yes" +"Balleau GWA, 1999; field check; Jenkins, 1977, Geohydro Investigation of Turquoise Trail Subdivision","Yes" +"Bernalillo County",NO +"Bernalillo County, Sara Chudnoff",NO +"Bernalillo County, Sara Chudnoff; Screen interval from DBSA Campbell Ranch report",NO +"Bjorklund, L.J. (1957) Reconnaissance of Groundwater Conditions in the Crow Flats Area Otero Cty, NM, OSE Tech Rep 8.","Yes" +"Black & Veatch Consulting Engineers, 1978, Construction and Testing Report Buckman Well No. 2; Camp Dresser & McKee, Inc., Jan 2001, Water Supply Analysis; C. Borchert, written communication, 3/23/09","Yes" +"Black & Veatch Consulting Engrs, 1978, Construction and Testing Rept Buckman Well No. 1; NMED DWB (1999) via Jemez y Sangre Database (2000); Camp Dresser & McKee, Inc., Jan 2001, Water Supply Analysis","Yes" +"Bob Hubbard","Yes" +"Bureau scientists performed a pump test on this well.","Yes" +"C. Borchert, written comm.; WATERS","Yes" +"Carrol Wood, well owner.","Yes" +"Cathie.","Yes" +"CB00107524CCA","Yes" +"CDM completion log to NMED SW Bureau","Yes" +"CDM well completion log to NMED SW Bureau; written communications from NMED SolidWaste Bureau","Yes" +"CH2M Hill report to NMED UST Bureau","Yes" +"CH2M Hill water level measurements at WWTP (entered into db).","Yes" +"Charles Heaton, Sinagua Consultants, 1999, Well Hydrology Report Elmer Garcia Property, Aug 1999; County Records; well log; field check","Yes" +"Charles Walker","Yes" +"Chemistry data from EPA via NM Health Dept.",NO +"Chemistry data from Lynn Brandvold with NMBGMR chemistry lab. NMBGMR visited the site after chem. data input.","Yes" +"Chemistry from EPA via NM Health Dept.",NO +"Chemistry from Matt Sophy","Yes" +"Chemistry in Excel spreadsheet (See documents in Aquifer_mapping\BrackishWater\BW_database\BOR-Desal-Wells)","Yes" +"Circular 26: Water Well Records and Well Water Quality in Southwestern San Agustin Plains, Catron Cty, NM (1954) Bushman, F.X. and Valentine, C.P., NMBGMR","Yes" +"City of Santa Fe; OSE records. NMED DWB (1999) via Jemez y Sangre Database (2000). Shomaker, J.W., 1998, Sustainable Ground-Water Production from City Well Field, Santa Fe, NM, 4/98; CDM, Jan 2001","Yes" +"City of Santa Fe; OSE records. NMED DWB (1999) via Jemez y Sangre Database (2000); Camp Dresser & McKee, Inc., Jan 2001, Water Supply Analysis","Yes" +"City of Santa Fe; OSE records; Camp Dresser & McKee, Inc., Jan 2001, Water Supply Analysis","Yes" +"Claudia Borchert, 2002, MS Thesis","Yes" +"Compiled by Susan VonGonten, NMED UST Bureau","Yes" +"Consulting Professionals, Inc, Hydrogeologic Rept La Tierra Subdn, Phase 4, Santa Fe Cnty, Dec1978","Yes" +"Consulting Professionals, Inc., VeneKlasen, 1975, Hydrogeologic Report for La Tierra Subdivision, 6/75; well log","Yes" +"Cooper, 1991, Geohydro Rept for Country Boarding Kennel, 5/1991","Yes" +"Cooper, 1995, Garcia Ranch report; Wilson, 1978, SFC water plan Table 1-28; field check by Johnson; Camp Dresser & McKee, Inc., Jan 2001, Water Supply Analysis.","Yes" +"Cooper, 1995, rept to Garcia Ranch; Kuckleman, 2003","Yes" +"Cooper, D. R., 1995, Geohydrology Report for Cottonwood Ranch Subdn, Santa Fe Cty, NM, April 1995","Yes" +"Cooper, D. R., 1998, Geohydrology for WK Jones, Santa Fe Cnty, Oct 1998","Yes" +"Cooper, D. R., Geohydrologic Report for Rancho De Los Cuervos, Santa Fe Cnty, Sept1986; Berman Tract","Yes" +"Cooper, D. R., Geohydrology Report for Frank M Gallegos & Andrew M Leyba, Santa Fe Cnty, Oct, 1999","Yes" +"Cooper, D. R., Geohydrology Report for Friendly Construction, Inc., Santa Fe Cnty, July 1994","Yes" +"Cooper, D. R., Geohydrology Report for Tano Vista Grande, Santa Fe Cnty, NM, Nov 1996","Yes" +"Cooper, D. R., Geohydrology Rept for Marvin Pollock & Bettina Lancaster, Santa Fe Cnty, May 1994","Yes" +"Cooper, D.R., Geohydrology Rept for El Prado Subdn, Santa Fe Cnty, Sept 1994","Yes" +"Cooper, D.R., Santa Fe Design Assoc, Geohydrology Rept for Rancho Oso Loco, Santa Fe Cnty, 1985","Yes" +"Cooper, Dennis R., Geohydrology for Rancho De Los Ninos, Santa Fe Cnty, NM, April 1999; Rick Borrego","Yes" +"Cooper, Dennis R., Geohydrology Report for Bob Shipp, Santa Fe County, NM, June 1995","Yes" +"Cooper, Dennis R., Geohydrology Report for Heartstone Development LLC, Dec 2001","Yes" +"Cooper, Dennis R., Geohydrology Report for James B. Alley Jr., Santa Fe Cnty, NM, March 1995","Yes" +"Cooper, Dennis R., Geohydrology Report for Lawrence Tuchman, Santa Fe Cnty, Oct 1994; Frost & Assoc., Santa Fe County WQ Monitoring, June 1996","Yes" +"Cooper, Dennis R., Geohydrology Report For Los Suenos, Santa Fe County, NM, April 1994","Yes" +"Cooper, Dennis R., Geohydrology Rept for Jeffrey Jacobs & Thad Bowman, Santa Fe Cnty, Jan 1996","Yes" +"Cooper, Dennis R., July 1995, Analysis of water levels in wells on Garcia Ranch, unpub consult rept","Yes" +"Cooper, Dennis R., July 1995, Unpub report to Garcia Ranch; well log; WATERS; USGS field notes","Yes" +"Cooper, Dennis, 1990, Geohydrology Report for San Juan Complex Partnership Ltd., Sept 1990; Field check by Johnson; well log; SFO files","Yes" +"Cooper, Dennis, 1993, Geohydrology Rept for Neighbors, Inc., Santa Fe Cnty, Dec 1993; well log Joe Briscoe","Yes" +"Cooper, Dennis, 2000, Geohydro Rept for Roybal Subdivision, Santa Fe Cnty, NM, Oct 2000; field check","Yes" +"Cooper, Dennis, Geohydrol Rept for Hacienda Del Cerezo, Santa Fe Cnty, NM, Jan 1994; well logs","Yes" +"Cooper, Dennis, Geohydrology Rept for B. Howard & J.Morris, Santa Fe Cnty, NM, Dec 1994","Yes" +"Cooper, Dennis,1991, Geohydrology Rept for Sheila Cooper; field check by Johnson","Yes" +"Cooper, Geohydro Report for Land Ventures, LLC, 6/2001; field check by Johnson; well log","Yes" +"Cooper, Geohydrology Rept for Welsh Family Ltd Partnership, Santa Fe Cnty, March 1995","Yes" +"Corbin Consulting, Inc., 2005, Geohydrology Report (RG-27728-S) Longanecker Property. March 8, 2005","Yes" +"Corbin Consulting, Inc., 2005, Geo-Hydrology Report McMillan Subdivision, June 6, 2005","Yes" +"Corbin, J., 2004, Constant Property Geohydrology Report, Corbin Consulting Inc. June 3, 2004. Field checked.","Yes" +"Corbin, James, 2005, Reconnaissance Report McMillan Property. Feb. 28, 2005 (EB-618)","Yes" +"Corbin, James, 2005, Reconnaissance Report McMillan Property. Feb. 28, 2005; (EB-618)","Yes" +"Corbin, James, 2005.","Yes" +"County records; WATERS; drilling log","Yes" +"County records; well log","Yes" +"CT890 also at same site, cinfusing records not sure which well is correct, this one has a log","Yes" +"Cuttings from NMBG. Bill White has cuttings. Geophysics: gamma ray, neutron, 3-arm-caliper, resistivitity, single pt resistance, SP, temperature profile","Yes" +"Dames & Moore, Inc., 1995, Geohydroloy Report Komis Estates for Southwest Surveying Co., Inc., Dec. 1995; J. Corbin personal communication, 2005","Yes" +"Daniel B. Stephens & Associates report on Campbell Ranch subdivision wells","Yes" +"Daniel B. Stevens & Associates consultant report (AMP\data\datasets\Campbell Ranch Bernalillo County)","Yes" +"Darr, M.J., 2006, Geohydrologic Investigation Report: Proposed ""Ocotillo"" Subdivision, Taos County, NM. MJDarrconsult, Inc / Hydroscience Assoc. Inc, 2006, Analysis of Aquifer Test Run Using RG-87080","Yes" +"Darr, M.J., 2008, Geohydrologic Investigation Report: Proposed Los Llanos Subdivision, Taos County, New Mexico, MJDarrconsult, Inc.","Yes" +"Darr, Michael J., 2007, Geohydrologic Investigation Report: Proposed ""Golf Country"" Subdivision, Taos County, New Mexico, MJDarrconsult, Inc.","Yes" +"Data from Groundwater Report 2: Geology & Groundwater Resources of San Miguel County, NM. (1951) NMBGMR by R.L. Griggs and G.E. Hendrickson.","Yes" +"Data from Lynn Brandvold with NMBGMR chemistry lab.","Yes" +"Data from Lynn Brandvold with NMBGMR chemistry lab., OFR-469 Hydrogeology & Water Resources of the Placitas Area","Yes" +"Data from owner well testing via NMBGMR water lab.","Yes" +"David Chace of Hydro Resolutions","Yes" +"David Jenkins, Geohydrology of the Los Vaqueros Subdn, Santa Fe Cnty, May 1983","Yes" +"David N Jenkins, Geohydrolgoy of the Las Dos, Phase II Area, Santa Fe County, NM, October 1982","Yes" +"David N Jenkins, Geohydrologic Conditions at the San Juan Residences, Santa Fe Cnty, April 1982","Yes" +"David N Jenkins, Geohydrology of the Los Vaqueros Subdn, Santa Fe Cnty, May 1983","Yes" +"David N Jenkins, Geohydrology of the Los Vaqueros Subdn, Santa Fe Cnty, May 1983;","Yes" +"David N Jenkins, Geohydrology of the Los Vaqueros Subdn, Santa Fe Cnty, May 1983; Steinberger log of R1 test hole, K.Summers files","Yes" +"David N Jenkins, Geohydrology of the Los Vaqueros Subdn, Santa Fe Cnty, May 1983; WK Summers project files","Yes" +"David N Jenkins, Geohydrology of the Vista Subdivision, Santa Fe County, Dec 1979","Yes" +"David N Jenkins, Geohydrology of the Vista Subdivision, Santa Fe County, Dec 1979; Mourant; Spiegel & Baldwin, p 241","Yes" +"David N Jenkins, Geohydrology of the Vista Subdivision, Santa Fe County, Dec 1979; WATERS","Yes" +"David N. Jenkins, Geohydrologic Conditions at the Thorpe Condominiums, Santa Fe Cnty, Nov 1982","Yes" +"David Updegraff & William Lyons, 1978, Geohydrology of the Hyde Park Estates Unit 3 Subdiv'n, Aug 1978","Yes" +"DBStephens report to NMED UST Bureau","Yes" +"depth made up by GCR based on nearby wells, no actual data","Yes" +"depth made up by GCR, no actual data, assume similar to well K-14 (UC 30)","Yes" +"Discussion of Geology, Hydrogeology, and Water Quality of the Tailings Area, Molycorp Facility, Taos County, NM, 1995, South Pass Resources, Inc.","Yes" +"Drakos, P. & Hodgins, M., 2000, Drilling and Testing Report, Bureau of Reclamation 2000-Feet Deep Nested Piezometer/Exploratory Well (BOR #1), Taos, NM, GGI. Also, Water Level Monitoring Prgm. 2002-2","Yes" +"Drakos, P. and Hodgins, M., 2000, Drilling and Testing Report, Bureau of Reclamation 2000-Feet Deep Nested Piezometer/Exploratory Well (BOR #1), Taos, NM, Glorieta Geoscience, Inc. Also, Water Level","Yes" +"Drakos, P., 2007, Geohydrology of the Estancias Atalaya Subdivision, Taos County, New Mexico, Glorieta Geoscience, Inc.","Yes" +"Drakos, P., et al., 2004, Hydrologic Characteristics of Basin-Fill Aquifers in the Southern San Luis Basin, NM, NMGS Guidebook 55, pg. 391.","Yes" +"Drakos, P., Hodgins, M., 2000, Drilling & Testing Report, Bureau of Reclamation 2000-Ft. Deep Nested Piezometer/Exploratory Well (BOR #1), Taos, NM, GGI. 2) Water Level Monitoring Prgm. 2002-2007, GGI","Yes" +"Drakos, P., Hodgins, M., Lazarus, J. & Riesterer, J, 2002, Drilling & Testing Report, BOR 2000-Ft. Deep Nested Piezometer/Expl. Well (BOR-2) & 2100-Ft. Deep Production Well (BOR-3), Paseo del Canon We","Yes" +"Drakos, P., Hodgins, M., Lazarus, J. and Riesterer, J, 2002, Drilling & Testing Report, BOR 2000-Feet Deep Nested Piezometer/Exploratory Well (BOR-2) & 2100-Feet Deep Production Well (BOR-3), Paseo de","Yes" +"Drakos, P., Riesterer, J., and Lazarus, J., 2007, Drilling and Completion Report, Rio Pueblo 3200 Feet Deep Production Well (RG-37303-S), Taos, NM, Glorieta Geoscience, Inc. Also, Water Level Monitor","Yes" +"Driller's log; OSE network WLs","Yes" +"dubiousOSE match, depth and location are off","Yes" +"Duncan, 2004.","Yes" +"Duncan, 2004; field check by Johnson 12-22-05","Yes" +"Duncan, 2004; Frost, 1999, ElDorado Area Water & Sanitation District Project files","Yes" +"Duncan, 2004; J.Frost, 1999, Eldorado Area WQ study","Yes" +"Duncan, 2004; J.Frost, 1999, Eldorado Area WQ study.","Yes" +"Duncan, 2004; JSAI, 2001, App. #6","Yes" +"Exploratory & Shallow Well Drilling Rio Grande Watershed Study-Phase 1 San Acacia Surface Water/Groundwater Investigation (Dec. 5, 2003) S.S. Papadopulos & Associates for US Army Corps of Engineer","Yes" +"Faith Engineering, Inc., 1994, Pump Test Report for the Alto St Well, 12/5/94","Yes" +"Field check by Johnson","Yes" +"Field check by Johnson, Cruz, Frost; Camp Dresser & McKee, Inc., Jan 2001, Water Supply Analysis; D.Koning log review","Yes" +"Field check by Johnson; Cooper, 1995, report to Garcia Ranch; Borton field notes","Yes" +"Field check by Johnson; Kuckleman Pump Service, report of visit 2/14/2002","Yes" +"Field check by Johnson; Kuckleman Pump Service, report of visit 7/2/98","Yes" +"Field check by Johnson; owner info","Yes" +"Field check by Johnson; WATERS","Yes" +"Field check by Johnson; WATERS; Mourant","Yes" +"Field check by Johnson; WATERS; sample site for Anderholm, 1994 USGS WRI Report 94-4078","Yes" +"Field check by Johnson; well log","Yes" +"Field check by Johnson; well log; owner","Yes" +"Field check by Johnson; well log; SFO files","Yes" +"Field check by Johnson; well record","Yes" +"Field check by Johnson; well/owner records","Yes" +"Field check by Lyman","Yes" +"Field check with Lyman and BLM realtor Hal Knox; plat map","Yes" +"Field check, WATERS","Yes" +"Field check; owner","Yes" +"Field check; owner; well log","Yes" +"Field check; WATERS","Yes" +"Field check; WATERS. OSE Well Record.","Yes" +"Field check; WATERS.OSE Well Record.","Yes" +"Field check; well log","Yes" +"Field check; well logg","Yes" +"Field check; well record","Yes" +"Field checked","Yes" +"Field checked, WATERS","Yes" +"Field checked, Well owners recollection of well info","Yes" +"Field checked. WATERS. OSE Well Record.","Yes" +"Field checked; WATERS","Yes" +"Field checked; WATERS. OSE Well Record.","Yes" +"Field checks; WATERS; well record.","Yes" +"Finch & Petronis (JS&A), Sept. 2006, Hydrogeologic Report for the Galisteo Basin Preserve, Santa Fe County, NM, for Commonweal Conservancy, unpub. consultant report","Yes" +"Finch, S.T., Jr., 2001, Hydrogeologic Evaluation of T-255 Et. Al., Near Carrizozo, New Mexico, John Shomaker & Associates, Inc.","Yes" +"Finch, Steven T., and Melis, Erwin A., October 2008, Hydrogeologic evaluation of ground-water supply for the Spaceport America Site near Upham, NM, John Shomaker & Associates.","Yes" +"Fleming, WM, Geohydrology Report for the Matthews Property, Santa Fe County, July 26, 1991","Yes" +"Foreman","Yes" +"Frost MWB notes, 1994","Yes" +"Frost MWB Survey notes","Yes" +"Frost, 1996, Santa Fe Cnty Ground Water Levels, 1995-96 Results; GWSI; USGS log books; well record","Yes" +"Frost, 1996, Santa Fe County Ground Water Levels, 1995-96 Results, Jan 1996","Yes" +"Frost, 1996, Santa Fe County Ground Water Levels, 1995-96 Results, Jan 1996; field check","Yes" +"Frost, 1996, Santa Fe County Ground Water Levels, 1995-96 Results, Jan 1996; Lewis database; NMED DWB (1999) via Jemez y Sangre Database (2000)","Yes" +"Frost, 1996, Santa Fe County Ground Water Levels, 1995-96 Results, Jan 1996; Mourant","Yes" +"Frost, 1996, Santa Fe County Ground Water Levels, 1995-96 Results; Mourant; GWSI; fieldchk by Johnso","Yes" +"Frost, 1996, Santa Fe County Ground Water Levels, 1995-96 Results; Mourant; GWSI; fieldchk by Johnson","Yes" +"Frost, 1996, Santa Fe County Ground Water Levels, 1995-96 Results; Mourant; GWSI; well record","Yes" +"Frost, 1999; WATERS","Yes" +"Frost, MWB Survey notes; D.Koning log review","Yes" +"Full EPA ID #TB-B011-150811-21","Yes" +"Full EPA ID #TB-B023-150814-021","Yes" +"Full EPA ID #TD-D001-150812-21","Yes" +"Full EPA ID #TD-D003-150812-21","Yes" +"Garrabrant, L.A., 1993, Water resources of Taos County, NM: USGS WRIR 93-4107.","Yes" +"Geohydrologic Assessment of the Augustin Plains Ranch Area, NM (Tech. Memorandum), March 2, 2012, Geoscience. Cuttings archived in our core shed.","Yes" +"Geohydrologic Assessment of the Augustin Plains Ranch Area, NM (Tech. Memorandum), March 2, 2012, Geoscience. Pump test from driller (JSAI). Cuttings/chip boards archived in our core shed.","Yes" +"Geohydrology Assoc., Inc. 1983, Geohydrology of Rancho Viejo Prop, SFC, NM, Feb 1983, LMCoons","Yes" +"Geohydrology Assoc., Inc. 1983, Geohydrology of Rancho Viejo Prop, SFC, NM, Feb 1983, LMCoons; map","Yes" +"Geohydrology Assoc., Inc. lithologic log to NMED SW Bureau; field check by Johnson","Yes" +"Geohydrology Assoc., Inc., 1988, Hydrogeologic Investigation of Cottonwood Estates, 2//88; WATERS","Yes" +"Geophysics: dual induction guard, dual spaced neutron,microlog, high-resol temp log. WQ: Sorrell, John D. and Banet, Christopher, Karavas Tract Exploratory Well, Nov. 1993, Bureau of Indian Affairs.","Yes" +"GGI","Yes" +"GGI report (has WQ sample). Requested from P. Drakos; have not received response.","Yes" +"GGI report for NMED UST Bureau","Yes" +"GGI report to NMED UST Bureau","Yes" +"GGI reports: 1) 2001 report on RP-2500 in Town of Taos, 2) Water Level Monitoring","Yes" +"GGI, Geohydrology of the Woods Property, Santa Fe Cnty, NM,3/19/92; Sangre de Cristo Estates rept","Yes" +"GGI, 100-Yr Water Availability Santa Fe Metro Center, 12/01; AND La Cienega de Santa Fe Proj, 10/91","Yes" +"GGI, 1988, Geohydrology of the Picture Rock Development Co. Property, Santa Fe, May, 1988.","Yes" +"GGI, 1989, Geohydrology of the Baird Joint Venture Property, Taos County, NM, Glorieta Geoscience, Inc.","Yes" +"GGI, 1989, Reconnaissance Geohydrology of the Lumpkins Property, Santa Fe County, NM, August 1989","Yes" +"GGI, 1990, Geohydrology of the Bajo Del Cielo Subdivision, Santa Fe County, NM. Dec. 1990","Yes" +"GGI, 1990, Geohydrology of the Beaver and Henry Properties, Santa Fe Cnty, Aug 1990","Yes" +"GGI, 1991, Geohydrology of the Walker Property, Santa Fe, May, 1991.","Yes" +"GGI, 1995, Geohydrology of the Santa Fe Opera Tract Prop, Santa Fe Cnty, 3/95; G.Ellis; well log","Yes" +"GGI, 1995, Geohydrology of the Vereda Serena Property, Santa Fe, October, 1995.","Yes" +"GGI, 1995, Production well and observation well installation, testing, and determination of aquifer coefficients: unpub consultant report for Town of Taos, March 1995","Yes" +"GGI, 1998, Ground Water Conditions in the Vicinity of the Gonzales Tract San Marcos Arroyo Santa Fe County, NM, Dec. 1998","Yes" +"GGI, 2001, Geohydrologic report for the Village at Eldorado, July, 2001.","Yes" +"GGI, 2001, Vista del Valle Subdivision Report, Taos County, New Mexico","Yes" +"GGI, 2002, Addendum To: Reconnaissance Geohydrologic Characterization of Tesuque Ridge, 8/28/2002","Yes" +"GGI, 2002, Reconnaissance Geohydrologic Characterization of Tesuque Ridge Subdivn, 7/17/02","Yes" +"GGI, 2003, Geohydrologic Report for the Luna Rosa LLC Equestrian Center Property, July 2003.","Yes" +"GGI, 2003, Reconnaissance Geohydrology report of the Clements Property, Santa Fe, April, 2003.","Yes" +"GGI, 2003, Reconnaissance Water Availability Assessment of the Santa Fe Waldorf School - High School","Yes" +"GGI, 2004, Geohydrology of the Estancia Subdivision, Santa Fe County, December, 2004","Yes" +"GGI, 2004, Reconnaissance Geohydrology Report for the Beaty Property, Santa Fe Cty, Dec. 22, 2004.","Yes" +"GGI, Chapter VI Geohydrology of the La Cienega de Santa Fe Project, Oct 1991; GGI, 100-Yr Water Availability, Downs at Santa Fe, March 2001 for Pojoaque Pueblo Development Corp","Yes" +"GGI, Geohydro of Naiche Property, 12/92; field check by Johnson; well recd","Yes" +"GGI, Geohydrologic report for the Rancho San Lucas Subdivision, Feb 2002","Yes" +"GGI, Geohydrology of La Canada Subdivision, Santa Fe County, NM, July 1985","Yes" +"GGI, Geohydrology of Pop's Convenience Store, Santa Fe County, NM, Sept 29, 1997","Yes" +"GGI, Geohydrology of the Brenner Property, Santa Fe County, NM, Aug 1990","Yes" +"GGI, Geohydrology of the Bryant Prop, Santa Fe Cnty, May 1995; GGI, San Ysidro de Tesuque, May 1990","Yes" +"GGI, Geohydrology of the Bryant Property, Santa Fe County, NM, May 1995; GGI, 1989","Yes" +"GGI, Geohydrology of the Circle Drive Compound Prop, Santa Fe Cnty, May 1991","Yes" +"GGI, Geohydrology of the Hansen Property, Santa Fe County, NM, June 1990","Yes" +"GGI, Geohydrology of the Insight Investments Property, Santa Fe Cnty, NM, 2/20/90","Yes" +"GGI, Geohydrology of the Lane Property, Santa Fe Cnty, NM, 4/29/92","Yes" +"GGI, Geohydrology of the McElvain/Patania Property, 6/92","Yes" +"GGI, Geohydrology of the McMahon Property, Santa Fe Cnty, Oct 1990","Yes" +"GGI, Geohydrology of the McMahon Property, Santa Fe Cnty, Oct 1990; GGI, Geohydrology of the Santa Fe Arroyo Hondo Vistas Subdivision, SFe County, Aug. 1989","Yes" +"GGI, Geohydrology of the Migel Property, Santa Fe Cnty, 2/90; GGI, Geohydro of McMahon Prop 10/90","Yes" +"GGI, Geohydrology of the Mountain Vista Subdivision, Santa Fe County, July 10, 2002","Yes" +"GGI, Geohydrology of the Myers Property, Santa Fe Cnty, July 1992","Yes" +"GGI, Geohydrology of the Naiche Property, Santa Fe County, NM, Dec 1992","Yes" +"GGI, Geohydrology of the Prince Property, 8/91; McElvain-Patania Prop, 6/92","Yes" +"GGI, Geohydrology of the Santa Fe Animal Shelter Site, Santa Fe County, NM, May 15, 2002","Yes" +"GGI, Geohydrology of the Santa Fe Opera Tr, Santa Fe Cnty, 3/95; GGI, San Ysidro de Tesuque, 5/90","Yes" +"GGI, Geohydrology of the Shulman Property, Santa Fe Cnty, April 1990","Yes" +"GGI, Geohydrology of the Vrtiak Property, Santa Fe Cnty, June, 1991","Yes" +"GGI, Geohydrology of the West Alameda Proj, Santa Fe Cnty, NM, Jan 1989","Yes" +"GGI, Geohydrology of the Woods Property, Santa Fe Cnty, March 19, 1992","Yes" +"GGI, Geohydrology of the Yamada Property, Santa Fe Cnty, Oct 14, 1994; GGI, Bryant Prop; WATERS","Yes" +"GGI, Geohydrology of the Yamada Property, Santa Fe Cnty, Oct, 1994; GGI, Sangre de Cr Est, Jan 1989","Yes" +"GGI, Geohydrology Rept for Rancho San Lucas, Santa Fe Cnty, NM, Feb 2002; Geophysical logs","Yes" +"GGI, January 2005 Alexsis Geohydrology report (by Meghan Hodgins).","Yes" +"GGI, Reconnaissance Geohydrology Report, Leibman Property, Santa Fe County, NM. March 23, 1994","Yes" +"GGI, Reconnaissance Geohydrology Report, Neufeld Property, Santa Fe Cnty, Nov 1988","Yes" +"Glorieta Geoscience Inc.","Yes" +"Glorieta Geoscience, Inc., 2006, Geohydrology and Water Availability for Phase 1, Santa Fe Canyon Ranch Subdivision, Santa Fe County, NM, March 22, 2006.","Yes" +"GW-1: Geology & Ground-Water Resources of the Eastern Part of Colfax Cty, NM (1948) Griggs, Roy L., NMBGMR","Yes" +"GW3: Geology and Ground-Water Resources of Eddy County, NM (1952) G.E. Hendrickson & R.S. Jones, NM Bureau of Geology","Yes" +"GW-4: Geology & Groundwater Res. of NE Socorro Cty, NM (1955) Spiegel, Zane, NM Bureau of Geology","Yes" +"GW5: Geology and Ground-Water Resources of Torrance County, NM (1957) R.E. Smith, NM Bureau of Geology","Yes" +"GW9: Groundwater Resources & Geology of Quay County, NM (1966) Charles Berkstresser, Jr. & Walter A. Mourant, NM Bureau of Geology","Yes" +"GWSI","Yes" +"GWSI/USGS well sheet; field check by Johnson","Yes" +"GWSI/USGS well sheet; field check by Johnson; D.Koning log review","Yes" +"GWSI/USGS well sheet; OFR 89-37; field check by Johnson; D.Koning log review","Yes" +"GWSI/USGS well sheet; WATERS","Yes" +"GWSI/USGS well sheet; WATERS; Cooper, 1995; field check by Johnson","Yes" +"GWSI/USGS well sheet; WATERS; field check by Johnson","Yes" +"GWSI/USGS well sheet; well record; field check by Johnson","Yes" +"GWSI/USGS well sheet; well record; field check by Johnson.","Yes" +"GWSI; D.Koning log review","Yes" +"GWSI; D.Koning log review; D.Koning log review","Yes" +"GWSI; field check by Johnson","Yes" +"GWSI; field check by Johnson; D.Koning log review","Yes" +"GWSI; field check Johnson","Yes" +"GWSI; Mourant; well record; field check by Johnson","Yes" +"GWSI; USGS log books; field check by Johnson","Yes" +"GWSI; USGS log sheets; field check by Johnson; field check by Lyman and SFC Utilities","Yes" +"GWSI; USGS log sheets; well log; field check by Johnson","Yes" +"GWSI; USGS log sheets; well record; field check by Johnson","Yes" +"GWSI; USGS log sheets; well record; field check by Johnson; field check by Lyman and SFC Utilities","Yes" +"GWSI; USGS logbooks; field check by Johnson","Yes" +"GWSI; USGS logbooks; Frost, 1996, Santa Fe County GWLs, 1995-96 Results, 1/96; K.Summers notes from 11/16/70 aquifer test; Frost, 1999, written comm.","Yes" +"GWSI; USGS well sheet; field check by Johnson","Yes" +"GWSI; USGS well sheet; well log; Johnson, 2003; VeneKlasen, 2/86, Geohydro Rept Arroyo Hondo West","Yes" +"GWSI; USGS well sheets; field check by Johnson","Yes" +"GWSI; water right declaration; field check by Johnson","Yes" +"GWSI; water right declaration; field check Johnson; Aqua Drilling well log. WQ from Longmire","Yes" +"GWSI; WATERS","Yes" +"GWSI; well log; field check by Johnson","Yes" +"GWSI; well record; field check by Johnson","Yes" +"Hall, J., 2010, Blackstone Ranch Well RG-82913 48-hr Pumping Test, Taos, NM, GGI.","Yes" +"Heaton (Sinagua Consultants), Well Hydro Report Capitol Ford Body Shop, Jan 1999","Yes" +"Hiss, W.L. (1973) Capitan Aquifer Observation-Well Network Carlsbad to Jal, NM, OSE Technical Report #38.","Yes" +"Hood, J.W. and Kister, L.R. (1962) Saline-Water Resources of NM. USGS Water-Supply Paper 1601","Yes" +"Hood, J.W. and Kister, L.R. (1962) Saline-Water Resources of NM. USGS Water-Supply Paper 1601; Bjorklund, L.J. (1957) Recon. of Groundwater Conditions in Crow Flats Area Otero Cty, NM, OSE Tech Rep 8","Yes" +"Hood, J.W. and Kister, L.R. (1962) Saline-Water Resources of NM. USGS Water-Supply Paper 1601; Bjorklund, L.J. (1957) Recon. of Groundwater Conditions in Crow Flats Area Otero Cty, NM, OSE Tech Rep 8.","Yes" +"HR-1: Geology & Ground-Water Resources of Central & Western Dona Ana County, NM (1971) King, W.E., Hawley, J.W., Taylor, A.M. and Wilson, R.P. New Mexico Bureau of Geology","Yes" +"HR5: Groundwater in the Sandia and Northern Manzano Mtns, NM (1980) Frank B. Titus, NM Bureau of Geology","Yes" +"Huff, G.F. (1996) Analysis of Ground-water data for selected wells near Holloman AFB, NM, 1950-1995. USGS WRIR-96-4116.","Yes" +"Hydrogeology and Underflow Estimates in the Vicinity of the Proposed Guadalupe Mountain Tailings Facility, Dames & Moore, 1988.","Yes" +"Hydrogeology and Underflow Estimates in the Vicinity of the Proposed Guadalupe Mountain Tailings Facility, Dames & Moore, March 17, 1988.","Yes" +"Hydrologic and hydrogeologic analysis for the Guadalupe Mtn. ground-water discharge plan. June 1984, Water Resources Associates, Inc.","Yes" +"Hydroscience Associates, Inc., 2006, Analysis of Aquifer Test Run Using Well RG-87082, Taos County, New Mexico. Lauren Sherson established USGS Site ID for the NGWMN project (5/29/18 - KP).","Yes" +"Info. from technical memorandums on construction\development of supply & observation wells. (See documents in Aquifer_mapping\BrackishWater\BW_database\BOR-Desal-Wells)","Yes" +"Info. from technical memorandums on construction\development of supply & observation wells. Chemistry in Excel spreadsheet (See documents in Aquifer_mapping\BrackishWater\BW_database\BOR-Desal-Wells)","Yes" +"Information as personal communication from GGI","Yes" +"Inventoried previously on 4/21/2015 as part of Clovis-Portales project","Yes" +"Inventoried previously on 6/2/2015 as part of Clovis-Portales project","Yes" +"J. Corbin, 2007 written communication","Yes" +"J. Corbin, 2007, written communication","Yes" +"J.Frost, 1999; WATERS","Yes" +"Jemez y Sangre (2000); NMED DWB Info Sheet; WATERS","Yes" +"Jenkins, 1979, Geohydrology of the Vista Subdivn, 12/79; C.A. Coonce & Assoc., 1977, Montoya Subdivn Water Availability Study for Cipriano Martinez, 12/77","Yes" +"Jenkins, 1980, Geohydro Rept for Rancho Caballero; IN Jenkins 1982, Geohydro Las Cuadras de Ocate","Yes" +"Jenkins, 1980, Geohydro Rept for Rancho Caballero; IN Jenkins 1982, Geohydro Las Cuadras de Ocate. also Jenkins, Dec 1979, Geohydrology of the Vista Subdivision","Yes" +"Jenkins, D.L., 1978, Supplemental Geohydrologic Data for the Proposed Los Caminitos Subdivision, Phase 1, Santa Fe, NM. Sept. 1978","Yes" +"Jenkins, D.L., 1978, Supplemental Geohydrologic Data for the Proposed Los Caminitos Subdivision, Phase 1, Santa Fe, NM. Sept. 1978. OSE Well Record.","Yes" +"Jenkins, David,- Geohydrologic Investigation of the Turquoise Trail Subdivision, SF Cnty, July 1977","Yes" +"Jenkins, July 1977, Geohydrologic Investigation of Turquoise Trail Subdvn","Yes" +"Jenkins, July 1977, Geohydrologic Investigation of Turquoise Trail Subdvn; Corbin Consulting, Inc., Mar 8, 2005, Geohydrology Report Longanecker Property","Yes" +"JHA, May 2004, Well Report Buckman Wells No. 10-13, City of Santa Fe","Yes" +"John Shomaker & Assoc., April 1995, Well report Sangre de Cristo Water Company Buckman Well No. 3a; Camp Dresser & McKee, Inc., Jan 2001, Water Supply Analysis; C.Borchert, 3/23/09, written comm.","Yes" +"John Shomaker & Assoc, 1999, Well Report: Drilling, Construction, & Testing Hickox Well No. 2, 5/99; Camp Dresser & McKee, Inc., Jan 2001, Water Supply Analysis; D.Koning review","Yes" +"Johnson, P., et al. (2005) Hydrogeology & Water Resource Assessment of the Pueblo of Picuris, Taos County, NM. NMBGMR","Yes" +"Johnson, P., et al. (2005) Hydrogeology & Water Resource Assessment of the Pueblo of Picuris, Taos County, NM. NMBGMR.","Yes" +"JSA completion log to NMED SW Bureau; written communications from NMED SolidWaste Bureau","Yes" +"JSAI Well report for Proposed Desalination Well Field, City of Alamogordo, NM. June 2006.","Yes" +"Kendall Taylor","Yes" +"Kendall Taylor and drill log","Yes" +"Kendall Taylor; OSE well log","Yes" +"L. Sherson @ USGS determined that all but one water level taken by contractors for OSE at 334819108084801 were really taken from this location 334819108084601. Level on 9/25/2008 was at *4801 NM-15416","Yes" +"Lauren Sherson established USGS Site ID for the NGWMN project (5/29/18 - KP).","Yes" +"Lauren Sherson established USGS Site ID for the NGWMN project (5/29/18 - KP). Part of OSE network, so thought it would have been in their system already.","Yes" +"Lewis database of city wells; field check by Johnson; Camp Dresser & McKee, Inc., Jan 2001, Water Supply Analysis","Yes" +"Lewis database, 2001; Faith Engineering, Inc., 1994, Pump Test Report for the Alto St Well, 12/5/94; Shomaker, J.W., 1998, Sustainable Ground-Water Production from City Well Field, Santa Fe, NM, 4/98","Yes" +"Lithlog personal communication w/GGI.","Yes" +"local individuals: Layne Preslar, Bob Hubbard","Yes" +"Longmire, Patrick, July 1985, Hydrogeochemical Study Along the Santa Fe River; field check","Yes" +"Longmire, Patrick, July 1985. A Hydrogeochemical Study Along the Valley of the Santa Fe River","Yes" +"Lou Wilkerson","Yes" +"Lowry, T.S., et al. (2018) Water Resource Assessment in the NM Permian Basin, Sandia Report SAND2018-12018","Yes" +"M.J. Darr consulting letter to Roy Cunnyngham, 2006.","Yes" +"M.J. Darr consulting letter to Roy Cunnyngham, 2006. References additional well tests by M.J. Darr.","Yes" +"Mark Defibaugh","Yes" +"Martinez Surveying Co., [Hydrogeologic Report for] Miller Subdivision, Jan 1984","Yes" +"McCoy, Annie M. and Peery, Roger, 2008, Water-Availability Assessment for Miranda Canyon Preserve Subdivision, Taos County, NM, John Shomaker & Associates. Full report in file called ""Reports w/multi","Yes" +"McCoy, Annie M. and Peery, Roger, 2008, Water-Availability Assessment for Miranda Canyon Preserve Subdivision, Taos County, NM, John Shomaker & Associates. Full report in file called ""Reports w/multip","Yes" +"McLean, J.S. (1970) Saline Ground-Water Resources of the Tularosa Basin, NM. Office of Saline Water, R&D Progress Rpt 561","Yes" +"Meyers et al, 1994, USGS WRI 94-4125","Yes" +"Meyers et al, 1994, USGS WRI 94-4125 (1980 water level)","Yes" +"MJ Darr (July 2006) Pump Test of WL-0007.","Yes" +"Mourant; GWSI; field check by Johnson; USGS well schedules","Yes" +"Mourant; GWSI; field check by Johnson; well log.","Yes" +"MS thesis by Sigstedt, S. (2010) Environmental Tracers in Groundwater of the Salt Basin, NM and Implications for Water Resources","Yes" +"Myers, Everheart, Wilson (1994) Geohydrol. of San Agustin Basin, Alamosa Creek Basin upstream from Monticello Box & Upper Gila Basin in parts of Catron, Socorro & Sierra Cty, NM, USGS WRI 94-4125","Yes" +"Myers, Everheart, Wilson (1994) Geohydrol. of San Agustin Basin, Alamosa Creek Basin upstream from Monticello Box & Upper Gila Basin in parts of Catron/Socorro/Sierra Cty, NM, USGS WRI 94-4125","Yes" +"NA03200901BBB","Yes" +"NA03200912ACC","Yes" +"NA03201066BBB","Yes" +"NA03300814CCC","Yes" +"NA03300914CCC","Yes" +"NA03300921CCC","Yes" +"NA03300922ACC","Yes" +"NA03300933CAB","Yes" +"NA03300933CAB2","Yes" +"NA03300935DBB","Yes" +"NA03300936DBB","Yes" +"NA03301014DDD","Yes" +"NA03301019CCD","Yes" +"NA03301020CCB","Yes" +"NMBG","Yes" +"NMBGMR","Yes" +"NMBGMR & USGS","Yes" +"NMED DWB (1999) via Jemez y Sangre Database (2000). Shomaker, J.W., 1998, Sustainable Ground-Water Production from City Well Field, Santa Fe, NM, 4/98; Camp Dresser & McKee, Jan. 2000,","Yes" +"NMED DWB (1999) via Jemez y Sangre Database (2000); OSE 2005 WL field sheets; WATERS","Yes" +"NMED DWB (1999) via Jemez y Sangre Database (2000); WATERS","Yes" +"NMED DWB (1999) via Jemez y Sangre Database (2000); WATERS. OSE Well Record.","Yes" +"NMED DWB (1999) via Jemez y Sangre Database (2000); WATERS; J. Corbin, written communication, 2007","Yes" +"NMED DWB (1999) via Jemez y Sangre Database (2000); WATERS; K. Summers project files; JSAI, 2001,App. #6","Yes" +"NMED DWB (1999) via Jemez y Sangre Database (2000); WATERS; K.Summers project files; JSAI (2001) App. #6","Yes" +"NMED DWB (1999) via Jemez y Sangre Database (2000); WATERS; K.Summers project files; Minton log and pump test; JS&A, 2001 well log and water levels","Yes" +"NMED DWB (1999) via Jemez y Sangre Database (2000); WATERS; Summer's project files; Minton log; Frost, 1996, Review of El Dorado area water production and GW resource, June '96; JSAI, 2001, App. #6","Yes" +"NMED Solid Waste Bureau monitoring reports.","Yes" +"NMED Spring Survey and Monitor Well Survey","Yes" +"NMED SW Bureau data report, URS Corp.; written communications from NMED SolidWaste Bureau","Yes" +"NMED SWP Atlas online","Yes" +"NMOSE POD only","Yes" +"NMOSE Well log","Yes" +"No well inventory form for this site. Just coordinates, photo and well log.","Yes" +"NRCS Well development document (Excel spreadsheet)","Yes" +"OCD AP-100 report by Conestoga-Rovers & Associates","Yes" +"OCD AP-101 Report by Arcadis U.S. Inc.","Yes" +"OCD AP-104 Report by Conestoga-Rovers and Associates","Yes" +"OCD AP-105 Report by GHD","Yes" +"OCD AP-107 Report by Arcadis U.S. Inc","Yes" +"OCD AP-112 Report by Larson & Associates, Inc. ","Yes" +"OCD AP-114 Report by Tasman Geosciences","Yes" +"OCD AP-115 Report by Conestoga-Rovers and Associates","Yes" +"OCD AP-118 Report by GHD","Yes" +"OCD AP-120 Report by GHD Services Inc.","Yes" +"OCD AP-56 Report by GHD","Yes" +"OCD AP-62 Report by R.T. Hicks Consultants, Ltd","Yes" +"OCD AP-71 Report by Rice Operating Company","Yes" +"OCD AP-73 Report by Enviro Clean Cardinal LLC","Yes" +"OCD AP-75 Report by Rice Environmental Consulting & Safety, LLC","Yes" +"OCD AP-87 Report by by Tetra Tech","Yes" +"OCD AP-88 Report by Tetra Tech","Yes" +"OCD AP-91 Report by Talon/LPE","Yes" +"OCD AP-94 Report by Tetra Tech","Yes" +"OCD AP-95 report by Tetra Tech","Yes" +"OFR-469 Hydrogeology & Water Resources of the Placitas Area","Yes" +"OFR-51: Hydrogeology of the San Agustin Plains, NM (1973) Blodgett, Daniel D. and Titus, Frank B., NMBGMR","Yes" +"Onwer","Yes" +"Original data and chemistry from Lynn Brandvold with NMBGMR chemistry lab. We visited site in July 2015 took GPS location and found well record.","Yes" +"OSE","Yes" +"OSE and Foreman.","Yes" +"OSE database. Lauren Sherson established USGS Site ID for the NGWMN project (5/29/18 - KP).","Yes" +"OSE field notes","Yes" +"OSE field sheet","Yes" +"OSE macth doubtful, usgs depth is much different, 311 vs 375","Yes" +"OSE POD record","Yes" +"OSE POD record.","Yes" +"OSE Record and owner recollection","Yes" +"OSE records","Yes" +"OSE records and owner recollection.","Yes" +"OSE records and well owner records.","Yes" +"OSE records online.","Yes" +"OSE Records, some info from well owner","Yes" +"OSE Records, well owner provided info.","Yes" +"OSE Records, well owner recollection.","Yes" +"OSE Records.","Yes" +"OSE Records. Gary Goss at TWSD.","Yes" +"OSE records. PN031 may not be it. Well is very old.","Yes" +"OSE WATERS site","Yes" +"OSE website","Yes" +"OSE website info, no well record. Meyers et al, 1994, USGS WRI 94-4125","Yes" +"OSE website, no well record.","Yes" +"OSE website, no well record. Meyers et al, 1994, USGS WRI 94-4125","Yes" +"OSE website, well record available at OSE office.","Yes" +"OSE website, well record maybe available at OSE office.","Yes" +"OSE Well Log and PNM Public Water System Information Sheet; Camp Dresser & McKee, Inc., Jan 2001, Water Supply Analysis; C. Borchert, written communication, 3/23/09","Yes" +"OSE Well Log and PNM Public Water System Information Sheet; NMED DWB (1999) via Jemez y Sangre Database (2000); Camp Dresser & McKee, Inc., Jan 2001, Water Supply Analysis; C.Borchert, 3/23/09","Yes" +"OSE well log. Some data from USGS. Overlapping site data.","Yes" +"OSE Well record","Yes" +"OSE well record and owner","Yes" +"OSE well record and owner info","Yes" +"OSE well record and site visit","Yes" +"OSE Well Record and well owner","Yes" +"OSE well record.","Yes" +"OSE Well Record. NMED DWB (1999) via Jemez y Sangre Database (2000); WATERS","Yes" +"OSE Well Record. NMED DWB (1999) via Jemez y Sangre Database (2000); WATERS; K. Summers project file and Sandia Drilling well log","Yes" +"OSE Well Record. NMED DWB (1999) via Jemez y Sangre Database (2000); WATERS","Yes" +"Owner","Yes" +"Owner - well dirlled in 60s.","Yes" +"owner - well drilled by father, using septic auger.","Yes" +"Owner - well drilled in 50's. owner has some records.","Yes" +"Owner and OSE record","Yes" +"Owner and OSE site.","Yes" +"Owner and OSE well record.","Yes" +"Owner and well record.","Yes" +"Owner field check; WATERS","Yes" +"Owner recollection","Yes" +"Owner recollection and limited OSE records.","Yes" +"Owner recollection and OSE POD record.","Yes" +"Owner recollection of well depth and water level","Yes" +"Owner recollection.","Yes" +"Owner recollection; OSE Records","Yes" +"Owner.","Yes" +"Owner. OSE well records","Yes" +"P. Drakos, et al., 2004, Chemical & Isotopic Constraints on Source-Waters and Connectivity of Basin-Fill Aquifers in the Southern San Luis Basin, NM. NMGS Guidebook 55, pg 405.","Yes" +"Pecos Valley Artesian Conservancy District (Aron Balok okay'd us to share data from PVACD wells to the web map on 3/30/2022 via email with Stacy)",NO +"Pecos Valley Artesian Conservancy District (Aron Balok okay'd us to share data from PVACD wells to the web map on 3/30/2022 via email with Stacy). Same well as USGS 331524104245101.",NO +"Pecos Valley Artesian Conservancy District (Aron Balok okay'd us to share data from PVACD wells to the web map on 3/30/2022 via email with Stacy)",NO +"PhD thesis by Mayer, J.R. (1995) Role of Fractures in Regional GW Flow: Field Evidence and Model Results from the Basin/Range of TX and NM","Yes" +"Plummer, LN, Bexfield, LM, et al. (2004) Geochem. Characterization of Ground-water Flow in the Santa Fe Group Aquifer System, Middle Rio Grande Basin, NM. USGS WRI-03-4131","Yes" +"Plummer, LN, Bexfield, LM, et al. (2004) Geochem. Characterization of Ground-water Flow in the Santa Fe Group Aquifer System, Middle Rio Grande Basin, NM. USGS WRI-03-4131 (ID # S264)","Yes" +"Plummer, LN, Bexfield, LM, et al. (2004) Geochem. Characterization of Ground-water Flow in the Santa Fe Group Aquifer System, Middle Rio Grande Basin, NM. USGS WRI-03-4131 (ID #S037)","Yes" +"Plummer, LN, Bexfield, LM, et al. (2004) Geochem. Characterization of Ground-water Flow in the Santa Fe Group Aquifer System, Middle Rio Grande Basin, NM. USGS WRI-03-4131 (ID #S040)","Yes" +"Plummer, LN, Bexfield, LM, et al. (2004) Geochem. Characterization of Ground-water Flow in the Santa Fe Group Aquifer System, Middle Rio Grande Basin, NM. USGS WRI-03-4131 (ID #S101)","Yes" +"Plummer, LN, Bexfield, LM, et al. (2004) Geochem. Characterization of Ground-water Flow in the Santa Fe Group Aquifer System, Middle Rio Grande Basin, NM. USGS WRI-03-4131 (ID #S146)","Yes" +"Plummer, LN, Bexfield, LM, et al. (2004) Geochem. Characterization of Ground-water Flow in the Santa Fe Group Aquifer System, Middle Rio Grande Basin, NM. USGS WRI-03-4131 (ID #S164)","Yes" +"Plummer, LN, Bexfield, LM, et al. (2004) Geochem. Characterization of Ground-water Flow in the Santa Fe Group Aquifer System, Middle Rio Grande Basin, NM. USGS WRI-03-4131 (ID #S220)","Yes" +"Plummer, LN, Bexfield, LM, et al. (2004) Geochem. Characterization of Ground-water Flow in the Santa Fe Group Aquifer System, Middle Rio Grande Basin, NM. USGS WRI-03-4131 (ID #S265)","Yes" +"Plummer, LN, Bexfield, LM, et al. (2004) Geochem. Characterization of Ground-water Flow in the Santa Fe Group Aquifer System, Middle Rio Grande Basin, NM. USGS WRI-03-4131.","Yes" +"Plummer, LN, Bexfield, LM, et al., 2004 Geochem. Characterization of Grd-water Flow in the Santa Fe Grp Aquifer System, Middle Rio Grande Basin, NM. USGS WRI-03-4131.","Yes" +"Pre-design groundwater investigation at the tailing facility - Final work plan. April 24, 2013, Arcadis","Yes" +"Pretty certain C011 is Burns EPA sample.","Yes" +"Prindle-Hinds well completion log to NMED SW Bureau","Yes" +"Pump test performed as noted in Meyers report. USGS WRI 94-4125","Yes" +"Ranch foreman.","Yes" +"Rankin, Dale, 2005, Personal Communication USGS Well Drilling Reports","Yes" +"Reardon et al. (2021) Addendum to Water Res. Assessment NM Permian Basin SAND2021-1869","Yes" +"Reardon, et al. (2021) Addendum to Water Res. Assessment in NM Permian Basin. SAND2021-1869.","Yes" +"RGDSSP12","Yes" +"Romero","Yes" +"San Pedro Creek Estates HOA","Yes" +"Sandia Drilling well log from JSA, 2001, App. 6; Frost & Assoc., 1996, Review of El Dorado Area Water Production and GW Resource, June 1996; WKSummers files","Yes" +"Sandia Drilling well log from JSA, 2001, App. 6; Frost & Assoc., 1996, Review of El Dorado Area Water Production and GW Resource, June 1996; WKSummers files; DKoning cutting review","Yes" +"Sandia National Labs/ BLM Wells","Yes" +"Sandia Natl. Labs Report SAND2018-12018 Water Assessment in the NM Permian Basin","Yes" +"Sangre de Cristo/OSE, WATERS, Borchert report, Watson and Rappuhn/Shomaker & Assoc., 4/99, WellReport: Drilling, Construction and Testing, City of Santa Fe Northwest Area Test Well; D.Koning review","Yes" +"Santa Fe County records; well log; field check","Yes" +"Santa Fe County Utilities field notes;","Yes" +"SECOR report to NMED UST Bureau","Yes" +"Shoemaker & Fleming, MWB Survey, 1990; Mourant, 1980","Yes" +"Shomaker & Associates, 2004, Well Report Buckman Wells No. 10-13 City of Santa Fe, New Mexico, May 2004; C. Borchert, written communication, 3/23/09","Yes" +"Shomaker & Associates, April 2003, Well Report: Drilling, Construction, and Testing of SF Buckman 9; C. Borchert, written communication, 3/23/09","Yes" +"Site check; well record","Yes" +"Site visit by Johnson during drilling; drillers report; J. Corbin, written communication, 2007","Yes" +"Slinglerland & Borton, Geohydro of Avanti Business Park, 8/85 (App F to GGI, Santa Fe Metro, 12/01); lithologic log by GGI, review by D.Koning","Yes" +"SNL report for manual water level and water quality","Yes" +"Some chemistry from EPA via NM Health Dept.","Yes" +"Some data from USGS. Overlapping site data.","Yes" +"Some data from USGS. Overlapping site data. Aquifer type from USGS.","Yes" +"Some data from USGS. Overlapping site data. Formation pick from USGS.","Yes" +"Some limited WQ measurements at well and nearby stream. Filed. Not entered.","Yes" +"Some water levels from USGS","Yes" +"Some WL's from Lee Foster Well Services","Yes" +"Some WLs from USGS & Dames and Moore (4/11/1986). Some WQ from Vail Engineering (Sept. 1993).","Yes" +"Souder-Miller & Assoc., 1995, Unpublished Consultant's Report, Fig 2, well completion diagram","Yes" +"Source data for some chemistry for this location is from the US EPA.","Yes" +"Source data for this location is from the US EPA & NMED water quality.","Yes" +"Source data for this location is from the US EPA.","Yes" +"T.Decker, written comm., 2000 (letter to B.McLean ""Testing - EUI Well #15"", 2/25/2000);","Yes" +"Taos Soil & Water Concervation District","Yes" +"Taos Soil & Water Conservation District","Yes" +"Taos Soil & Water Conservation District water sample study.","Yes" +"Tetra Tech EM, Inc., Aug 2004, Geohydrologic Report for Proposed Suerte del Sur Subdivision, Santa Fe County, NM","Yes" +"Tetra Tech EM, Inc., Aug 2004, Geohydrologic Report for Proposed Suerte del Sur Subdivision, Santa Fe County, NM; field check by Johnson","Yes" +"Texas Water Development Board",NO +"Texas Water Development Board; Kreitler, et al. (1987) Siting a low-level radioactive waste disposal facility in TX, Vol. 4. (pump test data)",NO +"Theis, C.V., Taylor, Jr., G.C., and Murray, C.R. (1941) Thermal Waters of the Hot Springs Artesian Basin Sierra County, New Mexico. U.S. Geological Survey in cooperation with State Engineer of New Mex","Yes" +"TSWCD","Yes" +"Turner, B., 1996, The Water Availability for the El Mirador Subdivision, Taos County, New Mexico, Turner Environmental Consultants, Apdx. 2 & 3. (Data from Drakos, GGI, 1996) Report filed w/TV-229. Al","Yes" +"Turner, B., 1996, The Water Availability for the El Mirador Subdivision, Taos County, New Mexico, Turner Environmental Consultants, Appendices 1, 3, 4","Yes" +"Turner, B., 1996, The Water Availability for the El Mirador Subdivision, Taos County, New Mexico, Turner Environmental Consultants, pg. 7, Table 1.","Yes" +"Turner, B., 1996, The Water Availability for the El Mirador Subdivison, Taos County, New Mexico, Turner Environmental Consultants, Pg. 18, Table 1, and Appendices 2,3. (Data from Jenkins in 1982). Ful","Yes" +"undeclared well.","Yes" +"URS Corp. for Chevron","Yes" +"USFS - Espanola Ranger District - Range Improvement records.","Yes" +"USGS",NO +"USGS & Garrabrant, L.A. (1993) Water Resources of Taos County, NM USGS WRIR 93-4107 (chemistry sample). This well matched to Garrabrant well via notes from Tony Benson's Sunshine notebooks.","Yes" +"USGS & Myers, Everheart, Wilson (1994) Geohydrol. Of San Agustin Basin, Alamosa Creek Basin upstream from Monticello Box & Upper Gila Basin in parts of Catron, Socorro & Sierra Cty, NM, WRI 94-4125","Yes" +"USGS & NMED SWP Atlas online","Yes" +"USGS & Plummer, LN, Bexfield, LM, et al. (2004) Geochem. Characterization of Ground-water Flow in the Santa Fe Group Aquifer System, Middle Rio Grande Basin, NM. USGS WRI-03-4131","Yes" +"USGS & Texas Water Development Board","Yes" +"USGS & Winograd, I.J. (1959) Ground-water Conditions & Geology of Sunshine Valley & Western Taos Cty, NM, NMSEO, Tech. Report #12. & Garrabrant, L.A. (1993) USGS WRIR 93-4107","Yes" +"USGS & Winograd, I.J., 1959, Ground-water Conditions and Geology of Sunshine Valley and Western Taos County, NM, State of New Mexico, State Engineer Office, Technical Report #12","Yes" +"USGS & Winograd, I.J., 1959, Ground-water Conditions and Geology of Sunshine Valley and Western Taos County, NM, State of New Mexico, State Engineer Office, Technical Report #12.","Yes" +"USGS and Winograd, I.J., 1959, Ground-water Conditions and Geology of Sunshine Valley and Western Taos County, NM, State of New Mexico, State Engineer Office, Technical Report #12.","Yes" +"USGS Chem Analysis Sheet from R.L. Borton Files. 1970; WATERS; C.Borchert, 3/23/09, written communication","Yes" +"USGS Drillers reports","Yes" +"USGS drillers reports; D.Koning cuttings review","Yes" +"USGS drilling reports; D.Koning cutting review","Yes" +"USGS NWIS data site",NO +"USGS NWIS data siteSome data from USGS. Overlapping site data.",NO +"USGS Winograd, I.J., 1959, Ground-water Conditions and Geology of Sunshine Valley and Western Taos County, NM, State of New Mexico, State Engineer Office, Technical Report #12","Yes" +"USGS WLs",NO +"USGS, chemistry from Lynn Brandvold with NMBGMR chemistry lab, OFR-469 Hydrogeology & Water Resources of the Placitas Area","Yes" +"USGS. POD log not available.","Yes" +"USGS. Well screens/WQ from Plummer, LN, Bexfield, LM, et al. (2004) Geochem. Characterization of Ground-water Flow in the Santa Fe Group Aquifer System, Middle Rio Grande Basin, NM. USGS WRI-03-4131","Yes" +"USGS/OSE water-level data sheets; WATERS","Yes" +"USGS; Bjorklund, L.J. (1957) Recon. of Groundwater Conditions in Crow Flats Area Otero Cty, NM, OSE Tech Rep 8.","Yes" +"USGS; Bjorklund, L.J. (1957) Reconnaissance of Ground-water Conditions in the Crow Flats Area Otero County, New Mexico, NM OSE Technical Report 8.","Yes" +"USGS; Bjorklund, L.J. (1957) Reconnaissance of Ground-water Conditions in the Crow Flats Area Otero County, NM, OSE Technical Report 8.","Yes" +"USGS; Screens from NPS water level and well documentation","Yes" +"VeneKlasen & Assoc, 1984, Remuda Ridge Warehouse, Santa Fe County, NM, October 1984","Yes" +"VeneKlasen & Assoc, Inc., 1982, Geohydrology Rept, Pecos Trail Subdn, Santa Fe Cnty, Aug 1982","Yes" +"VeneKlasen & Assoc., 1984, Geohydrology Report, Hondo Trails Subdn, Santa Fe Cnty, Dec 1984","Yes" +"VeneKlasen & Assoc., Inc., 1986, Geohydrology Report, Talbot Subdivision, May 1986","Yes" +"VeneKlasen, 1975, Hydrogeologic Report for La Tierra Subdivision, 6/75","Yes" +"Veneklasen, 1977, Geohydro Lanphere -- Rio Villa Subdivision, AguaFria Rd, 5/77","Yes" +"Veneklasen, 1977, Hydrogeologic Report La Tierra Subdivn, Phase III, May 1977, Consulting Prof Inc","Yes" +"VeneKlasen, 1977, Hydrogeologic Rept La Tierra Ph. III, May 1977","Yes" +"VeneKlasen, 1977, Hydrogeologic Rept La Tierra Ph. III, May 1977; field check Cruz/Frost","Yes" +"Veneklasen, 1980, Geohydro of Santiago Subdivision, 10/80","Yes" +"VeneKlasen, 6/75, Hydrogeo Rept La Tierra; field check by Johnson","Yes" +"VeneKlasen, Hydrogeologic Report for La Tierra Subdivision 6/75; well log; field check Johnson","Yes" +"Water chemistry from TSWCD. Fairly sure this is COS-11, eventhough there is a descrepency between well log depth and well depth on chemistry sheet.","Yes" +"Water Quality: Sorrell, John D. and Banet, Christopher, Karavas Tract Exploratory Well, Nov. 1993, Bureau of Indian Affairs.","Yes" +"WATERS; field check","Yes" +"WATERS; Lewis database, 2001; VeneKlasen, 1975, Hydrogeologic Report LaTierra, 6/75; Camp Dresser & McKee, Inc., Jan 2001, Water Supply Analysis; D.Koning log review; C.Borchert, 3/23/09, written comm","Yes" +"WATERS; WK Summers project files; JSAI, 2001, App. #6; J. Frost project files (1999)","Yes" +"Watson/Shomaker & Assoc., 5/97, Well Report, Drilling, Construction, and Testing, City of Santa Fe, Torreon Well No. 2, for PNM Water Services Santa Fe, NM; CDM, Jan 2000, Water Supply Analysis","Yes" +"Well owner.","Yes" +"Well also in PhD thesis by Mayer, J.R. (1995) Role of Fractures in Regional GW Flow: Field Evidence and Model Results from the Basin/Range of TX and NM","Yes" +"well depth from Meyers et al, 1994, USGS WRI 94-4125","Yes" +"Well in Meyers report: Meyers et al, 1994, USGS WRI 94-4125","Yes" +"Well info from inside well cap, presumably from driller?","Yes" +"Well Log","Yes" +"Well log and completion diagrams","Yes" +"Well log and field check by Johnson; not previously in GWSI","Yes" +"Well log and well completion diagrams","Yes" +"Well log and well completion diagrams. WQ data from P. Longmire Santa Fe River 1985 Report","Yes" +"Well log/record by GGI; field check by Johnson","Yes" +"Well log; field check","Yes" +"Well log; field check by Johnson","Yes" +"well log; field check by Johnson; owner","Yes" +"well log; Johnson field check","Yes" +"Well Log; JSAI, 2001, App. #6","Yes" +"Well owner","Yes" +"Well owner and old well record.","Yes" +"Well owner and OSE site info.","Yes" +"Well owner, and well record.","Yes" +"Well owner.","Yes" +"Well record.","Yes" +"Well record; field check","Yes" +"Well record; field check by Cruz/Frost","Yes" +"well record; field check by Johnson","Yes" +"Well record; field check by Johnson; owner","Yes" +"Well record; field check by Lyman","Yes" +"Well record; field check by Lyman; SWL measured by GGI/reported by Cooper, 2000, Rept for Roybal","Yes" +"Well record; field check with SFC Utilities (Leonard Quintana 490-0065)","Yes" +"Winograd, I.J., 1959, Ground-water Conditions and Geology of Sunshine Valley and Western Taos County, NM, State of New Mexico, State Engineer Office, Technical Report #12","Yes" +"Winograd, I.J., 1959, Ground-water Conditions and Geology of Sunshine Valley and Western Taos County, NM, State of New Mexico, State Engineer Office, Technical Report #12.","Yes" +"WK Summers project files; WATERS; Water Industries, Inc., 1982, Testing of Eldorado Well #1, Jan. 1982; water levels from W-1 and EUI#1; JSAI, 2001, App. #6","Yes" +"WL from USGS; chemistry and other data from Lynn Brandvold with NMBGMR chemistry lab & OFR-469 Hydrogeology & Water Resources of the Placitas Area","Yes" +"WLs from USGS",NO +"WQ also from MS thesis by Sigstedt, S. (2010) Environmental Tracers in Groundwater of the Salt Basin, NM and Implications for Water Resources.","Yes" +"WQ from Taos Soil & Water Conservation District","Yes" +"Z. Spiegel, 1972, Interpretation and application of an aquifer performance test on well RG-20228 at Pojoaque Terrace trailer court site HC McDonald Property, Santa Fe County, NM, 9/14/72","Yes" diff --git a/transfers/entrypoint.py b/transfers/entrypoint.py deleted file mode 100644 index 082fde659..000000000 --- a/transfers/entrypoint.py +++ /dev/null @@ -1,112 +0,0 @@ -# =============================================================================== -# Copyright 2025 ross -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# =============================================================================== - -from fastapi import FastAPI - -from core.dependencies import session_dependency -from transfers.asset_transfer import transfer_assets_testing -from transfers.contact_transfer import transfer_contacts -from transfers.group_transfer import transfer_groups -from transfers.link_ids_transfer import transfer_link_ids, transfer_link_ids_welldata -from transfers.thing_transfer import ( - transfer_met, - transfer_ephemeral_stream, - transfer_perennial_stream, - transfer_springs, -) -from transfers.transfer import message -from transfers.waterlevels_transfer import transfer_water_levels -from transfers.well_transfer import transfer_wells, cleanup_wells - -app = FastAPI(title="Transfer Service") - - -@app.post("/wells") -async def wells( - session: session_dependency, - start_index: int, - limit: int = 25, -): - results = transfer_wells(session, start_index=start_index, limit=limit) - return results - - -@app.post("/spring") -async def _(session: session_dependency, limit: int = 25): - message("TRANSFERRING SPRINGS") - transfer_springs(session, limit) - - -@app.post("/perennial_stream") -async def _(session: session_dependency, limit: int = 25): - message("TRANSFERRING PERENNIAL STREAMS") - transfer_perennial_stream(session, limit) - - -@app.post("/ephemeral_stream") -async def _(session: session_dependency, limit: int = 25): - message("TRANSFERRING EPHEMERAL STREAMS") - transfer_ephemeral_stream(session, limit) - - -@app.post("/met") -async def _(session: session_dependency, limit: int = 25): - message("TRANSFERRING METEOROLOGICAL") - transfer_met(session, limit) - - -@app.post("/contacts") -async def _(session: session_dependency): - message("TRANSFERRING CONTACTS") - transfer_contacts(session) - - -@app.post("/waterlevels") -async def _(session: session_dependency): - message("TRANSFERRING WATER LEVELS") - transfer_water_levels(session) - - -@app.post("/link_ids") -async def _(session: session_dependency): - message("TRANSFERRING LINK IDS") - transfer_link_ids(session) - transfer_link_ids_welldata(session) - - -@app.post("assets") -async def _transfer_assets(session: session_dependency): - message("TRANSFERRING ASSETS") - transfer_assets_testing(session) - - -@app.post("/groups") -async def _transfer_groups(session: session_dependency): - message("TRANSFERRING GROUPS") - transfer_groups(session) - - -@app.post("/cleanup_wells") -async def _cleanup_wells(session: session_dependency): - cleanup_wells(session) - - -@app.get("/health") -async def health(): - return {"status": "ok"} - - -# ============= EOF ============================================= diff --git a/transfers/group_transfer.py b/transfers/group_transfer.py index 12bcf452f..95e9c7949 100644 --- a/transfers/group_transfer.py +++ b/transfers/group_transfer.py @@ -18,7 +18,8 @@ from db import Thing, Group from db.engine import session_ctx -from transfers.util import read_csv, logger +from transfers.util import read_csv +from transfers.logger import logger def transfer_groups( diff --git a/transfers/link_ids_transfer.py b/transfers/link_ids_transfer.py index 4748a7e46..6eca741d1 100644 --- a/transfers/link_ids_transfer.py +++ b/transfers/link_ids_transfer.py @@ -98,7 +98,7 @@ def add_link_alternate_site_id(session, row, thing): link_id.alternate_organization = extract_organization(str(row.AlternateSiteID)) - logger.info(f"adding link id: {link_id}") + logger.info(f"adding link id: {row.PointID}") session.add(link_id) @@ -153,7 +153,6 @@ def transfer_link_ids(session, site_type="GW"): ldf = read_csv("Location") ldf = ldf[ldf["SiteType"] == site_type] ldf = ldf[ldf["Easting"].notna() & ldf["Northing"].notna()] - # ldf = ldf[ldf["AlternateSiteID"].notna()] ldf = replace_nans(ldf) ldf = filter_to_valid_point_ids(session, ldf) @@ -166,8 +165,8 @@ def transfer_link_ids(session, site_type="GW"): ) continue logger.info( - f"Processing PointID: {row.PointID}, Thing ID: {thing.id}, a={row.AlternateSiteID}, " - f"b={row.AlternateSiteID2}" + f"Processing PointID: {row.PointID}, Thing ID: {thing.id}, AlternateSiteID={row.AlternateSiteID}, " + f"AlternateSiteID2={row.AlternateSiteID2}" ) add_link_alternate_site_id(session, row, thing) # add_link_site_id(session, row, thing) diff --git a/transfers/logger.py b/transfers/logger.py new file mode 100644 index 000000000..2924ab646 --- /dev/null +++ b/transfers/logger.py @@ -0,0 +1,64 @@ +# =============================================================================== +# Copyright 2025 ross +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# =============================================================================== +import logging +import sys +from datetime import datetime + +from services.gcs_helper import get_storage_bucket + + +# class StreamToLogger: +# def __init__(self, logger_, level): +# self.logger = logger_ +# self.level = level +# self.linebuf = "" +# +# def write(self, buf): +# for line in buf.rstrip().splitlines(): +# self.logger.log(self.level, line.rstrip()) +# +# def flush(self): +# pass + + +log_filename = f"transfer_{datetime.now():%Y-%m-%dT%Hh%Mm%Ss}.log" + + +logging.basicConfig( + level=logging.INFO, + format="%(asctime)s [%(levelname)-8s] %(message)s", + handlers=[ + logging.StreamHandler(), + logging.FileHandler(log_filename, mode="w", encoding="utf-8"), + ], +) +logger = logging.getLogger(__name__) + +# workaround to not redirect httpx logging +logging.getLogger("httpx").setLevel(logging.WARNING) + +# redirect stderr to the logger +# sys.stderr = StreamToLogger(logger, logging.ERROR) + + +def save_log_to_bucket(): + bucket = get_storage_bucket() + blob = bucket.blob(f"transfer_logs/{log_filename}") + blob.upload_from_filename(log_filename) + logger.info(f"Uploaded log to gs://{bucket.name}/transfer_logs/{log_filename}") + + +# ============= EOF ============================================= diff --git a/transfers/thing_transfer.py b/transfers/thing_transfer.py index 39a688cf7..2172575fd 100644 --- a/transfers/thing_transfer.py +++ b/transfers/thing_transfer.py @@ -18,7 +18,8 @@ from db import LocationThingAssociation from services.thing_helper import add_thing -from transfers.util import make_location, read_csv, logger, replace_nans +from transfers.util import make_location, read_csv, replace_nans +from transfers.logger import logger def transfer_thing(session: Session, site_type: str, make_payload, limit=None) -> None: @@ -32,7 +33,7 @@ def transfer_thing(session: Session, site_type: str, make_payload, limit=None) - for i, row in enumerate(ldf.itertuples()): pointid = row.PointID if ldf[ldf["PointID"] == pointid].shape[0] > 1: - logger.warning(f"PointID {pointid} has duplicate records. Skipping.") + logger.critical(f"PointID {pointid} has duplicate records. Skipping.") continue if limit and i >= limit: @@ -48,7 +49,7 @@ def transfer_thing(session: Session, site_type: str, make_payload, limit=None) - try: location = make_location(row) except Exception as e: - logger.error(f"Error creating location for {row.PointID}: {e}") + logger.critical(f"Error creating location for {row.PointID}: {e}") continue session.add(location) payload = make_payload(row) diff --git a/transfers/transfer.py b/transfers/transfer.py index d71c1c869..0b22383db 100644 --- a/transfers/transfer.py +++ b/transfers/transfer.py @@ -13,6 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # =============================================================================== +import os import time from dotenv import load_dotenv @@ -23,12 +24,13 @@ from core.initializers import init_lexicon from db import Base from db.engine import session_ctx + +from transfers.asset_transfer import transfer_assets from transfers.group_transfer import transfer_groups from transfers.link_ids_transfer import transfer_link_ids, transfer_link_ids_welldata from transfers.contact_transfer import transfer_contacts from transfers.sensor_transfer import init_sensor from transfers.waterlevels_transfer import transfer_water_levels - from transfers.well_transfer import transfer_wells, transfer_wellscreens from transfers.thing_transfer import ( transfer_springs, @@ -36,27 +38,41 @@ transfer_ephemeral_stream, transfer_met, ) -from transfers.util import logger +from transfers.util import timeit, timeit_direct +from transfers.logger import logger, save_log_to_bucket def erase_and_initalize(session: Session) -> None: logger.info("Erasing existing data and initializing lexicon and sensors") - starttime = time.time() - Base.metadata.drop_all(session.bind) - Base.metadata.create_all(session.bind) - elapsed_time = time.time() - starttime - logger.info(f"Done erasing existing data. {elapsed_time:0.2f}s") + erase(session) + lexicon() + sensor(session) - logger.info("Initializing lexicon and sensors") - starttime = time.time() - init_lexicon() - elapsed_time = time.time() - starttime - logger.info(f"Done initializing lexicon. {elapsed_time:0.2f}s") - starttime = time.time() +@timeit +def sensor(session: Session): + logger.info("Initializing sensors") init_sensor(session) - elapsed_time = time.time() - starttime - logger.info(f"Done initializing sensors. {elapsed_time:0.2f}s") + + +@timeit +def lexicon(): + logger.info("Initializing lexicon") + init_lexicon() + + +@timeit +def erase(session: Session): + logger.info("Erasing existing data") + from sqlalchemy import text + + with session.bind.connect() as conn: + conn.execute(text("DROP SCHEMA public CASCADE")) + conn.execute(text("CREATE SCHEMA public")) + + Base.metadata.drop_all(session.bind) + logger.info("Recreating tables") + Base.metadata.create_all(session.bind) def message(msg, pad=10, new_line_at_top=True): @@ -66,100 +82,69 @@ def message(msg, pad=10, new_line_at_top=True): logger.info(f"{pad} {msg} {pad}") -def main_transfer(): +@timeit +def transfer_all(sess, limit=100): message("STARTING TRANSFER", new_line_at_top=False) + erase_and_initalize(sess) - init = True - - transfer_well_flag = False - transfer_spring_flag = False - transfer_perennial_stream_flag = False - transfer_ephemeral_stream_flag = False - transfer_met_flag = False - transfer_contacts_flag = False - transfer_waterlevels_flag = False - transfer_link_ids_flag = False - transfer_assets_flag = False - transfer_groups_flag = False - - cleanup_wells_flag = False - - transfer_well_flag = True - transfer_spring_flag = True - transfer_perennial_stream_flag = True - transfer_ephemeral_stream_flag = True - transfer_met_flag = True - transfer_contacts_flag = True - transfer_waterlevels_flag = True - transfer_link_ids_flag = True - transfer_assets_flag = True - transfer_groups_flag = True - - cleanup_wells_flag = True - - limit = 15 + message("TRANSFERRING WELLS") + timeit_direct(transfer_wells, sess, limit=limit) + timeit_direct(transfer_wellscreens, sess) + + message("TRANSFERRING ASSETS") + timeit_direct(transfer_assets, sess) + + message("TRANSFERRING SPRINGS") + timeit_direct(transfer_springs, sess, limit=limit) + + message("TRANSFERRING PERENNIAL STREAMS") + timeit_direct(transfer_perennial_stream, sess, limit=limit) + + message("TRANSFERRING EPHEMERAL STREAMS") + timeit_direct(transfer_ephemeral_stream, sess, limit=limit) + + message("TRANSFERRING METEOROLOGICAL") + timeit_direct(transfer_met, sess, limit) + + message("TRANSFERRING CONTACTS") + timeit_direct(transfer_contacts, sess) + + message("TRANSFERRING WATER LEVELS") + timeit_direct(transfer_water_levels, sess) + + """ + Developer's notes + + When transfering water chemistry data use the qc_type field to indicate + normal/blanks/duplicates instead of what comes from LU_SampleType. Use + those values, however, to map to the standard qc_type fields if applicable + (i.e. not applicable when sample type is "Soil or rock sample" or + "Precipitation," but is applicable when sample type is "Equipment blank" + or "Field duplicate") + """ + message("TRANSFERRING LINK IDS") + timeit_direct(transfer_link_ids, sess) + timeit_direct(transfer_link_ids_welldata, sess) + + message("TRANSFERRING GROUPS") + timeit_direct(transfer_groups, sess) + + # if init or cleanup_wells_flag: + # cleanup_wells(sess) + + +def main(): + message("START--------------------------------------") + limit = int(os.environ.get("TRANSFER_LIMIT", 1000)) with session_ctx() as sess: - if init: - erase_and_initalize(sess) - - if init or transfer_well_flag: - message("TRANSFERRING WELLS") - transfer_wells(sess, limit=limit) - transfer_wellscreens(sess) - # - if init or transfer_spring_flag: - message("TRANSFERRING SPRINGS") - transfer_springs(sess, limit) - - if init or transfer_perennial_stream_flag: - message("TRANSFERRING PERENNIAL STREAMS") - transfer_perennial_stream(sess, limit) - - if init or transfer_ephemeral_stream_flag: - message("TRANSFERRING EPHEMERAL STREAMS") - transfer_ephemeral_stream(sess, limit) - - if init or transfer_met_flag: - message("TRANSFERRING METEOROLOGICAL") - transfer_met(sess, limit) - - if init or transfer_contacts_flag: - message("TRANSFERRING CONTACTS") - transfer_contacts(sess) - - if init or transfer_waterlevels_flag: - message("TRANSFERRING WATER LEVELS") - transfer_water_levels(sess) - - """ - Developer's notes - - When transfering water chemistry data use the qc_type field to indicate - normal/blanks/duplicates instead of what comes from LU_SampleType. Use - those values, however, to map to the standard qc_type fields if applicable - (i.e. not applicable when sample type is "Soil or rock sample" or - "Precipitation," but is applicable when sample type is "Equipment blank" - or "Field duplicate") - """ - - if init or transfer_link_ids_flag: - message("TRANSFERRING LINK IDS") - transfer_link_ids(sess) - transfer_link_ids_welldata(sess) - - # if init or transfer_assets_flag: - # message("TRANSFERRING ASSETS") - # transfer_assets_testing(sess) - - if init or transfer_groups_flag: - message("TRANSFERRING GROUPS") - transfer_groups(sess) - - # if init or cleanup_wells_flag: - # cleanup_wells(sess) + transfer_all(sess, limit=limit) + + # todo: move the log file to a storage bucket + save_log_to_bucket() + message("END--------------------------------------") if __name__ == "__main__": - main_transfer() + main() # ============= EOF ============================================= diff --git a/transfers/util.py b/transfers/util.py index 327c55391..bb8ef0f15 100644 --- a/transfers/util.py +++ b/transfers/util.py @@ -13,11 +13,12 @@ # See the License for the specific language governing permissions and # limitations under the License. # =============================================================================== +import csv +import os from datetime import datetime, timezone, timedelta import pytz import re import io -import logging from shapely import Point @@ -35,41 +36,7 @@ get_county_from_point, get_quad_name_from_point, ) -import sys - - -class StreamToLogger: - def __init__(self, logger, level): - self.logger = logger - self.level = level - self.linebuf = "" - - def write(self, buf): - for line in buf.rstrip().splitlines(): - self.logger.log(self.level, line.rstrip()) - - def flush(self): - pass - - -log_filename = f"transfers/transfer_{datetime.now():%Y-%m-%dT%Hh%Mm%Ss}.log" - - -logging.basicConfig( - level=logging.INFO, - format="%(asctime)s [%(levelname)-8s] %(message)s", - handlers=[ - logging.StreamHandler(), - logging.FileHandler(log_filename, mode="w", encoding="utf-8"), - ], -) -logger = logging.getLogger(__name__) - -# workaround to not redirect httpx logging -logging.getLogger("httpx").setLevel(logging.WARNING) - -# redirect stderr to the logger -sys.stderr = StreamToLogger(logger, logging.ERROR) +from transfers.logger import logger def replace_nans(df: pd.DataFrame, default=None) -> pd.DataFrame: @@ -115,6 +82,33 @@ def extract_organization(alternate_id: str) -> str: return "Unknown" +def filter_by_welldata_datasource(df: pd.DataFrame) -> pd.DataFrame: + path = "/workspace/transfers/data/valid_welldata_datasources.csv" + if not os.path.exists(path): + path = "data/valid_welldata_datasources.csv" + + with open(path, "r") as f: + reader = csv.reader(f) + _ = next(reader) + valid_datasources = [row[0] for row in reader if row[1] == "Yes"] + logger.info(f"Valid WellData Datasources: {valid_datasources}") + + return df[df["DataSource"].isin(valid_datasources)] + + +def filter_by_valid_measuring_agency(df: pd.DataFrame) -> pd.DataFrame: + path = "/workspace/transfers/data/valid_measuring_agency.csv" + if not os.path.exists(path): + path = "data/valid_measuring_agency.csv" + + with open(path, "r") as f: + reader = csv.reader(f) + _ = next(reader) + valid_measuring_agencies = [row[0] for row in reader if row[1] == "Yes"] + logger.info(f"Valid Measuring Agencies: {valid_measuring_agencies}") + return df[df["MeasuringAgency"].isin(valid_measuring_agencies)] + + def filter_to_valid_point_ids(session: Session, df: pd.DataFrame) -> pd.DataFrame: valid_point_ids = get_valid_point_ids(session) return df[df["PointID"].isin(valid_point_ids)] @@ -156,9 +150,12 @@ def make_location(row: pd.Series) -> Location: point, source_srid=SRID_UTM_ZONE_13N, target_srid=SRID_WGS84 ) - state = get_state_from_point(transformed_point.x, transformed_point.y) - county = get_county_from_point(transformed_point.x, transformed_point.y) - quad_name = get_quad_name_from_point(transformed_point.x, transformed_point.y) + # since this is such a time consuming operation, I do not want to run it during this step + # cleanup_wells was added for this reason + + # state = get_state_from_point(transformed_point.x, transformed_point.y) + # county = get_county_from_point(transformed_point.x, transformed_point.y) + # quad_name = get_quad_name_from_point(transformed_point.x, transformed_point.y) z = row.Altitude if z: @@ -277,7 +274,7 @@ def make_location(row: pd.Series) -> Location: location = Location( nma_pk_location=row.LocationId, # name=row.PointID, - point=point.wkt, + point=transformed_point.wkt, elevation=z, release_status="public" if row.PublicRelease else "private", elevation_accuracy=row.AltitudeAccuracy, @@ -288,9 +285,10 @@ def make_location(row: pd.Series) -> Location: coordinate_method=coordinate_method, nma_coordinate_notes=row.CoordinateNotes, nma_notes_location=row.LocationNotes, - state=state, - county=county, - quad_name=quad_name, + # these values will be populated in cleanup_wells + # state=state, + # county=county, + # quad_name=quad_name, ) return location @@ -343,6 +341,21 @@ def make_lu_to_lexicon_mapper(): lu_to_lexicon_map = make_lu_to_lexicon_mapper() +def timeit_direct(func, *args, **kwargs): + start = datetime.now() + result = func(*args, **kwargs) + end = datetime.now() + logger.info(f"{func.__name__} took {(end - start).total_seconds()} seconds") + return result + + +def timeit(func): + def wrapper(*args, **kwargs): + return timeit_direct(func, *args, **kwargs) + + return wrapper + + if __name__ == "__main__": print(lu_to_lexicon_map) diff --git a/transfers/waterlevels_transfer.py b/transfers/waterlevels_transfer.py index 2edf71df6..ac1d416f1 100644 --- a/transfers/waterlevels_transfer.py +++ b/transfers/waterlevels_transfer.py @@ -25,6 +25,7 @@ logger, read_csv, convert_mt_to_utc, + filter_by_valid_measuring_agency, lu_to_lexicon_map, ) @@ -33,11 +34,20 @@ def transfer_water_levels(session): wd = read_csv("WaterLevels") wd = filter_to_valid_point_ids(session, wd) + wd = filter_by_valid_measuring_agency(wd) gwd = wd.groupby(["PointID"]) start_time = time.time() for index, group in gwd: - logger.info(f"Processing PointID: {index[0]}") + pointid = index[0] + logger.info(f"Processing PointID: {pointid}") + thing = session.query(Thing).where(Thing.name == pointid).first() + if thing is None: + logger.critical( + f"Thing with PointID={pointid} not found. Skipping water levels" + ) + continue + n = len(group) for i, row in enumerate(group.itertuples()): if i and not i % 25: @@ -47,21 +57,30 @@ def transfer_water_levels(session): session.commit() if pd.isna(row.DepthToWater) or pd.isna(row.DateMeasured): - logger.warning(f"Skipping row {row.Index} due to missing data.") + logger.critical( + f"Skipping row PointID={row.PointID}, objectid={row.OBJECTID} due to missing " + f"data." + ) continue - if not pd.isna(row.TimeMeasured): - dt_measured = f"{row.DateMeasured} {row.TimeMeasured}" + if pd.isna(row.TimeMeasured): + fmt = "%Y-%m-%d" + dt_measured = row.DateMeasured else: - dt_measured = f"{row.DateMeasured} 12:00:00 AM" - - dt = datetime.strptime(dt_measured, "%Y-%m-%d %I:%M:%S %p") - dt_utc = convert_mt_to_utc(dt) - - thing = session.query(Thing).where(Thing.name == row.PointID).first() - if thing is None: + fmt = "%Y-%m-%d %H:%M:%S.%f" + t = row.TimeMeasured + # Truncate microseconds to 6 digits if present + if '.' in t: + t = t[:-6] + + dt_measured = f"{row.DateMeasured} {t}" + + try: + dt = datetime.strptime(dt_measured, fmt) + dt_utc = convert_mt_to_utc(dt) + except ValueError as e: logger.warning( - f"Thing with PointID {row.PointID} not found. Skipping water level." + f"Skipping row PointID={row.PointID}, objectid={row.OBJECTID} due to invalid date/time: {e}" ) continue @@ -74,20 +93,20 @@ def transfer_water_levels(session): measurement is the same as the date/time of the field event. """ - if pd.isna(row.MeasuringAgency): - collecting_organization = "Unknown" - else: - collecting_organization = row.MeasuringAgency + # if pd.isna(row.MeasuringAgency): + # collecting_organization = "Unknown" + # else: + # collecting_organization = row.MeasuringAgency - if pd.isna(row.MeasuredBy): - sampler_name = "Unknown" - else: - sampler_name = row.MeasuredBy + # if pd.isna(row.MeasuredBy): + # sampler_name = "Unknown" + # else: + # sampler_name = row.MeasuredBy field_event = FieldEvent( thing=thing, event_date=dt_utc, - collecting_organization=collecting_organization, + # collecting_organization=collecting_organization, release_status=release_status, ) @@ -107,9 +126,10 @@ def transfer_water_levels(session): else: sample_method = "null placeholder" + # todo: use create schema to validate data sample = Sample( field_activity=field_activity, - sampler_name=sampler_name, + # sampler_name=sampler_name, sample_date=dt_utc, sample_matrix="water", sample_name=str( @@ -131,6 +151,7 @@ def transfer_water_levels(session): else: level_status = None + # TODO: use create schema to validate data observation = Observation( sensor_id=sensor_id, sample=sample, diff --git a/transfers/well_transfer.py b/transfers/well_transfer.py index bd70cb00c..942b8d2ea 100644 --- a/transfers/well_transfer.py +++ b/transfers/well_transfer.py @@ -18,7 +18,7 @@ from sqlalchemy import select from db import LocationThingAssociation, Thing, WellScreen, Location -from schemas.thing import CreateWellScreen +from schemas.thing import CreateWellScreen, CreateWell from services.thing_helper import add_thing from services.util import ( get_state_from_point, @@ -31,6 +31,7 @@ read_csv, logger, replace_nans, + filter_by_welldata_datasource, ) ADDED = [] @@ -46,12 +47,13 @@ def transfer_wells(session, limit=0): wdf = replace_nans(wdf) + # todo: filter Locations by DataSource + wdf = filter_by_welldata_datasource(wdf) + n = len(wdf) + + step = 25 start_time = time.time() - results = { - "n": n, - } - made_things = [] for i, row in enumerate(wdf.itertuples()): pointid = row.PointID if wdf[wdf["PointID"] == pointid].shape[0] > 1: @@ -62,39 +64,47 @@ def transfer_wells(session, limit=0): logger.warning("Reached limit of %d rows. Stopping migration.", limit) break - if i and not i % 25: + if i and not i % step: logger.info( - f"Processing row {i} of {n}. {row.PointID}, avg rows per second: {i / (time.time() - start_time):.2f}" + f"Processing row {i} of {n}, avg rows per second: {step / (time.time() - start_time):.2f}" ) - session.commit() + start_time = time.time() try: location = make_location(row) except Exception as e: - logger.warning(f"Error making location for {row.PointID}: {e}") + logger.critical(f"Error making location for {row.PointID}: {e}") continue # print(location_row) session.add(location) # TODO: add guards for null values - well = add_thing( - session, - { - # "nma_pk_welldata": row.WellID, - "name": row.PointID, - "hole_depth": row.HoleDepth, - "well_depth": row.WellDepth, - # "driller_name": row.DrillerName, - # "construction_method": row.ConstructionMethod, - # "casing_diameter": row.CasingDiameter, - # "casing_depth": row.CasingDepth, - # "casing_description": row.CasingDescription, - "release_status": "public" if row.PublicRelease else "private", - # "data_reliability": row.DataReliability, - }, - thing_type="water well", + # TODO: use schema to validate + + data = CreateWell( + # "nma_pk_welldata": row.WellID, + name=row.PointID, + hole_depth=row.HoleDepth, + well_depth=row.WellDepth, + # "driller_name": row.DrillerName, + # "construction_method": row.ConstructionMethod, + # "casing_diameter": row.CasingDiameter, + # "casing_depth": row.CasingDepth, + # "casing_description": row.CasingDescription, + release_status="public" if row.PublicRelease else "private", + # "data_reliability": row.DataReliability, ) + try: + well = add_thing( + session, + data, + thing_type="water well", + ) + except Exception as e: + session.rollback() + logger.critical(f"Error creating well for {row.PointID}: {e}") + continue # TODO: use current use LUT to get well type # wt = row.Meaning @@ -114,11 +124,13 @@ def transfer_wells(session, limit=0): assoc.location = location assoc.thing = well session.add(assoc) - made_things.append(row.PointID) - results["made_things"] = made_things - session.commit() - return results + try: + session.commit() + except Exception as e: + logger.critical(f"Error committing well {row.PointID}: {e}") + session.rollback() + continue def transfer_wellscreens(session, limit=None): diff --git a/uv.lock b/uv.lock index a801f7a46..0b7fe2a35 100644 --- a/uv.lock +++ b/uv.lock @@ -1,5 +1,5 @@ version = 1 -revision = 3 +revision = 2 requires-python = ">=3.13" [[package]] @@ -1034,7 +1034,6 @@ requires-dist = [ { name = "multidict", specifier = "==6.6.3" }, { name = "numpy", specifier = "==2.3.2" }, { name = "packaging", specifier = "==25.0" }, - { name = "pact-python", specifier = ">=2.3.3" }, { name = "pandas", specifier = "==2.3.2" }, { name = "pandas-stubs", specifier = "==2.3.0.250703" }, { name = "pg8000", specifier = "==1.31.4" },