# -\*- coding: utf-8 -\*-
"""
Created on Mon Feb 6 15:56:13 2023

@author: ericallen

{0} = site id without US/USGS text in front
https://waterservices.usgs.gov/nwis/site/?site={0}&format=rdb"
# agency\_cd -- Agency
# site\_no -- Site identification number
# station\_nm -- Site name
# site\_tp\_cd -- Site type
# dec\_lat\_va -- Decimal latitude
# dec\_long\_va -- Decimal longitude
# coord\_acy\_cd -- Latitude-longitude accuracy
# dec\_coord\_datum\_cd -- Decimal Latitude-longitude datum
# alt\_va -- Altitude of Gage/land surface
# alt\_acy\_va -- Altitude accuracy
# alt\_datum\_cd -- Altitude datum
# huc\_cd -- Hydrologic unit code

Code Name Explanation
NGVD29 V Datum of 1929 National Geodetic Vertical Datum of 1929
NAVD88 V Datum of 1988 North American Vertical Datum of 1988
OLDAK Old Alaska Old Alaska (Mainland) and Aleutian Island Datum
OLDPR Old PR & VI Old Puerto Rico and Virgin Island Datum
HILOCAL Hawaii Local Local Hawaiian Datum
GUVD04 Guam Datum Guam Vertical Datum of 2004
ASVD02 Am Samoa Datum American Samoa Vertical Datum of 2002
NMVD03 N Marianas Datum Northern Marianas Vertical Datum of 2003
TIDELOCAL Tidal Local Local Tidal Datum
COE1912 COE Datum 1912 U.S. Corps of Engineers datum adjustment 1912
IGLD Gr Lakes Datum International Great Lakes Datum
ASLOCAL \*Am Samoa Local Local American Samoa Datum
GULOCAL \*Guam Local Local Guam Datum
"""
import pandas as pd
import numpy as np
#import os

DATA\_USGS = {"Ref\_Datum":np.nan, 'MHHW':np.nan, 'MHW':np.nan, 'MTL':np.nan,\
 'MSL':np.nan, 'DTL':np.nan, 'MLW':np.nan, 'MLLW':np.nan,\
 'NAVD88':np.nan, 'STND':np.nan, "NGVD29":np.nan}

def grab\_usgs\_data(stid):
 """take a station and the reference datum and get the conversions from tides and current"""
 short\_id = stid[2:]
 # Ping the USGS API for data - data in feet
 api\_url = "https://waterservices.usgs.gov/nwis/site/?site={0}&format=rdb".format(short\_id)
 skiprows = list(range(0,29))
 read\_usgs = pd.read\_csv(api\_url, sep="\t", skiprows=skiprows)
 read\_usgs = read\_usgs.drop([0])
 read\_usgs = read\_usgs.drop(['agency\_cd', 'station\_nm', 'site\_tp\_cd', 'dec\_lat\_va',\
 'dec\_long\_va', 'coord\_acy\_cd', 'dec\_coord\_datum\_cd', 'huc\_cd'], axis=1)
 read\_usgs = read\_usgs.dropna()

 if read\_usgs.empty:
 usgs\_df = pd.DataFrame(DATA\_USGS, index=["name"])

 else:
 data2 = DATA\_USGS.copy()
 #print(short\_id, usgs\_df["alt\_datum\_cd"].values[0], usgs\_df["alt\_va"].values[0])
 data2[read\_usgs["alt\_datum\_cd"].values[0]]=read\_usgs["alt\_va"].values[0]
 data2["Ref\_Datum"] = read\_usgs["alt\_datum\_cd"].values[0]
 usgs\_df = pd.DataFrame(data2, index=["name"])

 return usgs\_df

