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.
Remarque :
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
Attention :
Si vous avez déjà installé l'extension CSW Client 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 CSW Client 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 ci-dessous se rapportant à l'utilisation de l'extension CSW Client et Le fichier CswClient.log pour les clients CSW 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 le bouton CSW Client 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 maximal 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 Client 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 Visualiser 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 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 Client 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'emprisede l'extension CSW Client. 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éesPour les boutons Afficher les métadonnées et Télécharger en aval les données, l'extension CSW Client 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 carteUne 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 Client est préconfigurée pour rechercher par défaut dans Geospatial OneStop ( le catalogue GOS2 OGC Core 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 doit extraire les informations suivantes pour définir la recherche que l'utilisateur spécifie dans l'interface utilisateur : 'KeyWord' correspond au terme de recherche saisi par l'utilisateur, 'LiveDataMap' indique si l'utilisateur spécifie "Données et cartes dynamiques uniquement" et 'Envelope' désigne l'emprise d'une recherche en fonction de l'étendue courante de la fenêtre ArcMap. 'tmpltDate' correspond à la recherche dans un catalogue via le géoportail, dans Options supplémentaires, recherche Date de modification sur la page de recherche. --> <!-- Recherche KeyWord --> <xsl:apply-templates select="/GetRecords/KeyWord"/> <!-- Recherche LiveDataOrMaps --> <xsl:apply-templates select="/GetRecords/LiveDataMap"/> <!-- Recherche Envelope, par ex. ogc:BBOX --> <xsl:apply-templates select="/GetRecords/Envelope"/> <!-- Recherche Date Range --> <xsl:call-template name="tmpltDate"/> </ogc:And> </ogc:Filter> </csw:Constraint> </csw:Query> </xsl:element> </xsl:template> <!-- Recherche KeyWord : ce modèle permet de transmettre le terme de recherche au service de catalogues. Le paramètre PropertyName 'AnyText' est variable, selon ce que votre service de catalogues accepte. 'AnyText' effectue une recherche dans tous les champs, quel que soit l'élément XML. Pour effectuer une recherche uniquement dans le titre ou le résumé, vous pouvez modifier ce paramètre PropertyName de manière appropriée. Les éléments 'PropertyIsLike' (wildCard="" escape= "" singleChar="") sont propres à la spécification CSW que suit votre service de catalogues. --> <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> <!-- Recherche LiveDataOrMaps : ce modèle permet de transmettre l'instruction selon laquelle seuls les enregistrements de données/cartes dynamiques doivent être extraits du service de catalogues. Le paramètre PropertyName 'Format' dépend du paramètre que votre service de catalogues accepte pour définir le type de ressources décrit par l'enregistrement obtenu. L'élément littéral "liveData" peut être modifié en vue d'indiquer le terme que votre service peut utiliser pour extraire les enregistrements de données dynamiques.--> <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> <!-- Recherche Envelope : ce modèle permet de définir une emprise pour les enregistrements obtenus renvoyés par le service de catalogues si l'option "Utiliser l'étendue actuelle" est sélectionnée (CSW Client d'ArcMap uniquement). Les enregistrements obtenus doivent être compris dans cette emprise. Ne modifiez pas les paramètres PropertyName, Box ou les éléments de coordonnées.--> <xsl:template match="/GetRecords/Envelope" xmlns:ogc="http://www.opengis.net/ogc"> <!-- générez une requête BBOX si minx, miny, maxx, maxy sont fournis --> <xsl:if test="./MinX et ./MinY et ./MaxX et ./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 : ce modèle permet de définir la plage de dates pour laquelle les enregistrements obtenus renvoyés par le service de catalogues ont été modifiés. Ceci est uniquement utilisé pour la recherche du géoportail, et non pour la recherche CSW Client. Cette section doit uniquement être incluse si vous voulez appliquer votre profil personnalisé au géoportail même, ainsi qu'à CSW Client (le profil personnalisé apparaît dans ce cas dans la liste déroulante des profils lorsqu'un éditeur enregistre un référentiel CSW). Ne modifiez pas cette 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:identifierva ê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> <!-- si la réponse CSW renvoie une exception, procédez comme suit --> <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><!--chaque profil peut comporter un type d'emprise différent. Certains en ont deux et d'autres quatre. Celui-ci en possède quatre --> <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> <!-- permet d'extraire des URL du document. Reçoit les URL et l'attribut scheme (@scheme, qui détermine leur type (type d'URL (URL de miniature, site Web, serveur, contact, etc.)). Nous choisissons toujours l'URL "serveur" lors de l'ajout à une carte. --> <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> <!-- ceci extrait des informations sur le type de contenu. Peut servir à mettre en surbrillance le bouton Ajouter à la carte--> <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> <!-- insérez le nom de votre profil ici au sein des commentaires --> <Profile> <!-- mettez à jour la valeur d'ID avec une valeur urn unique. Peu importe sa nature tant qu'elle est unique au sein de ce fichier --> <ID>urn:ogc:CSW:2.0.2:HTTP:YourProfile </ID> <!-- mettez à jour la valeur Name en utilisant le nom que vous voulez afficher pour votre profil dans la liste déroulante Profil de l'onglet Configurer dans l'interface utilisateur de CSW Client--> <Name> Nom unique pour afficher le profil </Name> <!-- mettez à jour la valeur CswNamespace avec l'espace de noms de votre service CSW. Pour les services CSW 2.0.2, il s'agit généralement de http://www.opengis.net/cat/csw/2.0.2. Pour les services CSW antérieurs, il peut s'agir de http://www.opengis.net/cat/csw ou d'un autre espace de noms --> <CswNamespace> http://www.opengis.net/cat/csw/2.0.2 </CswNamespace> <Description /> <GetRecords> <XSLTransformations> <!-- mettez à jour avec le nom du fichier GetRecords_Request.xslt de votre profil personnalisé--> <Request>MyOrganizationName_GetRecords_Request.xslt </Request> <!-- mettez à jour avec le nom du fichier GetRecords_Response.xslt de votre profil personnalisé--> <Response> MyOrganizationName_GetRecords_Response.xslt </Response> </XSLTransformations> </GetRecords> <GetRecordByID> <RequestKVPs> <!-- mettez à jour avec la syntaxe appropriée à l'émission d'une requête GetRecordById vers le type de service de catalogues auquel vous voulez vous connecter. Dans ce exemple, le service utilise le protocole CS-W 2.0.2 et un jeu complet d'éléments d'enregistrements de métadonnées provenant de chaque enregistrement source qui doit être présenté dans la réponse (ElementSetName) --> <![CDATA[service=CSW&request=GetRecordById&version=2.0.2&ElementSetName=full]]> </RequestKVPs> <XSLTransformations> <!-- mettez à jour avec le nom du fichier GetRecordByID_Response.xslt de votre profil personnalisé--> <Response>MyOrganizationName_GetRecordByID_Response.xslt </Response> </XSLTransformations> </GetRecordByID> <!-- mettez à jour avec True (vrai) si le service CS-W permet de renvoyer les requêtes définies par une étendue--> <SupportSpatialQuery>True </SupportSpatialQuery> <!-- mettez à jour avec True (vrai) si le service CS-W permet de renvoyer le type de contenu d'un enregistrement de métadonnées--> <SupportContentTypeQuery> True </SupportContentTypeQuery> <!-- mettez à jour avec True (vrai) si le service CS-W permet de renvoyer les informations d'emprise --> <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 de la manière suivante :
- 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.
Vous avez un commentaire à formuler concernant cette rubrique ?