CSW Clients
CSW Clients pour ArcGIS
Télécharger : consultez le site GitHub CSW Clients du serveur du géoportail pour télécharger la dernière version de l'extension CSW Clients.
L’extension CSW Clients permet d’intégrer les fonctionnalités de découverte du géoportail dans les applications ArcMap et ArcGIS Explorer. Elle permet d’effectuer des recherches dans les catalogues CS-W de l’OGC (Catalog Service for the Web) directement avec ArcMap et ArcGIS Explorer. Une fois les ressources renvoyées, elles peuvent être consultées ou téléchargées. En outre, si les ressources sont des services dynamiques, elles peuvent être ajoutées au document ArcMap ou au globe ArcGIS Explorer. Dans ArcMap, des fonctionnalités supplémentaires permettent aux utilisateurs d’afficher un aperçu de l’étendue spatiale des ressources. Pour en savoir plus sur la façon dont le géoportail utilise CS-W, reportez-vous à la rubrique Service de catalogues du géoportail. Pour plus d’informations sur l’installation, l’utilisation et la personnalisation de l’extension CSW Clients, consultez les sections ci-dessous.
L'extension CSW Clients pour ArcGIS Explorer est compatible avec les versions 1200, 1500 et 1700 d'ArcGIS Explorer.
- Installer l’extension CSW Clients pour ArcGIS
- Utiliser l’extension CSW Clients pour ArcGIS
- Fonctionnement de l’extension CSW Clients
- Configuration de catalogues supplémentaires
- Création et ajout d’un nouveau profil
Installer l’extension CSW Clients pour ArcGIS
Etapes de l’installation
Si vous avez déjà installé l'extension CSW Clients sur le même ordinateur et que vous effectuez une mise à jour, désinstallez (Windows > Ajout/Suppression de programmes) la version précédente. Si vous avez utilisé l’extension CSW Clients dans ArcGIS Explorer, vous devez supprimer le fichier CSWSearchDockWindow.eaz du répertoire \\Application Data\ESRI\ArcGIS Explorer\AddIns, ainsi que le dossier Cache de ce même répertoire. Si vous ne les supprimez pas, votre version de l’extension CSW Clients fera référence à l’ancienne version du complément ArcGIS Explorer CSW Clients.
- Téléchargez la dernière version de l'extension CSW Clients sur le site GitHub CSW Clients du serveur du géoportail.
- Exécutez le fichier setup.exe de l’extension CSW Clients.
- Suivez les instructions de l’assistant d’installation. Le programme d’installation vous permet de choisir entre une installation complète ou personnalisée. Une installation personnalisée permet de choisir si vous voulez installer l’extension CSW Clients à la fois pour ArcMap et pour ArcGIS Explorer, ou seulement l’un des deux.
- Au cours de l’installation, le programme d’installation regarde si .NET Framework d’ArcGIS est présent. Si .NET Framework est introuvable, l’extension CSW Clients pour ArcGIS Desktop n’est pas installée. Toutefois, l’installation de CSW Clients pour ArcGIS Explorer se poursuit et une boîte de dialogue vous informant de la progression de l’installation apparaît.
Ajouter l’extension CSW Clients à ArcMap
- Démarrez ArcGIS Desktop. L’extension CSW Client est utilisée avec le composant ArcMap d’ArcGIS Desktop.
- Cliquez sur Personnaliser > Mode Personnaliser. La fenêtre Personnaliser s'affiche.
- Cliquez sur l’onglet Commandes de la fenêtre Personnaliser.
- Faites défiler vers le bas la liste des Commandes, puis sélectionnez Géoportail. L’icône de l’extension CSW Clients apparaît dans la fenêtre Commandes située sur la droite.
- Faites glisser l’icône CSW Clients dans un espace vide de la barre d’outils ArcMap de votre choix.
- Fermez la fenêtre Personnaliser.
Ajouter l’extension CSW Clients à ArcGIS Explorer
- Ouvrez l’application ArcGIS Explorer.
- En haut de l’application, cliquez sur le bouton ArcGIS Explorer dans l’angle supérieur gauche. Un menu s’affiche.
- Cliquez sur le bouton Options ArcGIS Explorer. La fenêtre Options ArcGIS Explorer apparaît.
- Cliquez sur Ressources dans le menu de gauche. L’écran de droite comporte plusieurs en-têtes. Cliquez sur le bouton Compléments à droite de l’en-tête gérer les compléments.
- Une autre fenêtre, dans laquelle vous pouvez afficher et gérer les compléments, s’ouvre. Cliquez sur le bouton Ajouter à droite de la fenêtre et accédez au fichier de l’extension CSW Clients intitulé CSWSearchDockWindow.eaz. L’emplacement d’installation par défaut de ce fichier est C:\Program Files\ESRI\Geoportal\CSWClients.
- Cliquez sur Ouvrir pour charger le complément CSWSearchDockWindow.eaz.
- Lorsque vous fermez la boîte de dialogue Complément, vous pouvez être invité à redémarrer l’application ArcGIS Explorer. Après le redémarrage, l’extension CSW Clients restera toujours disponible par défaut sauf si vous choisissez de la supprimer de la liste des compléments.
- Accédez à l’extension CSW Clients en cliquant sur l’onglet Complément en haut de l’application ArcGIS Explorer.
L’extension CSW Clients peut maintenant être utilisée. Lisez la section se rapportant à l’utilisation de l’extension CSW Clients et Fichier CswClient.log de l’extension CSW Clients pour en savoir plus sur la consignation.
Utiliser l’extension CSW Clients pour ArcGIS
L’extension CSW Clients s’utilise de la même façon qu’ArcMap et ArcGIS Explorer. Les méthodes de recherche de ressources dans un catalogue, d’affichage des métadonnées, de téléchargement des métadonnées et d’ajout d’une ressource à la carte sont décrites ci-dessous. Dans ArcMap, cliquez sur CSW Clients pour ouvrir l’outil. Dans ArcGIS Explorer, sélectionnez l’onglet Compléments, puis CSW Clients pour ouvrir la tâche.
Parcourir un catalogue
Pour effectuer une recherche :
- Cliquez sur l’onglet Rechercher.
- Tapez un terme dans la zone de texte Rechercher. Remarque :
Si vous ne saisissez pas de critères de recherche, le nombre maximum de résultats pouvant être extraits est de 100. Si vous tentez d’obtenir plus de 100 résultats, un message "Aucun résultat trouvé" apparaît.
- Choisissez un des services de catalogues dans le menu déroulant Dans le catalogue. Pour configurer d’autres catalogues, reportez-vous à la section Configurer d’autres catalogues et profils.
- Saisissez des paramètres pour affiner votre recherche (facultatif). Les paramètres de recherche sont décrits ci-dessous.
-
Données et cartes dynamiques uniquement : la recherche peut être limitée aux ressources des services dynamiques en cochant la case Données et cartes dynamiques uniquement. Les services dynamiques peuvent être ajoutés au document ArcMap ou ArcGIS Explorer sous forme de couche. Remarque :
Si vous n’avez pas saisi de terme de recherche mais que vous cochez la case Données et cartes dynamiques uniquement, il est possible d’extraire plus de 100 enregistrements, car la requête est dans ce cas renseignée par un paramètre de recherche, type de contenu = service dynamique.
- Maximum : pour restreindre le nombre d’enregistrements renvoyés dans les résultats de recherche, modifiez la valeur de la zone Maximum. La limite est de 500 lorsque des paramètres de recherche sont saisis et de 100 si la recherche ne comprend aucun paramètre.
- Utiliser l’étendue actuelle (ArcMap uniquement) : si une étendue est déjà définie dans la fenêtre de document ArcMap, cette case peut être cochée et l’extension CSW Clients n’extrait alors que les résultats qui entrent dans le cadre de l’étendue définie. Certaines URL de service CSW n’acceptant pas les requêtes d’étendue, le nombre des résultats renvoyés peut en être affecté.
-
Données et cartes dynamiques uniquement : la recherche peut être limitée aux ressources des services dynamiques en cochant la case Données et cartes dynamiques uniquement. Les services dynamiques peuvent être ajoutés au document ArcMap ou ArcGIS Explorer sous forme de couche.
- Cliquez sur le bouton Rechercher pour exécuter la recherche. Les résultats sont renvoyés dans la fenêtre Résultats. Pour chaque ressource de résultat renvoyée, la fenêtre Résumé affiche les informations résumées de la ressource sélectionnée si elles sont disponibles dans ses métadonnées.
Utiliser les résultats des recherches
Notez les outils situés au-dessous de la fenêtre Résultats. Sept boutons sont affichés, qui représentent les fonctionnalités associées aux résultats des recherches. La fonctionnalité associée à chaque bouton est décrite ci-dessous.
- L’outil Afficher les métadonnées permet d’ouvrir le document des métadonnées de la ressource au format XML dans une nouvelle fenêtre.
- L’outil Télécharger en aval les métadonnées permet de télécharger et d’enregistrer le fichier XML des métadonnées de la ressource.
- L’outil Ajouter à la carte permet d’ajouter le service décrit par la ressource à la carte ou au globe sous forme d’une nouvelle couche. Ce bouton est grisé sauf si le type de contenu de la ressource est "Données et cartes dynamiques". Si vous cliquez sur le bouton Ajouter à la carte et qu’aucune donnée n’est ajoutée à la carte, il est possible que les métadonnées de la ressource ne comprennent pas d’informations sur le service. Afin d’afficher le service dynamique, des informations de connexion au service doivent être fournies dans le fichier xml des métadonnées de cette ressource.
- Les quatre boutons suivants sont liés à l’affichage de l’emprise spatiale d’une ressource dans la fenêtre de carte actuelle. L’étendue affichée dans l’emprise correspond à celle qui est définie dans les métadonnées de la ressource.
- L’outil Afficher l’emprise permet d’afficher l’étendue de la ressource sélectionnée superposée sur la carte.
- L’outil Zoom sur l’emprise permet de zoomer sur l’étendue de la ressource sélectionnée. Ceci est particulièrement utile si l’étendue est une petite région ou si le fond de carte utilise une projection différente.
- L’outil Afficher toutes les emprises permet d’ajouter toutes les emprises dans la fenêtre Résultats à la fois. Pour les masquer, cliquez de nouveau sur ce bouton.
- L’outil Effacer toutes les emprises permet de supprimer toutes les emprises qui ont été ajoutées à la carte.
Fonctionnement de l’extension CSW Clients
L’extension CSW Clients a besoin de trois informations pour extraire les enregistrements d’un service de catalogues et les afficher dans ArcMap ou ArcGIS Explorer.
- Une URL GetCapabilities menant au catalogue : cette information est saisie dans le champ URL du service de catalogues de l’onglet de configuration de l’extension CSW Clients. L’URL GetCapabilities fournit l’extrémité du catalogue à laquelle l’extension CSW Clients envoie la requête de recherche et de laquelle elle reçoit la réponse.
- Critères de recherche : ces informations sont saisies dans les champs de l’onglet Rechercher de l’extension CSW Clients. Les critères de recherche déterminent les ressources renvoyées par l’extension CSW Clients. Les critères de recherche jouent le rôle de filtres. Ils peuvent par exemple filtrer selon un terme de recherche, indiquer si les données doivent être des données dynamiques uniquement et le nombre maximum de résultats de recherche à renvoyer.
- Un profil de catalogue : le profil du service de catalogues est choisi dans un menu déroulant de l’onglet de configuration de l’extension CSW Clients. La désignation du profil de catalogue indique à l’extension CSW Clients quel profil le service de catalogues utilise. L’association entre le service de catalogues et son profil est définie dans un fichier nommé CSWCatalogs.xml. Ce fichier est actualisé à chaque fois qu’un nouveau catalogue est configuré avec l’onglet de configuration de l’extension CSW Clients. L’extension CSW Clients fait référence au fichier CSWCatalogs.xml pour découvrir le profil utilisé par le catalogue. La liste des profils disponibles est définie dans un autre fichier, CSWProfiles.xml. Le profil indique quels fichiers xslt vont être utilisés pour formuler des requêtes entre l’extension CSW Clients et le catalogue.
<?xml version="1.0" encoding="utf-8" ?> <CSWProfiles> <!-- OGCCORE ESRI GPT --> <Profile> <ID>urn:ogc:CSW:2.0.2:HTTP:OGCCORE:ESRI:GPT</ID> <Name>ArcGIS Server Geoportal</Name> <CswNamespace>http://www.opengis.net/cat/csw/2.0.2</CswNamespace> <Description /> <GetRecords> <XSLTransformations> <Request>CSW_2.0.2_OGCCORE_ESRI_GPT_GetRecords_Request.xslt</Request> <Response>CSW_2.0.2_OGCCORE_ESRI_GPT_GetRecords_Response.xslt</Response> </XSLTransformations> </GetRecords> <GetRecordByID> <RequestKVPs> <![CDATA[service=CSW&request=GetRecordById&version=2.0.2&ElementSetName=full]]> </RequestKVPs> <XSLTransformations> <Response>CSW_2.0.2_OGCCORE_ESRI_GPT_GetRecordByID_Response.xslt</Response> </XSLTransformations> </GetRecordByID> <SupportSpatialQuery>True</SupportSpatialQuery> <SupportContentTypeQuery>True</SupportContentTypeQuery> <SupportSpatialBoundary>True</SupportSpatialBoundary> </Profile>
Flux d’informations avec les fichiers xslt
Conceptuellement, il existe trois espaces d’interaction lorsque vous utilisez l’extension CSW Clients : l’interface utilisateur de l’extension CSW Clients, l’activité de conversion de CSW Clients et le service de catalogues avec lequel CSW Clients interagit. Les interactions ont lieu lorsque l’utilisateur lance une recherche avec CSW Clients et lorsqu’il initie une communication avec le service de catalogues à l’aide des boutons Afficher les métadonnées, Télécharger en aval les métadonnées, Ajouter à la carte et Afficher l’emprise de l’extension CSW Clients. Les trois diagrammes ci-dessous illustrent comment l’interface utilisateur, l’activité de conversion et le service de catalogues interagissent pour effectuer des recherches et afficher les informations de métadonnées dans ArcMap ou ArcGIS Explorer.
-
Requête initiale destinée à un service
Le flux de communication initial pour la requête et les réponses CS-W est illustré dans le diagramme ci-dessous. Les étapes numérotées font ensuite l’objet d’une explication.
- Lorsqu’un utilisateur clique sur le bouton Rechercher pour CSW Clients, l’extension fait référence au fichier CSWCatalogs.xml pour rechercher le profil correspondant à ce service de catalogues. Le profil correspondant détermine quels fichiers GetRecords_Request, GetRecords_Response et GetRecordByID_Response seront utilisés. Ensuite, l’extension CSW Clients crée un fichier xml générique. Ce fichier a l’aspect suivant :
<csw:GetRecords version="2.0.2" service="CSW" resultType="RESULTS" startPosition="1" maxRecords="10" xmlns:csw="http://www.opengis.net/cat/csw/2.0.2"> <csw:Query typeNames="csw:Record" xmlns:ogc="http://www.opengis.net/ogc" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:gml="http://www.opengis.net/gml"> <csw:ElementSetName>full</csw:ElementSetName> <csw:Constraint version="1.0.0"> <ogc:Filter xmlns="http://www.opengis.net/ogc"> <ogc:And> <ogc:PropertyIsLike wildCard="" escape="" singleChar=""> <ogc:PropertyName>AnyText</ogc:PropertyName> <ogc:Literal>wms</ogc:Literal> </ogc:PropertyIsLike> <ogc:PropertyIsEqualTo> <ogc:PropertyName>Format</ogc:PropertyName> <ogc:Literal>liveData</ogc:Literal> </ogc:PropertyIsEqualTo> </ogc:And> </ogc:Filter> </csw:Constraint> </csw:Query> </csw:GetRecords>
Observez attentivement les informations qui sont transférées dans ce code. Chaque information correspond à ce qui est saisi dans l’interface utilisateur CSW Clients. Dans l’élément GetRecords, un attribut indique le nombre d’enregistrements à extraire (maxRecords) et dans cet exemple, dix enregistrements sont renvoyés. Un élément définit le terme de recherche qui est entré (PropertyName AnyText) et dans cet exemple, le terme de recherche est ’wms’. Ensuite, un paramètre permet d’extraire le type de contenu du document, s’il est disponible (PropertyName Format) et dans cet exemple, les enregistrements à extraire doivent être de type liveData (la case à cocher Données et cartes dynamiques uniquement dans l’interface utilisateur).Remarque :D’autres paramètres peuvent être présents dans ce fichier xml générique pour l’étendue spatiale, la catégorie de rubrique ISO et la date de modification. Les paramètres de rubrique ISO et de date de modification doivent être utilisés dans l’application Web du géoportail seule, et n’ont pas besoin d’être spécifiés pour une utilisation avec l’extension CSW Clients.
- L’extension CSW Clients interprète le fichier XML générique et applique une transformation conforme au fichier GetRecords_Request.xslt qui convertit le fichier XML générique en CS-W GetRecordsRequest afin que le service de catalogues puisse interpréter les critères de recherche.
- Le fichier xml transformé est transmis comme GetRecordsRequest au service de catalogues.
- Le service de catalogues répond par une liste d’enregistrements correspondant aux critères de recherche, mis en forme d’après la syntaxe CS-W.
- L’extension CSW Clients applique le fichier GetRecords_Response.xslt qui convertit la réponse du service de catalogues en résultats que l’interface CSW Client doit afficher. Un résumé, des informations d’emprise pour les boutons Emprise et une mention indiquant si les enregistrements sont des données dynamiques sont également renvoyés pour chaque enregistrement.
- Lorsqu’un utilisateur clique sur le bouton Rechercher pour CSW Clients, l’extension fait référence au fichier CSWCatalogs.xml pour rechercher le profil correspondant à ce service de catalogues. Le profil correspondant détermine quels fichiers GetRecords_Request, GetRecords_Response et GetRecordByID_Response seront utilisés. Ensuite, l’extension CSW Clients crée un fichier xml générique. Ce fichier a l’aspect suivant :
Boutons Afficher les métadonnées et Télécharger en aval les données Pour les boutons Afficher les métadonnées et Télécharger en aval les données, l’extension CSW Clients n’a pas besoin d’appliquer les feuilles de style pour interpréter les informations saisies par l’utilisateur ou afficher la réponse du service de catalogues. En revanche, l’extension CSW Clients utilise les requêtes et réponses GetRecordById natives du service de catalogues pour extraire les métadonnées. Ce flux de communication est illustré dans le diagramme ci-dessous. Les étapes numérotées font ensuite l’objet d’une explication.
- Lorsqu’un utilisateur clique sur les boutons Afficher les métadonnées ou Télécharger en aval les données, l’extension CSW Clients demande le document de métadonnées complet de l’enregistrement à l’aide de la requête GetRecordById innée du service de catalogues définie dans son élément GetCapabilities.
- Le service de catalogues répond par une réponse GetRecordById et les métadonnées complètes sont renvoyées dans l’interface utilisateur.
Bouton Ajouter à la carte Une transformation supplémentaire, nommée GetRecordByID_Response.xslt, entre en jeu lorsque l’utilisateur clique sur le bouton Ajouter à la carte. Le flux de communication est illustré dans le diagramme ci-dessous. Les étapes numérotées font ensuite l’objet d’une explication.
- Lorsqu’un utilisateur clique sur le bouton Ajouter à la carte ou Ajouter des emprises, l’extension CSW Clients récupère la réponse GetRecordByID d’un service de catalogues.
- L’extension CSW Clients applique ensuite le fichier GetRecordByID_Response.xslt à la réponse pour extraire l’URL qui est utilisée pour le service dynamique.
- L’URL est ensuite envoyée à l’interface utilisateur pour Ajouter à la carte, ou pour les emprises des métadonnées, selon la définition des informations d’enveloppe dans les métadonnées.
Configuration de catalogues supplémentaires
L’extension CSW Clients est préconfigurée pour rechercher par défaut dans le catalogue GOS2 OGC Core Geospatial OneStop de l’interface de recherche. Mais si vous souhaitez effectuer des recherches dans un autre service de catalogues que Geospatial OneStop, cela est possible en inscrivant le service de catalogues dans l’onglet Configurer de l’extension CSW Clients.
-
Inscrire un service de catalogues pour l’utiliser dans l’extension CSW Clients
- Commencez par cliquer sur l’onglet Configurer. Trois champs en entrée et trois boutons apparaissent sur cet onglet. Dans ces champs, vous allez saisir des informations qui définissent la connexion au service de catalogues et indiquer le nom du service dans l’interface utilisateur.
- Cliquez sur le bouton Nouveau pour effacer le formulaire et saisir votre nouveau service de catalogues.
- Dans la zone en entrée URL du service de catalogues, tapez l’URL GetCapabilities du service que vous souhaitez ajouter. Si vous inscrivez le catalogue de services de la version 10 du géoportail, le format de l’URL ressemble à ceci :
http://serverName/geoportal/csw/discovery?Request=GetCapabilities&Service=CSW&Version=2.0.2
- Dans la liste déroulante Profil, indiquez le profil que le service de catalogues utilise. Pour trouver cette information, vous pouvez coller l’URL GetCapabilities dans un navigateur Web et lire la réponse obtenue qui vous aidera. Si vous ne parvenez pas à déterminer le profil en vous aidant de la réponse GetCapabilities, contactez l’organisation hôte du service de catalogues et demandez de quel profil il s’agit. Si vous inscrivez un catalogue de services de la version 10 du géoportail, le profil est ArcGIS Server Geoportal. Si le service de catalogues utilise un profil qui ne figure pas dans la liste déroulante par défaut, vous pouvez l’ajouter. Pour obtenir des instructions, reportez-vous à la section Création et ajout d’un nouveau profil.
- Donnez un nom complet au service de catalogues en le tapant dans le champ Nom complet.
- Cliquez sur le bouton Enregistrer pour ajouter le nouveau catalogue à la liste.
- Maintenant, activez l’onglet Rechercher. Le service de catalogues que vous venez d’inscrire doit apparaître dans la liste déroulante Dans le catalogue.
-
Mise à jour d’un service de catalogues existant dans la liste
- Cliquez sur l’onglet Configurer.
- Mettez en surbrillance le service de catalogues que vous voulez mettre à jour dans la liste Catalogues. Les informations indiquées dans les champs URL du service de catalogues, Profil et Nom complet sont chargées dans l’interface.
- Modifiez ces champs.
- Cliquez sur le bouton Enregistrer.
-
Suppression d’un service de catalogues existant de la liste
- Cliquez sur l’onglet Configurer.
- Mettez en surbrillance le service de catalogues que vous voulez supprimer de la liste des catalogues inscrits.
- Cliquez sur le bouton Supprimer.
- Le système affiche une fenêtre de confirmation. Cliquez sur Oui pour confirmer la suppression.
Création et ajout d’un nouveau profil
Pour inscrire un service de catalogues qui n’utilise aucun des profils fournis par défaut par l’extension CSW Clients, vous devez créer les trois fichiers xslt utilisés pour récupérer les résultats de recherche et extraire l’URL utilisée pour ajouter des données dynamiques à la carte. Ces trois fichiers ont été abordés à la section Fonctionnement de l’extension CSW Clients. Après avoir créé ces trois fichiers xslt, vous devez les référencer avec une nouvelle entrée de profil dans le fichier CSWProfiles.xml. La section ci-dessous donne des détails sur la création de chaque fichier xslt et explique comment ajouter la référence au fichier CSWProfiles.xml.
-
Créer le fichier GetRecords_Request.xslt
N’oubliez pas que l’extension CSW Clients applique une transformation qui convertit le fichier XML générique de l’interface utilisateur CSW Clients en GetRecordsRequest CS-W que le service de catalogues est en mesure d’interpréter. L’extrait de code ci-dessous montre un fichier GetRecords_Request.xslt générique avec des annotations dans les sections commentées qui décrivent les détails des parties importantes du fichier. Copiez ce texte dans un éditeur de texte, tel que le Bloc-notes, et apportez les modifications indiquées dans les commentaires.
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="no" encoding="UTF-8" omit-xml-declaration="yes"/> <xsl:template match="/"> <xsl:element name="csw:GetRecords" use-attribute-sets="GetRecordsAttributes" xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" xmlns:ogc="http://www.opengis.net/ogc" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:gml="http://www.opengis.net/gml"> <csw:Query typeNames="csw:Record"> <csw:ElementSetName>full</csw:ElementSetName> <csw:Constraint version="1.0.0"> <ogc:Filter xmlns="http://www.opengis.net/ogc"> <ogc:And> <!-- CSW Client must retrieve the following information to define the search the user specifies in the User Interface: 'KeyWord' corresponds to the search term the user inputs, 'LiveDataMap' corresponds to if the user specifies "Live Data and Maps Only", and 'Envelope' specifies the bounding box for a search based on the current extent of the ArcMap window. The 'tmpltDate' corresponds to searching a catalog via the Geoportal, in the Additional Options, Modified Date search on the Search page. --> <!-- Key Word search --> <xsl:apply-templates select="/GetRecords/KeyWord"/> <!-- LiveDataOrMaps search --> <xsl:apply-templates select="/GetRecords/LiveDataMap"/> <!-- Envelope search, e.g. ogc:BBOX --> <xsl:apply-templates select="/GetRecords/Envelope"/> <!-- Date Range Search --> <xsl:call-template name="tmpltDate"/> </ogc:And> </ogc:Filter> </csw:Constraint> </csw:Query> </xsl:element> </xsl:template> <!-- key word search : This template is used to pass the search term to the catalog service. The PropertyName 'AnyText' is variable, depending on what your catalog service accepts. 'AnyText' will search all fields, irrespective of which XML element. If you wanted to search only the title or abstract, you could change this PropertyName parameter accordingly. The 'PropertyIsLike' elements (wildCard="" escape= "" singleChar="") are specific to the CSW specification your catalog service follows. --> <xsl:template match="/GetRecords/KeyWord" xmlns:ogc="http://www.opengis.net/ogc"> <xsl:if test="normalize-space(.)!=''"> <ogc:PropertyIsLike wildCard="" escape="" singleChar=""> <ogc:PropertyName>AnyText</ogc:PropertyName> <ogc:Literal> <xsl:value-of select="."/> </ogc:Literal> </ogc:PropertyIsLike> </xsl:if> </xsl:template> <!-- LiveDataOrMaps search: This template is used to pass the requirement to retrieve only live data/map records from the catalog service. The PropertyName 'Format' depends on the parameter your catalog service accepts to define the type of resource the resulting record describes. The Literal element "liveData" can be changed to indicate the term your service may use to retrieve live data records.--> <xsl:template match="/GetRecords/LiveDataMap" xmlns:ogc="http://www.opengis.net/ogc"> <xsl:if test="translate(normalize-space(./text()),'true', 'TRUE') ='TRUE'"> <ogc:PropertyIsEqualTo> <ogc:PropertyName>Format</ogc:PropertyName> <ogc:Literal>liveData</ogc:Literal> </ogc:PropertyIsEqualTo> </xsl:if> </xsl:template> <!-- Envelope search: This template is used to define a bounding box for resulting records returned from the catalog service if the "Use Current Extent" option is selected (ArcMap CSW Client only). Resulting records must fall within this bounding box. Do not change the PropertyName, Box, or coordinates elements.--> <xsl:template match="/GetRecords/Envelope" xmlns:ogc="http://www.opengis.net/ogc"> <!-- generate BBOX query if minx, miny, maxx, maxy are provided --> <xsl:if test="./MinX and ./MinY and ./MaxX and ./MaxY"> <ogc:BBOX xmlns:gml="http://www.opengis.net/gml"> <ogc:PropertyName>Geometry</ogc:PropertyName> <gml:Box srsName="http://www.opengis.net/gml/srs/epsg.xml#4326"> <gml:coordinates> <xsl:value-of select="MinX"/>,<xsl:value-of select="MinY"/>,<xsl:value-of select="MaxX"/>,<xsl:value-of select="MaxY"/> </gml:coordinates> </gml:Box> </ogc:BBOX> </xsl:if> </xsl:template> <!-- tmpltDate: This template is used to define the date range for when resulting records returned from the catalog service were modified. This is only used for the geoportal search, and not the CSW Client search. This section needs to be included only if you want to apply your custom profile to the geoportal itself as well as the CSW Client (the custom profile would appear in the dropdown list of profiles when a publisher user registers a CSW repository). Do not change this section.--> <xsl:template name="tmpltDate" xmlns:ogc="http://www.opengis.net/ogc"> <xsl:if test="string-length(normalize-space(/GetRecords/FromDate/text())) > 0"> <ogc:PropertyIsGreaterThanOrEqualTo> <ogc:PropertyName>Modified</ogc:PropertyName> <ogc:Literal><xsl:value-of select="normalize-space(/GetRecords/FromDate/text())"/> </ogc:Literal> </ogc:PropertyIsGreaterThanOrEqualTo> </xsl:if> <xsl:if test="string-length(normalize-space(/GetRecords/ToDate/text())) > 0"> <ogc:PropertyIsLessThanOrEqualTo> <ogc:PropertyName>Modified</ogc:PropertyName> <ogc:Literal><xsl:value-of select="normalize-space(/GetRecords/ToDate/text())"/></ogc:Literal> </ogc:PropertyIsLessThanOrEqualTo> </xsl:if> </xsl:template> <xsl:attribute-set name="GetRecordsAttributes"> <xsl:attribute name="version">2.0.2</xsl:attribute> <xsl:attribute name="service">CSW</xsl:attribute> <xsl:attribute name="resultType">RESULTS</xsl:attribute> <xsl:attribute name="startPosition"> <xsl:value-of select="/GetRecords/StartPosition"/> </xsl:attribute> <xsl:attribute name="maxRecords"> <xsl:value-of select="/GetRecords/MaxRecords"/> </xsl:attribute> </xsl:attribute-set> </xsl:stylesheet>
Une fois le texte modifié, enregistrez le fichier sous le nom 'GetRecords_Request.xslt'. -
Créer le fichier GetRecords_Response.xslt
N’oubliez pas que l’extension CSW Client applique une transformation qui convertit la réponse du service de catalogues aux critères de recherche envoyés en résultats que l’interface CSW Client doit afficher. L’extrait de code ci-dessous montre un fichier GetRecords_Response.xslt générique avec des annotations dans les sections commentées qui décrivent les détails des parties importantes du fichier. Copiez ce texte dans un éditeur de texte et apportez les modifications indiquées dans les commentaires. Notez que lorsque des éléments de métadonnées spécifiques sont référencés dans des instructions select de cet exemple, vous devez vérifier la structure de métadonnées que votre service de catalogues utilise et vous assurer que les éléments sélectionnés sont conformes à cette structure. Par exemple, dans l’élément <ID> ci-dessous, l’exemple montre que l’élément dc:identifier va être sélectionné. Cela est correct si la réponse du service de catalogues repose sur Dublin Core. Mais si la réponse de votre service de catalogues repose sur ISO 19139, l’instruction select de l’élément <ID> doit être changée en gmd:fileIdentifier/gco:CharacterString.
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" xmlns:dct="http://purl.org/dc/terms/" xmlns:ows="http://www.opengis.net/ows" xmlns:dc="http://purl.org/dc/elements/1.1/" exclude-result-prefixes="csw dc dct ows"> <xsl:output method="xml" indent="no" encoding="UTF-8" omit-xml-declaration="yes" /> <xsl:template match="/"> <xsl:choose> <!-- if CSW response returns some exception, do the following --> <xsl:when test="/ows:ExceptionReport"> <exception> <exceptionText> <xsl:for-each select="/ows:ExceptionReport/ows:Exception"> <xsl:value-of select="ows:ExceptionText"/> </xsl:for-each> </exceptionText> </exception> </xsl:when> <xsl:otherwise> <Records> <xsl:attribute name="maxRecords"> <xsl:value-of select="/csw:GetRecordsResponse/csw:SearchResults/@numberOfRecordsMatched"/> </xsl:attribute> <xsl:for-each select="/csw:GetRecordsResponse/csw:SearchResults/csw:Record | /csw:GetRecordsResponse/csw:SearchResults/csw:BriefRecord | /csw:GetRecordByIdResponse/csw:Record | /csw:GetRecordsResponse/csw:SearchResults/csw:SummaryRecord"> <Record> <ID> <xsl:choose> <xsl:when test="string-length(normalize-space(dc:identifier[@scheme='urn:x-esri:specification:ServiceType:ArcIMS:Metadata:DocID']/text())) > 0"> <xsl:value-of select="normalize-space(dc:identifier[@scheme='urn:x-esri:specification:ServiceType:ArcIMS:Metadata:DocID'])"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="normalize-space(dc:identifier)"/> </xsl:otherwise> </xsl:choose> </ID> <Title> <xsl:value-of select="dc:title"/> </Title> <Abstract> <xsl:value-of select="dct:abstract"/> </Abstract> <Type> <xsl:value-of select="dc:type"/> </Type><!--each profile could have a different type of bounding box. Some of have two, some have four. This one has four --> <LowerCorner> <xsl:value-of select="ows:WGS84BoundingBox/ows:LowerCorner"/> </LowerCorner> <UpperCorner> <xsl:value-of select="ows:WGS84BoundingBox/ows:UpperCorner"/> </UpperCorner> <MaxX> <xsl:value-of select="normalize-space(substring-before(ows:WGS84BoundingBox/ows:UpperCorner, ' '))"/> </MaxX> <MaxY> <xsl:value-of select="normalize-space(substring-after(ows:WGS84BoundingBox/ows:UpperCorner, ' '))"/> </MaxY> <MinX> <xsl:value-of select="normalize-space(substring-before(ows:WGS84BoundingBox/ows:LowerCorner, ' '))"/> </MinX> <MinY> <xsl:value-of select="normalize-space(substring-after(ows:WGS84BoundingBox/ows:LowerCorner, ' '))"/> </MinY> <ModifiedDate> <xsl:value-of select="./dct:modified"/> </ModifiedDate> <!-- used to extract any urls in the document. It gets the urls and the scheme attribute (@scheme, which determines their type (type of url it is (thumbnail, website, server, contact, etc. urls)). We always choose the "server" url when we add to map. --> <References> <xsl:for-each select="./dct:references"> <xsl:value-of select="."/> <xsl:text>✔</xsl:text> <xsl:value-of select="@scheme"/> <xsl:text>✕</xsl:text> </xsl:for-each> </References> <!-- this extracts content type information. Can be used to highlight add to map button--> <Types> <xsl:for-each select="./dc:type"> <xsl:value-of select="."/> <xsl:text>✔</xsl:text> <xsl:value-of select="@scheme"/> <xsl:text>✕</xsl:text> </xsl:for-each> </Types> </Record> </xsl:for-each> </Records> </xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet>
Une fois le texte modifié, enregistrez le fichier sous le nom 'GetRecords_Response.xslt'. - Créer le fichier GetRecordByID_Response.xslt
N’oubliez pas que l’extension CSW Client applique le fichier GetRecordByID_Response.xslt à une réponse GetRecordsByID du service de catalogues uniquement pour extraire l’URL qui sert à afficher un service dynamique dans l’interface. L’extrait de code ci-dessous montre un fichier GetRecordsByID_Response.xslt générique. La partie importante de la personnalisation du fichier consiste à identifier à quel endroit de la réponse CS-W se trouvent des informations concernant un service dynamique. Ceci peut être défini dans la section <xsl:template> avec des instructions select. L’exemple ci-dessous s’applique à un service de catalogues Dublin Core et nous voyons que le XPath menant aux informations du service se trouvent dans l’élément csw:record/dct:references. Si vous souhaitez voir des exemples qui utilisent les connecteurs ArcIMS CS-W ou ISO 19139, ouvrez d’autres fichiers GetRecordByID_Response xslt dans le dossier \\CSWClients\Data et recherchez un exemple proche de la norme utilisée par votre service de catalogues.
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" xmlns:dct="http://purl.org/dc/terms/" xmlns:ows="http://www.opengis.net/ows" exclude-result-prefixes="csw dct"> <xsl:output method="text" indent="no" encoding="UTF-8"/> <xsl:template match="/"> <xsl:choose> <xsl:when test="/ows:ExceptionReport"> <exception> <exceptionText> <xsl:for-each select="/ows:ExceptionReport/ows:Exception"> <xsl:value-of select="ows:ExceptionText"/> </xsl:for-each> </exceptionText> </exception> </xsl:when> <xsl:otherwise> <xsl:apply-templates select="//csw:Record/dct:references"/> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="//csw:Record/dct:references"> <xsl:value-of select="."/> <xsl:text>✔</xsl:text> <xsl:value-of select="@scheme"/> <xsl:text>✕</xsl:text> </xsl:template> </xsl:stylesheet>
Une fois le texte modifié, enregistrez le fichier sous le nom 'GetRecordByID_Response.xslt'. - Ajouter votre profil au fichier CSWProfiles.xml
Après avoir créé ces trois fichiers xslt, vous devez les référencer dans le fichier CSWProfiles.xml.
- Choisissez le préfixe qui distinguera vos fichiers xslt des autres présents dans le répertoire \\CSWClients\Data. Modifiez le nom de vos trois fichiers xslt en incluant ce préfixe. Par exemple, GetRecords_Request.xslt devient NomDeMonOrganisation_GetRecords_Request.xslt.
- Accédez au dossier \\CSWClients\Data et ouvrez le fichier CSWProfiles.xml dans un éditeur de texte.
- Copiez le texte suivant dans une entrée en haut du fichier, juste au-dessous de la balise <CSWProfiles>. Mettez à jour les sections commentées pour faire référence au nom de votre nouveau profil et aux trois fichiers xslt que vous avez créés.
<?xml version="1.0" encoding="utf-8" ?> <CSWProfiles> <!-- insert the name of your profile here within comments --> <Profile> <!-- update the ID value with a unique urn value. Doesn't matter what it is as long as it is unique within this file --> <ID>urn:ogc:CSW:2.0.2:HTTP:YourProfile </ID> <!-- update the Name value with the name you want to display for your profile in the Profile drop-down on the Configure tab in the CSW Client user interface--> <Name> Unique name for display of Profile </Name> <!-- update the CswNamespace value with the namespace for your CSW service. For CSW 2.0.2 services, this will typically be http://www.opengis.net/cat/csw/2.0.2. For earlier CSW services, this may be http://www.opengis.net/cat/csw or another namespace --> <CswNamespace> http://www.opengis.net/cat/csw/2.0.2 </CswNamespace> <Description /> <GetRecords> <XSLTransformations> <!-- update with the name of your custom profile's GetRecords_Request.xslt file--> <Request>MyOrganizationName_GetRecords_Request.xslt </Request> <!-- update with the name of your custom profile's GetRecords_Response.xslt file--> <Response> MyOrganizationName_GetRecords_Response.xslt </Response> </XSLTransformations> </GetRecords> <GetRecordByID> <RequestKVPs> <!-- update with syntax appropriate for issuing a GetRecordById request to the type catalog service to which you want to connect. In this example, the service would use CS-W 2.0.2 protocol and the full set of metadata record elements from each source record that should be presented in the response (ElementSetName) --> <![CDATA[service=CSW&request=GetRecordById&version=2.0.2&ElementSetName=full]]> </RequestKVPs> <XSLTransformations> <!-- update with the name of your custom profile's GetRecordByID_Response.xslt file--> <Response>MyOrganizationName_GetRecordByID_Response.xslt </Response> </XSLTransformations> </GetRecordByID> <!-- update with True if the CS-W service supports returning queries defined by an extent--> <SupportSpatialQuery>True </SupportSpatialQuery> <!-- update with True if the CS-W service supports returning the content type of a metadata record--> <SupportContentTypeQuery> True </SupportContentTypeQuery> <!-- update with True if the CS-W service supports returning bounding box information --> <SupportSpatialBoundary> True </SupportSpatialBoundary> </Profile>
- Par défaut, lorsqu’un utilisateur clique sur le bouton Afficher les métadonnées, le fichier XML des métadonnées est renvoyé par la réponse GetRecordByID du service de catalogues sans qu’aucun style ne soit appliqué. Si vous souhaitez définir le style dans le document des métadonnées afin qu’il soit plus facilement lisible, vous pouvez utiliser la balise <StyleResponse> à la place de la balise <Response> au sein de la section <GetRecordByID> correspondant à votre profil dans le fichier CSWProfiles.xml. Procédez comme suit :
- Créez une feuille de style (.xsl) qui interprétera et affichera les métadonnées renvoyées par la réponse GetRecordById du service de catalogues. Enregistrez la feuille de style dans le même dossier que votre fichier CSWProfiles.xml.
- Dans le fichier CSWProfiles.xml, accédez à la section qui définit le profil auquel vous souhaitez appliquer le style. Dans cette section, recherchez l’élément <GetRecordByID>. Dans l’élément <GetRecordByID>, recherchez l’élément <XSLTransformations>.
- Remplacez la section de l’élément <Response> par <StyleResponse>.
- Au sein des balises d’ouverture et de fermeture <StyleResponse>, tapez le nom de la feuille de style que vous avez créée pour afficher la réponse GetRecordByID. Voici un exemple :
<GetRecordByID> <RequestKVPs> <![CDATA[service=CSW&request=GetRecordById&version=2.0.2&ElementSetName=full&outputSchema=original]]> </RequestKVPs> <XSLTransformations> <StyleResponse>Custom_Render.xsl</StyleResponse> </XSLTransformations> </GetRecordByID>
- Enregistrez le fichier CSWProfiles.xml. Lors de la prochaine ouverture de l’extension CSW Clients dans ArcMap ou ArcGIS Explorer, votre profil doit apparaître dans la liste.