CSW-Clients für ArcGIS
Download: Weitere Informationen zum Herunterladen der neuesten Version des CSW-Client finden Sie auf der GitHub-Website für CSW-Clients von Geoportal Server.
Die CSW-Clients integrieren die Geoportal-Suchfunktionalität in Ihre ArcMap- und ArcGIS Explorer-Anwendungen. Damit ist es möglich, OGC Catalog Service for the Web-Kataloge (CS-W-Kataloge) direkt über ArcMap und ArcGIS Explorer zu durchsuchen. Wenn Ressourcen zurückgegeben werden, können diese angezeigt oder heruntergeladen werden. Wenn die Ressourcen Live-Dienste sind, können sie außerdem zum ArcMap-Dokument oder zu ArcGIS Explorer Globe hinzugefügt werden. In ArcMap gibt es zusätzliche Funktionalitäten, mit denen die Benutzer die räumliche Ausdehnung der Ressource anzeigen können. Weitere Informationen darüber, wie der Geoportal CS-W verwendet wird, finden Sie unterKatalogservice des Geoportals. Informationen zur Installation, Verwendung und Anpassung der CSW-Clients finden Sie in den folgenden Abschnitten.
Hinweis:
Der CSW-Client für ArcGIS Explorer ist mit den Versionen 1200, 1500 und 1700 von ArcGIS Explorer kompatibel.
- Installieren der CSW-Clients für ArcGIS
- Verwenden der CSW-Clients für ArcGIS
- Funktionsweise der CSW-Clients
- Konfigurieren zusätzlicher Kataloge
- Erstellen und Hinzufügen eines neuen Profils
Installieren der CSW-Clients für ArcGIS
Installationsschritte
Vorsicht:
Wenn Sie den CSW-Client bereits zuvor auf demselben Computer installiert hatten und ihn aktualisieren möchten, deinstallieren Sie unbedingt vorher (Windows > Programme hinzufügen/entfernen) die Vorgängerversion. Wenn Sie den CSW-Client in ArcGIS Explorer verwendet haben, müssen Sie die Datei CSWSearchDockWindow.eaz aus dem Verzeichnis \\Anwendungsdaten\ESRI\ArcGIS Explorer\AddIns und den Ordner Cache aus demselben Verzeichnis löschen. Wenn Sie diese nicht löschen, greift ihr CSW-Client auf die ältere Version des Add-Ins für den ArcGIS Explorer-CSW-Client zurück.
- Laden Sie die aktuelle Version des CSW-Client auf der GitHub-Website für CSW-Clients von Geoportal Server herunter.
- Führen Sie die setup.exe für die CSW-Clients aus.
- Befolgen Sie die Anweisungen des Einrichtungsassistenten. Sie haben im Installationsprogramm die Möglichkeit, eine vollständige oder benutzerdefinierte Installation durchzuführen. Bei einer benutzerdefinierten Installation können Sie auswählen, ob Sie die CSW-Clients sowohl für ArcMap als auch für ArcGIS Explorer oder nur für eine der beiden Anwendungen installieren möchten.
- Während der Installation wird überprüft, ob ArcGIS .NET Framework vorhanden ist. Wenn .NET Framework nicht gefunden wird, wird der CSW-Client für ArcGIS Desktop nicht installiert. Die Installation für den CSW-Client für ArcGIS Explorer wird jedoch fortgesetzt, und ein Dialogfeld mit dem Installationsstatus wird angezeigt.
Hinzufügen des CSW-Client zu ArcMap
- Starten Sie ArcGIS Desktop. Der CSW-Client wird mit der ArcMap-Komponente von ArcGIS Desktop verwendet.
- Klicken Sie auf Anpassen > Anpassungsmodus. Das Fenster Anpassen wird geöffnet.
- Klicken Sie auf die Registerkarte Befehle im Fenster Anpassen.
- Führen Sie in der Liste mit den Befehlen einen Bildlauf nach unten durch, und wählen Sie Geoportal aus. Das CSW-Client-Symbol wird im rechten Fenster Befehle angezeigt.
- Ziehen Sie das CSW-Client-Symbol an einen leeren Platz auf einer beliebigen Werkzeugleiste in ArcMap.
- Schließen Sie das Fenster Anpassen.
Hinzufügen des CSW-Client zu ArcGIS Explorer
- Öffnen Sie die ArcGIS Explorer-Anwendung.
- Klicken Sie oben links in der Anwendung auf die ArcGIS Explorer-Schaltfläche. Ein Menü wird angezeigt.
- Klicken Sie auf die Schaltfläche ArcGIS Explorer-Optionen. Das Fenster ArcGIS Explorer-Optionen wird geöffnet.
- Klicken Sie im linken Menü auf Ressourcen. In das Fenster rechts werden mehrere Überschriften eingefügt. Klicken Sie auf die Schaltfläche Add-Ins rechts neben der Überschrift Add-Ins verwalten.
- Es wird ein weiteres Fenster geöffnet, in dem Sie Add-Ins anzeigen und verwalten können. Klicken Sie auf die Schaltfläche Hinzufügen rechts im Fenster, und navigieren Sie zur CSW-Client-Datei mit dem Namen CSWSearchDockWindow.eaz. Das Standard-Installationsverzeichnis für diese Datei ist C:\Programme\ESRI\Geoportal\CSWClients .
- Klicken Sie auf Öffnen, um das Add-In "CSWSearchDockWindow.eaz" zu laden.
- Wenn Sie das Dialogfeld Add-In schließen, werden Sie eventuell aufgefordert, die ArcGIS Explorer-Anwendung neu zu starten. Nach dem Neustart ist der CSW-Client standardmäßig immer verfügbar, es sei denn, Sie entfernen ihn aus der Add-In-Liste.
- Greifen Sie auf den CSW-Client zu, indem Sie auf die Registerkarte Add-In oben in der ArcGIS Explorer-Anwendung klicken.
Der CSW-Client kann jetzt verwendet werden. Informationen zur Verwendung des CSW-Client finden Sie im folgenden Abschnitt und Informationen zur Protokollierung unter Die Datei "CswClient.log" für die CSW-Clients.
Verwenden der CSW-Clients für ArcGIS
Die CSW-Clients werden in ArcMap und ArcGIS Explorer auf dieselbe Art und Weise verwendet. Im Folgenden wird beschrieben, wie Sie einen Katalog nach Ressourcen durchsuchen, Metadaten anzeigen, Metadaten herunterladen und eine Ressource zur Karte hinzufügen können. Klicken Sie in ArcMap, auf die Schaltfläche "CSW-Client" , um das Werkzeug zu öffnen. Wählen Sie in ArcGIS Explorer zum Öffnen des Tasks die Registerkarte Add-Ins und dann CSW-Client aus.
Durchsuchen eines Katalogs
So führen Sie eine Suche aus:
- Klicken Sie auf die Registerkarte Suchen.
- Geben Sie im Textfeld Suchen einen Begriff ein.
Hinweis:
Wenn Sie keine Suchkriterien eingeben, können maximal 100 Ergebnisse abgerufen werden. Wenn Sie versuchen, mehr als 100 Ergebnisse abzurufen, erhalten Sie die Meldung "keine Ergebnisse gefunden".
- Wählen Sie einen der Katalog-Services aus dem Dropdown-Menü Im Katalog aus. Informationen zum Konfigurieren zusätzlicher Kataloge finden Sie unter Konfigurieren zusätzlicher Kataloge und Profile.
- Geben Sie Parameter ein, um Ihre Suche weiter einzuschränken (optional). Die Suchparameter werden nachfolgend beschrieben.
- Nur Live-Daten und Karten:Die Suche kann auf Live-Dienstressourcen beschränkt werden, indem Sie das Kontrollkästchen Nur Live-Daten und Karten aktivieren. Live-Dienste können als Layer zum ArcMap- oder ArcGIS Explorer-Dokument hinzugefügt werden.
Hinweis:
Wenn Sie keinen Suchbegriff eingegeben haben, aber das Kontrollkästchen Nur Live-Daten und Karten aktivieren, können Sie mehr als 100 Datensätze abrufen, da der Suchabfrage dann ein Parameter hinzugefügt wird: content type = live service.
- Maximum:Wenn Sie die Anzahl der Datensätze in den Suchergebnissen beschränken möchten, ändern Sie den Wert im Feld Maximum. Wenn Suchparameter eingegeben werden, liegt die Grenze bei 500, bei Suchabfragen ohne Parameter bei 100.
- Aktuelle Ausdehnung verwenden (nur ArcMap):Wenn eine Ausdehnung bereits im ArcMap-Dokumentenfenster definiert ist, kann dieses Kästchen aktiviert werden, und der CSW-Client ruft dann nur Ergebnisse ab, die in die festgelegte Ausdehnung fallen. Einige CSW-Dienst-URLs erlauben keine Ausdehnungsanforderungen. Dies kann die Anzahl der zurückgegebenen Ergebnisse beeinflussen.
- Nur Live-Daten und Karten:Die Suche kann auf Live-Dienstressourcen beschränkt werden, indem Sie das Kontrollkästchen Nur Live-Daten und Karten aktivieren. Live-Dienste können als Layer zum ArcMap- oder ArcGIS Explorer-Dokument hinzugefügt werden.
- Klicken Sie auf die Schaltfläche Suchen, um die Suche auszuführen. Ergebnisse werden im Fenster Ergebnisse zurückgegeben. Das Fenster Kurzbeschreibung zeigt für jede zurückgegebene Ergebnisressource die zusammenfassenden Informationen für die ausgewählte Ressource an, wenn diese in den Metadaten bereitgestellt wurden.
Verwenden von Suchergebnissen
Über dem Fenster Ergebnisse befinden sich Werkzeuge. Es werden sieben Schaltflächen angezeigt, die Funktionen für die Suchergebnisse bieten. Die Funktionen der einzelnen Schaltflächen werden nachfolgend beschrieben.
- Das Werkzeug Metadaten anzeigen öffnet das Metadatendokument der Ressource als XML-Datei in einem neuen Fenster.
- Das Werkzeug Metadaten herunterladen ermöglicht das Herunterladen und Speichern der Metadaten-XML der Ressource.
- Mit dem Werkzeug Zur Karte hinzufügen kann der durch die Ressource beschriebene Dienst der Karte oder dem Globus als neuer Layer hinzugefügt werden. Diese Schaltfläche ist ausgegraut, wenn die Ressource als Inhaltstyp nicht "Live-Daten und Karten" aufweist. Wenn Sie auf die Schaltfläche "Zur Karte hinzufügen" klicken und keine Daten zur Karte hinzugefügt werden, kann es sein, dass die Metadaten der Ressource keine Dienstinformationen beinhalten. Damit der Live-Dienst angezeigt werden kann, müssen Dienstverbindungsinformationen für diese Ressource in der Metadaten-XML bereitgestellt werden.
- Die nächsten vier Schaltflächen haben mit der Anzeige des räumlichen Footprints einer Ressource im aktuellen Kartenfenster zu tun. Die im Footprint angezeigte Ausdehnung entspricht dem in den Metadaten der Ressource festgelegten Rahmen.
- Mit dem Werkzeug Footprint anzeigen kann die Ausdehnung der ausgewählten Ressource überlagert auf dem Kartendokument angezeigt werden.
- Das Werkzeug Auf Footprint zoomen zoomt auf die Ausdehnung der aktuellen Ressource. Das ist besonders nützlich, wenn die Ausdehnung einer kleinen Region entspricht oder wenn für die Grundkarte eine andere Projektion verwendet wird.
- Mit dem Werkzeug Gesamten Footprint anzeigen werden alle Footprints im Fenster Ergebnisse der Karte gleichzeitig hinzugefügt. Klicken Sie erneut auf die Schaltfläche, um sie auszublenden.
- Mit dem Werkzeug Gesamten Footprint löschen werden alle Footprints entfernt, die der Karte hinzugefügt wurden.
Funktionsweise der CSW-Clients
Die CSW-Clients benötigen drei Informationen, um Datensätze zur Anzeige in ArcMap oder ArcGIS Explorer aus einem Katalog-Service abrufen zu können.
- Eine GetCapabilities-URL zum Katalog: Diese wird in das Feld für die Katalog-Service-URL auf der Registerkarte "Konfigurieren" der CSW-Clients eingegeben. Die GetCapabilities-URL dient als Katalogendpunkt, an den die CSW-Clients die Suchabfrage senden und von dem sie die Antwort erhalten.
- Suchkriterien: Diese werden in die Felder auf der Registerkarte "Suchen" der CSW-Clients eingegeben. Die Suchkriterien legen fest, welche Ressourcen von den CSW-Clients zurückgegeben werden. Suchkriterien dienen als Filter, beispielsweise zum Filtern nach einem Suchbegriff, wenn es sich nur um Live-Daten handeln soll, und legen die maximale Anzahl der zurückgegebenen Suchergebnisse fest.
- Ein Katalogprofil: Das Profil des Katalog-Service wird aus einem Dropdown-Menü auf der Registerkarte "Konfigurieren" der CSW-Clients ausgewählt. Die Bezeichnung des Katalogprofils zeigt den CSW-Clients an, welche Profile vom Katalog-Service verwendet werden. Die Zuordnung zwischen dem Katalog-Service und seinem Profil wird in einer Datei mit dem Namen "CSWCatalogs.xml" definiert. Diese Datei wird jedes Mal aktualisiert, wenn ein neuer Katalog über die Registerkarte "Konfigurieren" der CSW-Clients konfiguriert wird. Die CSW-Clients referenzieren die Datei "CSWCatalogs.xml", um festzustellen, welches Profil vom Katalog verwendet wird. Die Liste der verfügbaren Profile befindet sich in einer anderen Datei, "CSWProfiles.xml". Das Profil weist darauf hin, welche xslt-Dateien für die Formulierung von Anforderungen zwischen den CSW-Clients und dem Katalog verwendet werden.
<?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>
Informationsfluss über die xslt-Dateien
Im Grunde gibt es bei der Verwendung der CSW-Clients drei Interaktionsräume: die Benutzeroberfläche (User Interface, UI) der CSW-Clients, die Übersetzungsaktivität der CSW-Clients und den Katalog-Service, mit dem die CSW-Clients kommunizieren. Interaktionen finden statt, wenn der Benutzer mit Hilfe der CSW-Clients eine Suche initiiert und wenn er über die Schaltflächen Metadaten anzeigen, Metadaten herunterladen, Zur Karte hinzufügen und Footprint anzeigen der CSW-Clients eine Kommunikation mit dem Katalogservice initiiert. In den drei Abbildungen unten wird gezeigt, wie die UI, die Übersetzungsaktivität der CSW-Clients und der Katalog-Service interagieren, um Metadateninformationen in ArcMap oder ArcGIS Explorer zu suchen und anzuzeigen.
- Erste Anforderung an einen Dienst
Der erste Kommunikationsfluss für die CS-W-Anforderung und -Antwort wird in der Abbildung unten dargestellt. Im Anschluss folgt eine Erläuterung der nummerierten Schritte.
- Wenn ein Benutzer auf die Schaltfläche Suchen für die CSW-Clients klickt, referenzieren die CSW-Clients die Datei "CSWCatalogs.xml", um das entsprechende Profil für diesen Katalog-Service zu finden. Das zugehörige Profil legt fest, welche GetRecordsRequest-, GetRecordsResponse- und GetRecordByID_Response-Dateien verwendet werden. Dann erstellen die CSW-Clients eine generische XML-Datei. Die generische XML-Datei sieht wie folgt aus:
<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>
Sehen Sie sich genau an, welche Informationen in diesem Code übertragen werden. Jede Information entspricht der jeweiligen Eingabe in die UI der CSW-Clients. Im GetRecords-Element befindet sich ein Attribut, das besagt, wie viele Datensätze abgerufen werden sollen: maxRecords. In diesem Beispiel werden zehn Datensätze zurückgegeben. Es gibt ein Element, das den eingegebenen Suchbegriff festlegt: PropertyName AnyText. In diesem Beispiel lautet der Suchbegriff "wms". Außerdem gibt es einen Parameter für das Abrufen des Inhaltstyps des Dokuments, falls verfügbar: PropertyName Format. In diesem Beispiel sollen die abgerufenen Datensätze außerdem Live-Daten sein (das Kontrollkästchen Nur Live-Daten und Karten in der UI).Hinweis:
In dieser generischen XML-Datei für die räumliche Ausdehnung können sich zusätzliche Parameter befinden: "ISO-Themenkategorie" und "Änderungsdatum". Die Parameter für ISO-Thema und Änderungsdatum dienen nur zur Verwendung innerhalb der Geoportal-Webanwendung und müssen zur Verwendung mit den CSW-Clients nicht angegeben werden.
- Die CSW-Clients interpretieren die generische XML-Datei und wenden eine Transformation gemäß "GetRecords_Request.xslt" an, bei der die generische XML-Datei in einen CS-W-GetRecordsRequest übersetzt wird, sodass der Katalog-Service die Suchkriterien interpretieren kann.
- Die transformierte XML-Datei wird als GetRecordsRequest an den Katalog-Service weitergegeben.
- Der Katalog-Service antwortet mit einer in CS-W-Syntax formatierten Liste von Datensätzen, die den Suchkriterien entsprechen.
- Der CSW-Client wendet die "GetRecords_Response.xslt" zur Übersetzung der Katalog-Serviceantwort in entsprechende Datensätze an, die dann auf der CSW-Client-Benutzeroberfläche angezeigt werden. Eine Kurzbeschreibung und Footprint-Informationen für die Footprint-Schaltflächen, falls die Datensätze Live-Daten sind, werden ebenfalls für jeden Datensatz zurückgegeben.
- Wenn ein Benutzer auf die Schaltfläche Suchen für die CSW-Clients klickt, referenzieren die CSW-Clients die Datei "CSWCatalogs.xml", um das entsprechende Profil für diesen Katalog-Service zu finden. Das zugehörige Profil legt fest, welche GetRecordsRequest-, GetRecordsResponse- und GetRecordByID_Response-Dateien verwendet werden. Dann erstellen die CSW-Clients eine generische XML-Datei. Die generische XML-Datei sieht wie folgt aus:
Schaltflächen "Metadaten anzeigen" und "Metadaten herunterladen"Für die Schaltflächen "Metadaten anzeigen" und "Daten herunterladen" müssen die CSW-Clients keine Stylesheets anwenden, um Benutzereingaben zu interpretieren oder die Antwort des Katalogservice anzuzeigen. Stattdessen verwenden die CSW-Clients die nativen GetRecordById-Anforderungen und -Antworten des Katalog-Service, um Metadaten abzurufen. Dieser Kommunikationsfluss wird in der Abbildung unten dargestellt. Im Anschluss folgt eine Erläuterung der nummerierten Schritte.
- Wenn ein Benutzer auf die Schaltflächen "Metadaten anzeigen" und "Metadaten herunterladen" klickt, fordern die CSW-Clients das vollständige Metadatendokument für den Datensatz an. Dazu verwenden Sie die GetRecordById-Anforderung des Katalog-Service, die in GetCapabilities definiert ist.
- Der Katalog-Service reagiert mit einer GetRecordById-Antwort, und die vollständigen Metadaten werden auf der Benutzeroberfläche zurückgegeben.
Schaltfläche "Zur Karte hinzufügen"Eine weitere Transformation mit dem Namen GetRecordByID_Response.xslt kommt zum Einsatz, wenn der Benutzer auf die Schaltfläche "Zur Karte hinzufügen" klickt. Der Kommunikationsfluss wird in der Abbildung unten dargestellt. Im Anschluss folgt eine Erläuterung der nummerierten Schritte.
- Wenn ein Benutzer auf die Schaltfläche "Zur Karte hinzufügen" oder "Footprints hinzufügen" klickt, rufen die CSW-Clients die GetRecordByID-Antwort vom Katalog-Service ab.
- Die CSW-Clients wenden dann die "GetRecordByID_Response.xslt" auf die Antwort an, um die URL zu extrahieren, die für den Live-Dienst verwendet wird.
- Die URL oder der Footprint der Metadaten, wie durch die Envelope-Informationen in den Metadaten definiert, wird dann an die Benutzeroberfläche für "Zur Karte hinzufügen" gesendet.
Konfigurieren zusätzlicher Kataloge
Die CSW-Clients sind so vorkonfiguriert, dass sie standardmäßig "Geospatial OneStop", den GOS2 OGC Core-Katalog, auf der Suchoberfläche durchsuchen. Wenn Sie jedoch statt Geospatial OneStop einen anderen Katalog-Service durchsuchen möchten, ist dies möglich, indem Sie den Katalog-Service auf der Registerkarte Konfigurieren der CSW-Clients registrieren.
- Registrieren eines Katalog-Service für die Verwendung in den CSW-Clients
- Klicken Sie zunächst auf die Registerkarte Konfigurieren. Auf dieser Registerkarte sehen Sie drei Eingabefelder und drei Schaltflächen. In diese Felder geben Sie Informationen ein, welche die Verbindung mit dem Katalog-Service definieren, und geben den Namen für den Service auf der Benutzeroberfläche an.
- Klicken Sie auf die Schaltfläche Neu, um die Einträge im Formular für Ihren neuen Katalogservice-Eintrag zu löschen.
- Geben Sie in das Eingabefeld Katalog-Service-URL die GetCapabilities-URL des Service an, den Sie hinzufügen möchten. Wenn Sie Ihren geoportal 10-Katalog-Service registrieren, hat die URL ungefähr folgendes Format:
http://serverName/geoportal/csw/discovery?Request=GetCapabilities&Service=CSW&Version=2.0.2
- Geben Sie in der Dropdown-Liste Profil das Profil an, das der Katalog-Service verwendet. Manchmal ist es möglich, diese Informationen zu finden, indem Sie die GetCapabilities-URL in einen Webbrowser kopieren und die Antwort auf Hinweise durchsuchen. Wenn Sie das Profil nicht an der GetCapabilities-Antwort erkennen können, müssen Sie sich eventuell an die Host-Organisation des Katalog-Service wenden und nach dem Profil fragen. Wenn Sie einen geoportal 10-Katalog-Service registrieren, entspricht das Profil dem ArcGIS Server Geoportal-Profil. Wenn der Katalog-Service ein Profil verwendet, das sich nicht in der Standard-Dropdown-Liste befindet, können Sie es hinzufügen. Anweisungen finden Sie unter Erstellen und Hinzufügen eines neuen Profils.
- Geben Sie einen Anzeigenamen für den Katalog-Service an, indem Sie ihn in das Feld Anzeigename eintragen.
- Klicken Sie auf die Schaltfläche Speichern, um den neuen Katalog zur Katalogliste hinzuzufügen.
- Aktivieren Sie jetzt die Registerkarte Suchen. Ihr neu registrierter Katalog-Service sollte in der Dropdown-Liste Im Katalog angezeigt werden.
- Aktualisieren eines vorhandenen Katalog-Service aus der Liste
- Klicken Sie auf die Registerkarte Konfigurieren.
- Markieren Sie den Katalog-Service, der aktualisiert werden soll, in der Liste Kataloge. Katalogservice-URL, Profil und Angezeigter Name werden auf der Benutzeroberfläche geladen.
- Nehmen Sie Ihre Änderungen an den Feldern vor.
- Klicken Sie auf die Schaltfläche Speichern.
- Löschen eines vorhandenen Katalog-Service aus der Liste
- Klicken Sie auf die Registerkarte Konfigurieren.
- Markieren Sie den Katalog-Service, den Sie aus der Liste mit registrierten Katalogen löschen möchten.
- Klicken Sie auf die Schaltfläche Löschen.
- Das System zeigt ein Bestätigungsdialogfeld an. Klicken Sie auf Ja, um den Eintrag zu löschen.
Erstellen und Hinzufügen eines neuen Profils
Wenn Sie einen Katalog-Service registrieren möchten, der keines der Profile verwendet, das die CSW-Clients standardmäßig zur Verfügung stellen, müssen Sie die drei xslt-Dateien erstellen, die zum Abrufen der Suchergebnisse und zum Extrahieren der URL für das Hinzufügen der Live-Daten zur Karte verwendet werden. Diese drei Dateien wurden im Abschnitt Funktionsweise der CSW-Clients erwähnt. Nachdem Sie die drei xslt-Dateien erstellt haben, müssen Sie sie mit einem neuen Profileintrag in der Datei "CSWProfiles.xml" referenzieren. Nachfolgend finden Sie Details zur Erstellung der einzelnen xslt-Dateien und dazu, wie Sie die Referenz in die Datei "CSWProfiles.xml" hinzufügen.
- Erstellen der "GetRecords_Request.xslt"
Denken Sie daran, dass die CSW-Clients eine Transformation anwenden, welche die generische XML von der Benutzeroberfläche der CSW-Clients in einen CS-W-GetRecordsRequest übersetzt, den der Katalog-Service interpretieren kann. Der folgende Codeausschnitt zeigt eine generische "GetRecords_Request.xslt". In den kommentierten Abschnitten finden Sie Beschreibungen zu den wichtigen Teilen der Datei. Kopieren Sie diesen Text in einen Texteditor wie Notepad, und nehmen Sie die in den Kommentaren erläuterten Anpassungen vor.
<?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>
Wenn Sie mit der Bearbeitung des Textes fertig sind, speichern Sie die Datei als "GetRecords_Request.xslt". - Erstellen der "GetRecords_Response.xslt"
Denken Sie daran, dass die CSW-Clients eine Transformation anwenden, mit der die Antwort des Katalog-Service auf die angegebenen Suchkriterien in Datensätze zur Anzeige auf der CSW-Client-Oberfläche übersetzt wird. Der folgende Codeausschnitt zeigt eine generische "GetRecords_Response.xslt". In den kommentierten Abschnitten finden Sie Beschreibungen zu den wichtigen Teilen der Datei. Kopieren Sie diesen Text in einen Text-Editor, und nehmen Sie die in den Kommentaren erläuterten Anpassungen vor. Beachten Sie, dass an Stellen, an denen in diesem Beispiel spezielle Metadatenelemente in SELECT-Anweisungen referenziert werden, überprüft werden muss, welches Metadatenschema Ihr Katalog-Service verwendet. Außerdem müssen Sie prüfen, ob die ausgewählten Elemente mit diesem Schema übereinstimmen. Für das Element <ID> zeigt das Beispiel unten, dass das Element dc:identifierelement ausgewählt wird. Das ist korrekt, wenn die Antwort des Katalog-Service auf Dublin Core basiert. Wenn die Antwort des Katalogservice jedoch auf ISO 19139 basiert, sollte die SELECT-Anweisung des Elements <ID> stattdessen in gmd:fileIdentifier/gco:CharacterString geändert werden.
<?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>
Wenn Sie mit der Bearbeitung des Textes fertig sind, speichern Sie die Datei als "GetRecords_Response.xslt". - Erstellen der "GetRecordByID_Response.xslt"
Denken Sie daran, dass die CSW-Clients die "GetRecordByID_Response.xslt" nur auf eine GetRecordsByID-Antwort vom Katalog-Service anwenden, um die URL zur Anzeige eines Live-Dienstes auf der Oberfläche zu extrahieren. Der nachfolgende Codeausschnitt stellt eine generische "GetRecordsByID_Response.xslt" dar. Bei der Anpassung ist es wichtig festzustellen, wo in der CS-W-Antwort Informationen zu einem Live-Dienst zu finden wären. Dies sollte mit SELECT-Anweisungen im Abschnitt <xsl:template> definiert werden. Nachfolgend sehen Sie ein Beispiel für einen Dublin Core-Katalog-Service. Es ist erkennbar, dass der xpath zu den Dienstinformationen beim Element csw:record/dct:references zu finden ist. Wenn Sie Beispiele benötigen, bei denen ArcIMS CS-W-Konnektoren oder ISO 19139-basierte Konnektoren verwendet werden, öffnen Sie andere GetRecordByID_Response xslt-Dateien im Ordner "\\CSWClients\Data", und suchen Sie nach einem Beispiel, das dem Standard ähnelt, der von Ihrem Katalog-Service verwendet wird.
<?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>
Wenn Sie mit der Bearbeitung des Textes fertig sind, speichern Sie die Datei als "GetRecordByID_Response.xslt". - Hinzufügen Ihres Profils zur Datei "CSWProfiles.xml"
Nachdem Sie die drei xslt-Dateien erstellt haben, müssen Sie sie in der Datei "CSWProfiles.xml" referenzieren.
- Wählen Sie ein Präfix aus, das Ihre xslt-Dateien von den anderen im Verzeichnis "\\CSWClients\Data" unterscheidet. Fügen Sie den Namen Ihrer drei xslt-Dateien dieses Präfix hinzu. Aus GetRecords_Request.xslt wird beispielsweise Organisationsname_GetRecords_Request.xslt.
- Navigieren Sie zum Ordner "\\CSWClients\Data", und öffnen Sie die Datei "CSWProfiles.xml" in einem Texteditor.
- Kopieren Sie folgenden Text in einen Eintrag oben in der Datei, direkt unter den Tag <CSWProfiles>. Aktualisieren Sie die kommentierten Abschnitte so, dass sie den Namen Ihres neuen Profils und die drei von Ihnen erstellten xslt-Dateien referenzieren.
<?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>
- Wenn ein Benutzer auf die Schaltfläche "Metadaten anzeigen" klickt, wird standardmäßig die Metadaten-XML von der GetRecordByID-Antwort des Katalog-Service zurückgegeben, ohne dass ein Style angewendet wird. Wenn Sie den Style des Metadatendokuments definieren möchten, damit es leichter zu lesen ist, können Sie den Tag <StyleResponse> anstelle des Tags <Response> innerhalb des Abschnitts <GetRecordByID> für Ihr Profil in der Datei "CSWProfiles.xml" verwenden. Gehen Sie folgendermaßen vor:
- Erstellen Sie ein Stylesheet (.xsl), das die von der GetRecordById-Antwort vom Katalog-Service zurückgegebenen Metadaten interpretiert und rendert. Speichern Sie das Stylesheet im selben Ordner wie die Datei "CSWProfiles.xml".
- Führen Sie in der Datei "CSWProfiles.xml" einen Bildlauf zu dem Abschnitt durch, in dem das Profil definiert wird, auf das Sie den Style anwenden möchten. Suchen Sie in diesem Abschnitt das Element <GetRecordByID>. Suchen Sie im Element <GetRecordByID> das Element <XSLTransformations>.
- Ersetzen Sie das Element <Response> durch <StyleResponse>.
- Geben Sie innerhalb der öffnenden und schließenden <StyleResponse>-Tags den Namen des erstellten Stylesheets ein, um die GetRecordByID-Antwort zu rendern. Ein Beispiel finden Sie unten:
<GetRecordByID> <RequestKVPs> <![CDATA[service=CSW&request=GetRecordById&version=2.0.2&ElementSetName=full&outputSchema=original]]> </RequestKVPs> <XSLTransformations> <StyleResponse>Custom_Render.xsl</StyleResponse> </XSLTransformations> </GetRecordByID>
- Speichern Sie die Datei "CSWProfiles.xml". Wenn Sie die CSW-Clients das nächste Mal in ArcMap oder ArcGIS Explorer öffnen, sollte Ihr Profil aufgelistet werden.