-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcsw.py
90 lines (75 loc) · 2.59 KB
/
csw.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
"""Utilitaires pour le dialogue avec les services CSW des catalogues.
"""
def getrecordbyid_request(url_csw, file_identifier):
"""Crée une requête GetRecordById pour envoi en HTTP GET.
Parameters
----------
url_csw : str
L'URL de base du service CSW du catalogue, sans aucun paramètre.
file_identifier : str
L'identifiant de la fiche de métadonnées sur le catalogue.
Correspond à la valeur de la balise ``gmd:fileIdentifier``
des fiches ISO 19139.
Returns
-------
str
Examples
--------
>>> r = getrecordbyid_request(
... 'http://ogc.geo-ide.developpement-durable.gouv.fr/csw/dataset-harvestable',
... 'fr-120066022-jdd-d3d794eb-76ba-450a-9f03-6eb84662f297'
... )
>>> from urllib.request import urlopen
>>> with urlopen(r) as src:
... xml = src.read()
Notes
-----
La requête n'est pas en encodage-pourcent, car elle a vocation à être
passée au constructeur de la classe :py:class:`PyQt5.QtCore.QUrl` qui
s'en chargera.
"""
url_csw = url_csw.rstrip('?/')
config = {
'service' : 'CSW',
'REQUEST': 'GetRecordById',
'version': '2.0.2',
'namespace': 'xmlns:csw=http://www.opengis.net/cat/csw',
'outputFormat': 'application/xml',
'outputSchema': 'http://www.isotc211.org/2005/gmd',
'ElementSetName': 'full',
'Id': file_identifier
}
data = '&'.join('{}={}'.format(k, v) for k, v in config.items())
return '{}?{}'.format(url_csw, data)
def getcapabilities_request(url_csw):
"""Crée une requête GetCapabilities pour envoi en HTTP GET.
Parameters
----------
url_csw : str
L'URL de base du service CSW du catalogue, sans aucun paramètre.
Returns
-------
str
Examples
--------
>>> r = getcapabilities_request(
... 'http://ogc.geo-ide.developpement-durable.gouv.fr/csw/dataset-harvestable'
... )
>>> from urllib.request import urlopen
>>> with urlopen(r) as src:
... xml = src.read()
Notes
-----
La requête n'est pas en encodage-pourcent, car elle a vocation à être
passée au constructeur de la classe :py:class:`PyQt5.QtCore.QUrl` qui
s'en chargera.
"""
url_csw = url_csw.rstrip('?/')
config = {
'service' : 'CSW',
'REQUEST': 'GetCapabilities',
'version': '2.0.2',
'outputFormat': 'application/xml'
}
data = '&'.join('{}={}'.format(k, v) for k, v in config.items())
return '{}?{}'.format(url_csw, data)