Esempio n. 1
0
    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)
Esempio n. 2
0
    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)
Esempio n. 3
0
    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)
Esempio n. 4
0
 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"
Esempio n. 5
0
 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'
Esempio n. 6
0
 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'
Esempio n. 7
0
    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)
Esempio n. 8
0
    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)
Esempio n. 9
0
    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)
Esempio n. 10
0
    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)