# =============================================================================
# df = pd.read\_excel(os.path.join(os.getcwd(), "Obs\_Locations\_Request.xlsx"), header=0)
# for index, row in df.iterrows():
# station\_id = row["Station ID"]
# if row["Data Source"] == "USGS":
# tmp\_df = grab\_usgs\_data(station\_id)
# print(station\_id, "\n", tmp\_df)
# else:
# pass
#
# =============================================================================
-\*- 코딩: utf-8 -\*-"""월 2 월 6 15:56:13 2023에 생성됨저자: ericallen{0} = 앞에 US/USGS 텍스트가 없는 사이트 IDhttps://waterservices.usgs.gov/nwis/site/?site={0}&format=rdb"# agency\_cd -- 대행사# site\_no -- 사이트 식별 번호# station\_nm -- 사이트 이름# site\_tp\_cd -- 사이트 유형# dec\_lat\_va -- 십진수 위도# dec\_long\_va - 십진수 경도# coord\_acy\_cd -- 위도-경도 정확도# dec\_coord\_datum\_cd -- 십진수 위도-경도 데이텀# alt\_va - 게이지/지표면 고도# alt\_acy\_va -- 고도 정확도# alt\_datum\_cd - 고도 데이텀# huc\_cd - 수문 단위 코드코드 이름 설명NGVD29 1929년 국가 측지 수직 데이텀 1929년 데이텀NAVD88 1988년 북미 수직 데이텀 1988년 북미 수직 데이텀OLDAK 구 알래스카 구 알래스카(본토) 및 알류샨 섬 데이텀OLDPR 구 푸에르토리코 및 버진아일랜드 구 PR & VI 데이텀HILOCAL 하와이 현지 하와이 현지 하와이 데이텀GUVD04 괌 데이텀 2004년 괌 수직 데이텀ASVD02 암 사모아 데이텀 2002년 미국령 사모아 수직 데이텀NMVD03 북마리아나 데이텀 2003년 북마리아나 수직 데이텀TIDELOCAL 조석 지역 현지 조석 데이텀COE1912 1912년 미국 공병대 데이텀 조정 1912년 COE 데이텀IGLD 그레이트 레이크 데이텀 국제 오대호 데이텀ASLOCAL \*암 사모아 현지 미국령 사모아 데이텀GULOCAL \*괌 현지 현지 괌 데이텀"""임포트 판다 AS PDnumpy를 np로 임포트#import osDATA\_USGS = {'Ref\_Datum':np.nan, 'MHHW':np.nan, 'MHW':np.nan, 'MTL':np.nan,\. 'MSL':np.nan, 'DTL':np.nan, 'MLW':np.nan, 'MLLW':np.nan,\' 'NAVD88':np.nan, 'STND':np.nan, "NGVD29":np.nan}DEF GRAB\_USGS\_DATA(STID): """스테이션과 기준 데이텀을 가져와 조석과 해류로부터 변환값을 가져옵니다""" short\_id = stid[2:]] # USGS API에 핑하여 데이터 가져오기 - 피트 단위 데이터 api\_url = "https://waterservices.usgs.gov/nwis/site/?site={0}&format=rdb".format(short\_id) skiprows = list(range(0,29)) read\_usgs = pd.read\_csv(api\_url, sep="\t", skiprows=skiprows) read\_usgs = read\_usgs.drop([0]) read\_usgs = read\_usgs.drop(['agency\_cd', 'station\_nm', 'site\_tp\_cd', 'dec\_lat\_va',\. 'dec\_long\_va', 'coord\_acy\_cd', 'dec\_coord\_datum\_cd', 'huc\_cd'], axis=1) READ\_USGS = READ\_USGS.DROPNA() read\_usgs.empty이면 usgs\_df = pd.DataFrame(DATA\_USGS, index=["name"]) else: data2 = DATA\_USGS.copy() #print(short\_id, usgs\_df["alt\_datum\_cd"].values[0], usgs\_df["alt\_va"].values[0]) data2[read\_usgs["alt\_datum\_cd"].values[0]]=read\_usgs["alt\_va"].values[0] data2["Ref\_Datum"] = read\_usgs["alt\_datum\_cd"].values[0] usgs\_df = pd.DataFrame(data2, index=["name"]) 반환 usgs\_df# =============================================================================# df = pd.read\_excel(os.path.join(os.getcwd(), "Obs\_Locations\_Request.xlsx"), header=0)# 인덱스의 경우, 행은 df.iterrows():# station\_id = row["Station ID"]# row["데이터 소스"] == "USGS":# tmp\_df = grab\_usgs\_data(station\_id)# print(station\_id, "\n", tmp\_df)# else:# pass## =============================================================================