2017-11-06 5 views
-1

Ich versuche, die einfachste WFS HTTP_POST-Anfrage gegen einen GeoServer WFS-Endpunkt zu arbeiten.Ungültige Typnamen in WFS: GetFeatures POST?

Diese HTTP_GET Anfrage funktioniert, und gibt, was ich (Zeilenumbrüche für Klarheit eingefügt) erwarten:

http://mygeoserver.com/geoserver/ows? 
    service=wfs& 
    version=2.0.0& 
    request=getfeature& 
    count=3& 
    typenames=mynamespace:myfeaturetype& 
    cql_filter=dccode=%27XYZ%27 

Ich würde erwarten, dass diese HTTP_POST Anfrage:

http://mygeoserver.com/geoserver/ows 

mit dieser Anfrage Körper:

<GetFeature 
    version="2.0.0" 
    service="WFS" 
    count="3" 
    xmlns="http://www.opengis.net/wfs/2.0" 
    xmlns:fes="http://www.opengis.net/fes/2.0" 
    xmlns:gsml="http://xmlns.geosciml.org/GeoSciML-Core/3.2" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.opengis.net/wfs/2.0 
    http://schemas.opengis.net/wfs/2.0/wfs.xsd" 
    > 

    <Query 
     typeNames="mynamespace:myfeaturetype" 
     > 
     <Filter 
      xmlns="http://www.opengis.net/fes/2.0" 
      xmlns:xlink="http://www.w3.org/1999/xlink" 
      xmlns:gsml="http://xmlns.geosciml.org/GeoSciML-Core/3.2" > 
      <PropertyIsEqualTo> 
       <ValueReference>dccode</ValueReference> 
       <Literal>XYZ</Literal> 
      </PropertyIsEqualTo> 
     </Filter> 
    </Query> 
</GetFeature> 

, um das gleiche zurückzugeben.

Stattdessen bekomme ich einen Fehler:

cvc-datatype-valid.1.2.3: 'mynamespace:myfeaturetype' is not a valid value of union type 'TypeNamesType'. 

    cvc-attribute.3: The value 'mynamespace:myfeaturetype' of attribute 'typeNames' on element 'Query' is not valid with respect to its type, 'TypeNamesListType'. 

Was mich für eine Schleife ist zu werfen ist, dass der gleiche Wert, der für den typeNames Parameter in der HTTP_GET arbeitet einen Fehler in der HTTP_POST wirft.

Das Problem scheint zu sein, dass ich eine Namespacedefinition im XML für "mynamespace" angeben muss.

<Query 
    typeNames="mynamespace:myfeaturetype" 
    xmlns:mynamespace="http://????" 
    > 

Ich gehe davon aus, dass diese verfügbar ist, irgendwo in meiner GeoServer Installation. Aber wo?

Antwort

1

Dies ist alles, was Sie als URI des Arbeitsbereichs mynamespace festlegen. Sie können es mithilfe einer beschreibendenFunktionsanfrage anzeigen. So zum Beispiel:

curl http://localhost:8080/geoserver/wfs\?service=wfs\&version=1.1.0\&request=DescribeFeatureType\&typeName=topp:states 

gibt:

<?xml version="1.0" encoding="UTF-8"?> 
<xsd:schema xmlns:gml="http://www.opengis.net/gml" 
    xmlns:topp="http://www.openplans.org/topp" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    elementFormDefault="qualified" 
    targetNamespace="http://www.openplans.org/topp"> 
    <xsd:import namespace="http://www.opengis.net/gml" schemaLocation="http://localhost:8080/geoserver/schemas/gml/3.1.1/base/gml.xsd"/> 
    <xsd:complexType name="statesType"> 
    <xsd:complexContent> 
    [....] 
Verwandte Themen