Anpassen der Antwort von WMS GetFeatureInfo
WMS-Services unterstützen eine Reihe von Operationen, z. B. GetCapabilities, GetMap, GetStyles usw., sodass Clientanwendungen den Service verwenden können, indem sie Parameter an die URL des Service anhängen. Die GetFeatureInfo-Operation wird auf die gleiche Weise verwendet. Sie ist für die Rückgabe der Attribute von Features konzipiert, die in einer Karte in verschiedenen Formaten wie z. B. HTML, XML und Nur-Text abgefragt werden.
Das folgende Beispiel zeigt eine GetFeatureInfo-Anforderung zusammen mit der Antwort im standardmäßigen HTML-Format:
Anforderung
http://gisserver.example.com/arcgis/services/ihs_petroleum/MapServer/WMSServer?&service=WMS&version=1.1.0&request=GetFeatureInfo&layers=fields&query_layers=fields&styles=&bbox=47.130647,8.931116,48.604188,29.54223&srs=EPSG:4326&feature_count=10&x=562&y=193&height=445&width=1073&info_format=text/html&
Maßnahmenkoordination

In vielen Fällen sind die Standardformate HTML, XML oder Nur-Text für die Antwort geeignet; es kann jedoch vorkommen, dass Sie das Format oder Schema der Antwort für die Ausführung einer bestimmten Geschäftslogik anpassen möchten. Beispielsweise könnten Sie die Feature-Informationen aus Gründen der Interoperabilität in einem Standardschema wie GML oder GeoJSON benötigen.
XSLT-Vorlagen
Mithilfe von XSLT-Vorlagen (Extensible Stylesheet Language Transformation) können Sie lesbare Ausgaben aus einer WMS GetFeatureInfo-Antwort erzeugen. Wenn Sie z. B. eine WMS GetFeatureInfo-Anforderung an den Server senden, antwortet der Server mit den angeforderten Features im XML-Format. Anschließend übernimmt die XSLT-Vorlage die "Übersetzung" des XML-Formats in ein angegebenes Format, z. B. HTML oder Nur-Text, sodass die endgültige Antwort gelesen werden kann.
Machen Sie sich mit der WMS GetFeatureInfo XML-Antwort und den standardmäßigen XSLT-Vorlagen vertraut, die im Lieferumfang der ArcGIS for Server-Installation enthalten sind, da die Anpassung der GetFeatureInfo-Antwort dadurch erleichtert wird. In den nächsten Abschnitten werden die einzelnen Optionen detailliert erläutert.
XML-Antwort für GetFeatureInfo
Das nachfolgende Beispiel zeigt eine XML-Antwort für "GetFeatureInfo" in einem WMS-Service:
<?xml version="1.0" encoding="UTF-8"?>
<esri_wms:FeatureInfoResponse version="1.3.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:esri_wms="http://www.esri.com/wms" xmlns="http://www.esri.com/wms">
<esri_wms:FeatureInfoCollection layername="fields">
<esri_wms:FeatureInfo>
<esri_wms:Field>
<esri_wms:FieldName>OBJECTID</esri_wms:FieldName>
<esri_wms:FieldValue>1</esri_wms:FieldValue>
</esri_wms:Field>
<esri_wms:Field>
<esri_wms:FieldName>Shape</esri_wms:FieldName>
<esri_wms:FieldValue>Polygon</esri_wms:FieldValue>
</esri_wms:Field>
<esri_wms:Field>
<esri_wms:FieldName>Shape_Area</esri_wms:FieldName>
<esri_wms:FieldValue>0.009079</esri_wms:FieldValue>
</esri_wms:Field>
...
<!-- there could be more <esri_wms:Field> -->
...
<esri_wms:Field>
<esri_wms:FieldGeometry>
<esri_wms:Point>0,0</esri_wms:Point>
<esri_wms:Multipoint>
<esri_wms:Point>0,45</esri_wms:Point>
<esri_wms:Point>10,55</esri_wms:Point>
<!-- there could be more <esri_wms:Point> -->
</esri_wms:Multipoint>
<esri_wms:Polyline>
<esri_wms:Path>
<esri_wms:Point>0,45</esri_wms:Point>
<esri_wms:Point>10,55</esri_wms:Point>
<!-- there could be more <esri_wms:Point> -->
</esri_wms:Path>
<!-- there could be more <esri_wms:Path> -->
</esri_wms:Polyline>
<esri_wms:Polygon>
<esri_wms:Ring>
<esri_wms:Point>0,45</esri_wms:Point>
<esri_wms:Point>10,55</esri_wms:Point>
<esri_wms:Point>15,25</esri_wms:Point>
<!-- there could be more <esri_wms:Point> -->
</esri_wms:Ring>
<!-- there could be more <esri_wms:Ring> -->
</esri_wms:Polygon>
</esri_wms:FieldGeometry>
</esri_wms:Field>
</esri_wms:FeatureInfo>
...
<!-- there could be more <esri_wms:FeatureInfo> -->
...
</esri_wms:FeatureInfoCollection>
...
<!-- there could be more <esri_wms:FeatureInfoCollection> -->
...
</esri_wms:FeatureInfoResponse>
Achten Sie auf die folgenden Details:
Das Stammtag
kann mehrere -Elemente enthalten. Jedes
-Element enthält die Attributfelder und Werte aller identifizierten Features aus einem einzelnen WMS-Layer. Die Informationen für ein einzelnes identifiziertes Feature sind in einem
-Tag enthalten. Achten Sie auf das Namen-/Wertepaar für jedes Feld. Jedes
-Tag enthält Raumbezugsinformation. Sofern verfügbar, wird die Feature-Geometrie in einem
-Tag zurückgegeben. Eine Feldgeometrie kann eine Punkt-, Multipoint-, Polylinien- oder Polygon-Geometrie enthalten.
Standardmäßige XSLT-Vorlagen
Im Lieferumfang von ArcGIS for Server sind XSLT-Vorlagen für die unterstützten Formate enthalten, die in den WMS-Funktionsdateien aufgelistet sind. Wenn Sie beispielsweise das Verzeichnis für diese Vorlagen unter
Im Lieferumfang von ArcGIS for Server sind XSLT-Vorlagen für die unterstützten Formate enthalten, die in den WMS-Funktionsdateien aufgelistet sind. Wenn Sie beispielsweise das Verzeichnis für diese Vorlagen unter
featureinfo_application_geojson.xsl
featureinfo_application_vnd.esri.wms_featureinfo_xml.xsl
featureinfo_application_vnd.ogc.wms_xml.xsl
featureinfo_text_html.xsl
featureinfo_text_plain.xsl
featureinfo_text_xml.xsl
Wie die Namen implizieren, wird jede Vorlage verwendet, um eine Standardantwort für GetFeatureInfo in einem lesbaren Format wie GeoJSON, Nur-Text und XML zu erzeugen.
Die HTML-Beispieltabelle mit dem blauen Titel, die am Anfang dieses Themas erwähnt wird, wurde mit der standardmäßigen XSLT-HTML-Vorlage erzeugt. Wenn Sie die XML-Daten im Rohformat abrufen möchten, können Sie alternativ den GetFeatureInfo-Anforderungsparameter "INFO_FORMAT" auf "application/vnd.esri.wms_raw_xml" festlegen. Mit dieser Methode können Sie Ihre eigene XSLT-Vorlage erstellen.
Anpassen der Antwort für GetFeatureInfo
Nachdem Sie sich mit den XML- und XSLT-Vorlagen für die GetFeatureInfo-Antwort vertraut gemacht haben, können Sie verschiedene Methoden zum Anpassen der WMS GetFeatureInfo-Antwort untersuchen.
Ändern der standardmäßigen XSLT-Vorlagen
Eine Methode besteht in der physischen Änderung der XSLT-Vorlagen. Wenn Sie z. B. die HTML-Vorlage "featureinfo_text_html.xsl" in einem Texteditor öffnen und das