def get_sciencebase_xml_metadata(self): """ Gets xml from sciencebase.gov, using XML url obtained from json using get_sciencebase_metadata(). Parameters ---------- ID : str ScienceBase ID string; e.g. 582da7efe4b04d580bd37be8 for Dane County Model Returns ------- metadata : dict Dictionary of metadata """ try: # use defusedxml to removed XML security vulnerabilities import defusedxml.ElementTree as ET except ImportError: raise ImportError("DefusedXML must be installed to query metadata") url = self.xmlfile msg = "Need an internet connection to get metadata from ScienceBase." text = get_url_text(url, error_msg=msg) return ET.fromstring(text)
def get_sciencebase_metadata(self, id): """ Gets metadata json text for given ID from sciencebase.gov; loads into python dictionary. Fetches the reference text using the url: https://www.sciencebase.gov/catalog/item/<ID>?format=json Parameters ---------- ID : str ScienceBase ID string; e.g. 582da7efe4b04d580bd37be8 for Dane County Model Returns ------- metadata : dict Dictionary of metadata """ urlbase = 'https://www.sciencebase.gov/catalog/item/{}?format=json' url = urlbase.format(id) import json from flopy.utils.flopy_io import get_url_text msg = 'Need an internet connection to get metadata from ScienceBase.' text = get_url_text(url, error_msg=msg) if text is not None: return json.loads(text)
def get_sciencebase_metadata(self, id): """ Gets metadata json text for given ID from sciencebase.gov; loads into python dictionary. Fetches the reference text using the url: https://www.sciencebase.gov/catalog/item/<ID>?format=json Parameters ---------- ID : str ScienceBase ID string; e.g. 582da7efe4b04d580bd37be8 for Dane County Model Returns ------- metadata : dict Dictionary of metadata """ urlbase = "https://www.sciencebase.gov/catalog/item/{}?format=json" url = urlbase.format(id) import json from flopy.utils.flopy_io import get_url_text msg = "Need an internet connection to get metadata from ScienceBase." text = get_url_text(url, error_msg=msg) if text is not None: return json.loads(text)
def creator_url(self): urlname = "-".join(self.creator.get("name").replace(".", "").split()) url = "https://www.usgs.gov/staff-profiles/" + urlname.lower() # check if it exists txt = get_url_text(url) if txt is not None: return url else: return "unknown"
def creator_url(self): urlname = '-'.join(self.creator.get('name').replace('.', '').split()) url = 'https://www.usgs.gov/staff-profiles/' + urlname.lower() # check if it exists txt = get_url_text(url) if txt is not None: return url else: return 'unknown'
def get_spatialreference(epsg, text='esriwkt'): """ Gets text for given epsg code and text format from spatialreference.org Fetches the reference text using the url: https://spatialreference.org/ref/epsg/<epsg code>/<text>/ See: https://www.epsg-registry.org/ Parameters ---------- epsg : int epsg code for coordinate system text : str string added to url Returns ------- url : str """ from flopy.utils.flopy_io import get_url_text epsg_categories = ['epsg', 'esri'] for cat in epsg_categories: url = '{}/ref/'.format(srefhttp) + \ '{}/{}/{}/'.format(cat, epsg, text) result = get_url_text(url) if result is not None: break if result is not None: return result.replace("\n", "") elif result is None and text != 'epsg': for cat in epsg_categories: error_msg = 'No internet connection or ' + \ 'epsg code {} '.format(epsg) + \ 'not found at {}/ref/'.format(srefhttp) + \ '{}/{}/{}'.format(cat, epsg, text) print(error_msg) # epsg code not listed on spatialreference.org # may still work with pyproj elif text == 'epsg': return '+init=epsg:{}'.format(epsg)
def get_sciencebase_xml_metadata(self): """Gets xml from sciencebase.gov, using XML url obtained from json using get_sciencebase_metadata(). Parameters ---------- ID : str ScienceBase ID string; e.g. 582da7efe4b04d580bd37be8 for Dane County Model Returns ------- metadata : dict Dictionary of metadata """ import xml.etree.ElementTree as ET from flopy.utils.flopy_io import get_url_text url = self.xmlfile text = get_url_text(url, error_msg='Need an internet connection to get metadata from ScienceBase.') return ET.fromstring(text)
def get_sciencebase_xml_metadata(self): """ Gets xml from sciencebase.gov, using XML url obtained from json using get_sciencebase_metadata(). Parameters ---------- ID : str ScienceBase ID string; e.g. 582da7efe4b04d580bd37be8 for Dane County Model Returns ------- metadata : dict Dictionary of metadata """ import xml.etree.ElementTree as ET from flopy.utils.flopy_io import get_url_text url = self.xmlfile msg = 'Need an internet connection to get metadata from ScienceBase.' text = get_url_text(url, error_msg=msg) return ET.fromstring(text)
def get_spatialreference(epsg, text='esriwkt'): """Gets text for given epsg code and text format from spatialreference.org Fetches the reference text using the url: http://spatialreference.org/ref/epsg/<epsg code>/<text>/ See: https://www.epsg-registry.org/ Parameters ---------- epsg : int epsg code for coordinate system text : str string added to url Returns ------- url : str """ from flopy.utils.flopy_io import get_url_text epsg_categories = ['epsg', 'esri'] for cat in epsg_categories: url = "http://spatialreference.org/ref/{2}/{0}/{1}/".format(epsg, text, cat) result = get_url_text(url) if result is not None: break if result is not None: return result.replace("\n", "") elif result is None and text != 'epsg': for cat in epsg_categories: error_msg = 'No internet connection or epsg code {0} ' \ 'not found at http://spatialreference.org/ref/{2}/{0}/{1}'.format( epsg, text, cat) print(error_msg) elif text == 'epsg': # epsg code not listed on spatialreference.org may still work with pyproj return '+init=epsg:{}'.format(epsg)