def _get_elements(complex_type, root): """Get attribute elements """ found_elements = [] element = findall(root, "{%s}complexType" % XS_NAMESPACE, attribute_name="name", attribute_value=complex_type)[0] found_elements = findall(element, "{%s}element" % XS_NAMESPACE) return found_elements
def _get_elements(complex_type, root): """Get attribute elements """ found_elements = [] element = findall(root, '{%s}complexType' % XS_NAMESPACE, attribute_name='name', attribute_value=complex_type)[0] found_elements = findall(element, '{%s}element' % XS_NAMESPACE) return found_elements
def get_remote_schema(url, typename, version='1.0.0'): """Copy the owslib.feature.schema.get_schema method to be able to monkeypatch the openURL request in tests. Parameters ---------- url : str Base URL of the WFS service. typename : str Typename of the feature type to get the schema of. version : str Version of WFS to use. Defaults to 1.0.0 Returns ------- dict Schema of the given WFS layer. """ url = _get_describefeaturetype_url(url, version, typename) res = __get_remote_describefeaturetype(url) root = etree.fromstring(res) if ':' in typename: typename = typename.split(':')[1] type_element = findall(root, '{%s}element' % XS_NAMESPACE, attribute_name='name', attribute_value=typename)[0] complex_type = type_element.attrib['type'].split(":")[1] elements = _get_elements(complex_type, root) nsmap = None if hasattr(root, 'nsmap'): nsmap = root.nsmap return _construct_schema(elements, nsmap)
def __get_schema(*args, **kwargs): file_path = getattr(request.module, "location_wfs_describefeaturetype") with open(file_path, 'r') as f: data = f.read() if type(data) is not bytes: data = data.encode('utf-8') root = etree.fromstring(data) typename = root.find( './{http://www.w3.org/2001/XMLSchema}element').get('name') if ":" in typename: typename = typename.split(":")[1] type_element = findall( root, "{http://www.w3.org/2001/XMLSchema}element", attribute_name="name", attribute_value=typename, )[0] complex_type = type_element.attrib["type"].split(":")[1] elements = _get_elements(complex_type, root) nsmap = None if hasattr(root, "nsmap"): nsmap = root.nsmap return _construct_schema(elements, nsmap)
def get_schema(url, typename, version='1.0.0', timeout=30, username=None, password=None): """Parses DescribeFeatureType response and creates schema compatible with :class:`fiona` :param str url: url of the service :param str version: version of the service :param str typename: name of the layer :param int timeout: request timeout """ url = _get_describefeaturetype_url(url, version, typename) res = openURL(url, timeout=timeout, username=username, password=password) root = etree.fromstring(res.read()) if ':' in typename: typename = typename.split(':')[1] type_element = findall(root, '{%s}element' % XS_NAMESPACE, attribute_name='name', attribute_value=typename)[0] complex_type = type_element.attrib['type'].split(":")[1] elements = _get_elements(complex_type, root) nsmap = None if hasattr(root, 'nsmap'): nsmap = root.nsmap return _construct_schema(elements, nsmap)
def get_schema(url, typename, version="1.0.0", timeout=30, username=None, password=None, auth=None): """Parses DescribeFeatureType response and creates schema compatible with :class:`fiona` :param str url: url of the service :param str version: version of the service :param str typename: name of the layer :param int timeout: request timeout :param str username: service authentication username :param str password: service authentication password :param Authentication auth: instance of owslib.util.Authentication """ if auth: if username: auth.username = username if password: auth.password = password else: auth = Authentication(username, password) url = _get_describefeaturetype_url(url, version, typename) res = openURL(url, timeout=timeout, auth=auth) root = etree.fromstring(res.read()) if ":" in typename: typename = typename.split(":")[1] type_element = findall( root, "{%s}element" % XS_NAMESPACE, attribute_name="name", attribute_value=typename, )[0] complex_type = type_element.attrib["type"].split(":")[1] elements = _get_elements(complex_type, root) nsmap = None if hasattr(root, "nsmap"): nsmap = root.nsmap return _construct_schema(elements, nsmap)
def get_schema(url, typename, version="1.0.0", timeout=30): """Parses DescribeFeatureType response and creates schema compatible with :class:`fiona` :param str url: url of the service :param str version: version of the service :param str typename: name of the layer :param int timeout: request timeout """ url = _get_describefeaturetype_url(url, version, typename) res = openURL(url, timeout=timeout) root = etree.fromstring(res.read()) type_element = findall(root, "{%s}element" % XS_NAMESPACE, attribute_name="name", attribute_value=typename)[0] complex_type = type_element.attrib["type"].split(":")[1] elements = _get_elements(complex_type, root) nsmap = None if hasattr(root, "nsmap"): nsmap = root.nsmap return _construct_schema(elements, nsmap)