Как разобрать объект GML 3.2.1 в OpenLayers? - PullRequest
0 голосов
/ 19 февраля 2020

Я пытаюсь проанализировать объект GML из службы WFS 2.0. Вот что я сделал до сих пор:

var parser = new  ol.format.GML32({
   featureNS: 'http://data.gov.dk/schemas/dagi/2/gml3sfp',
   featureType: 'Kommuneinddeling'
});
var feature = parser.readFeatures(gmlString); // After this step feature is empty

Ответ GML подобен этому

<?xml version="1.0" encoding="UTF-8"?>
<wfs:FeatureCollection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:dagi="http://data.gov.dk/schemas/dagi/2/gml3sfp" 
    xmlns:gml="http://www.opengis.net/gml/3.2" 
    xmlns:xlink="http://www.w3.org/1999/xlink" 
    xmlns:gmd="http://www.isotc211.org/2005/gmd" 
    xmlns:gco="http://www.isotc211.org/2005/gco" 
    xmlns:gss="http://www.isotc211.org/2005/gss" 
    xmlns:gts="http://www.isotc211.org/2005/gts" 
    xmlns:gsr="http://www.isotc211.org/2005/gsr" 
    xmlns:adr="http://data.gov.dk/schemas/adresse/0/gml3sfp" 
    xmlns:wfs="http://www.opengis.net/wfs/2.0" 
    xmlns:ows="http://www.opengis.net/ows/1.1" 
    xmlns:fes="http://www.opengis.net/fes/2.0" 
    xsi:schemaLocation="http://data.gov.dk/schemas/dagi/2/gml3sfp http://schemas.datafordeler.dk/schemas/1.0.0/DAGI_2000MULTIGEOM_GMLSFP/dagi_gml3sfp.xsd http://data.gov.dk/schemas/adresse/0/gml3sfp http://schemas.datafordeler.dk/schemas/1.0.0/DAGI_2000MULTIGEOM_GMLSFP/adresse_gml3sfp.xsd http://www.opengis.net/gml/3.2 http://schemas.opengis.net/gml/3.2.1/gml.xsd http://www.opengis.net/wfs/2.0 http://schemas.opengis.net/wfs/2.0/wfs.xsd" timeStamp="2020-02-19T03:20:09" numberMatched="1" numberReturned="1">
    <wfs:member>
        <dagi:Kommuneinddeling gml:id="dagi.1700389194">
            <dagi:id.namespace>http://data.gov.dk/dagi2000k</dagi:id.namespace>
            <dagi:id.lokalId>1700389194</dagi:id.lokalId>
            <dagi:status>vedtaget</dagi:status>
            <dagi:geometristatus>endelig</dagi:geometristatus>
            <dagi:virkningFra>2019-08-09T00:00:00.000+02:00</dagi:virkningFra>
            <dagi:virkningsaktoer>SDFE</dagi:virkningsaktoer>
            <dagi:forretningshaendelse>DAGIajourføring</dagi:forretningshaendelse>
            <dagi:registreringFra>2019-08-09T16:10:09.000+02:00</dagi:registreringFra>
            <dagi:registreringsaktoer>SDFE</dagi:registreringsaktoer>
            <dagi:forretningsomraade>52.20.20.27</dagi:forretningsomraade>
            <dagi:forretningsproces>DAGIafledning</dagi:forretningsproces>
            <dagi:navn>Aarhus</dagi:navn>
            <dagi:redigeringsret>SDFE</dagi:redigeringsret>
            <dagi:dataspecifikation>DAGI Objektspecifikation version 2.0</dagi:dataspecifikation>
            <dagi:landekode>DK</dagi:landekode>
            <dagi:skala>1:2.000.000</dagi:skala>
            <dagi:udtraeksdato>2020-02-19T03:20:09</dagi:udtraeksdato>
            <dagi:geometri>
                <gml:MultiSurface srsName="urn:ogc:def:crs:EPSG::25832" gml:id="LOCAL_ID_0">
                    <gml:surfaceMember>
                        <gml:Polygon srsName="urn:ogc:def:crs:EPSG::25832" gml:id="LOCAL_ID_1">
                            <gml:exterior>
                                <gml:LinearRing>
                                    ....
                                </gml:LinearRing>
                            </gml:exterior>
                        </gml:Polygon>
                    </gml:surfaceMember>
                </gml:MultiSurface>
            </dagi:geometri>
            <dagi:kommunekode>0751</dagi:kommunekode>
            <dagi:LAU1vaerdi>751</dagi:LAU1vaerdi>
            <dagi:udenforKommuneinddeling>false</dagi:udenforKommuneinddeling>
            <dagi:regionskode>1082</dagi:regionskode>
            <dagi:regionsLokalId>1700389101</dagi:regionsLokalId>
            <dagi:region xlink:href="http://data.gov.dk/dagi2000k#1700389101"/>
        </dagi:Kommuneinddeling>
    </wfs:member>
</wfs:FeatureCollection>

Насколько я вижу, ответ является объектом GML 3.2.1, так как он имеет тег вместо. После прочтения документа openlayers я вижу, что в нем есть класс GML32 для работы с ответом GML 3.2.1 (по умолчанию в WFS 2.0 используется GML 3.2.1), но приведенный выше код не работает. Я что-то упустил или это ошибка OpenLayers (я использую OpenLayers 6.2.1)?

...