Example #1
0
    def _generate_url(self, url, layer_name, bbox, service, version):
        base_url, values = break_url(url)
        bbox = [
            str(bbox.get('esip:westBound')),
            str(bbox.get('esip:southBound')),
            str(bbox.get('esip:eastBound')),
            str(bbox.get('esip:northBound'))
        ]
        if service == 'WMS':
            params = {
                "service": service,
                "request": "GetMap",
                "version": version,
                "layers": layer_name,
                "width": 500,
                "height": 500,
                "styles": "",
                "format": "image/png"  # totes wrong
            }
            if version == '1.3.0':
                params['crs'] = 'CRS:84'
            else:
                params['srs'] = 'EPSG:4326'
            params['bbox'] = ','.join(bbox)
        elif service == 'WFS':
            params = {
                "service": service,
                "request": "GetFeature",
                "version": version,
                "featureid": layer_name,
                "typenames": "namespace:featuretype"
            }
        elif service == 'WCS':
            params = {
                "service": service,
                "request": "GetCoverage",
                "version": version,
                "coverage": layer_name,
                "width": 500,
                "height": 500,
                'crs': 'CRS:84',
                'bbox': ','.join(bbox),
                "format": "GTiff"  # this is so wrong
            }
        elif service == 'CSW':
            return ''
        elif service == 'SOS':
            return ''

        return base_url + '?' + urllib.urlencode(params)
    def _generate_url(self, url, layer_name, bbox, service, version):
        base_url, values = break_url(url)
        bbox = [
            str(bbox.get('esip:westBound')),
            str(bbox.get('esip:southBound')),
            str(bbox.get('esip:eastBound')),
            str(bbox.get('esip:northBound'))
        ]
        if service == 'WMS':
            params = {
                "service": service,
                "request": "GetMap",
                "version": version,
                "layers": layer_name,
                "width": 500,
                "height": 500,
                "styles": "",
                "format": "image/png"  # totes wrong
            }
            if version == '1.3.0':
                params['crs'] = 'CRS:84'
            else:
                params['srs'] = 'EPSG:4326'
            params['bbox'] = ','.join(bbox)
        elif service == 'WFS':
            params = {
                "service": service,
                "request": "GetFeature",
                "version": version,
                "featureid": layer_name,
                "typenames": "namespace:featuretype"
            }
        elif service == 'WCS':
            params = {
                "service": service,
                "request": "GetCoverage",
                "version": version,
                "coverage": layer_name,
                "width": 500,
                "height": 500,
                'crs': 'CRS:84',
                'bbox': ','.join(bbox),
                "format": "GTiff"  # this is so wrong
            }
        elif service == 'CSW':
            return ''
        elif service == 'SOS':
            return ''

        return base_url + '?' + urllib.urlencode(params)
    def _extract_url(self, text):
        # but really first, is it a urn?
        text = self._verify_url(text)
        if not text:
            return '', '', []
        url = self._tidy_text(unquote(text))
        base_url, values = break_url(url)
        values = values.split(' ') + [base_url] if base_url else []

        # we're just running with a hack
        if url == 'http://dx.doi.org':
            return '', '', []

        if 'dx.doi.org' in base_url:
            t = 'doi'
        elif 'hdl.handle.net' in base_url:
            t = 'hdl'
        else:
            t = 'url'

        # return the original extracted url, tag, and the values plus
        # the base_url for more extracting
        return url, t, filter(None, [self._tidy_text(v) for v in values])