Недопустимые имена в WFS:GetFeatures POST?

Я пытаюсь заставить работать даже самый простой запрос WFS HTTP_POST к конечной точке WFS GeoServer.

Этот HTTP_GET-запрос работает и возвращает то, что я ожидаю (для ясности вставлены новые строки):

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

Я ожидаю этот запрос HTTP_POST:

http://mygeoserver.com/geoserver/ows

с этим телом запроса:

<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>

вернуть то же самое.

Вместо этого я получаю ошибку:

    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'.

Что бросает меня за цикл, так это то, что то же самое значение, которое работает для параметра typeNames в HTTP_GET, выдает ошибку в HTTP_POST.

Кажется, проблема в том, что мне нужно указать определение пространства имен в XML для "mynamespace".

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

Я предполагаю, что это доступно где-то в моей установке GeoServer. Но где?

1 ответ

Решение

Это будет то, что вы указали в качестве URI рабочего пространства mynamespace. Вы можете посмотреть его, используя запрос descriptionFeature. Так, например:

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

дает:

<?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>
     [....]
Другие вопросы по тегам