2

How can I show the geometries from a GML3 file? Nothing is shown.

This question is DIFFERENT from Show GML on map (using an example GML file).

The other project was to get a strange GML2 file visible on the map.

In my Angular project, I first set the specific projection.

proj4.defs("EPSG:28992", "+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 +y_0=463000  +ellps=bessel  +towgs84=565.040,49.910,465.840,-0.40939,0.35971,-1.86849,4.0772 +units=m +no_defs");
register(proj4)
this.dutchProjection = GetProjection('EPSG:28992');

This is how I read the GML file (without errors):

this.gmlFeatures = new GML3().readFeatures(this.fileText, {
        featureProjection: 'EPSG:28992', dataProjection: 'EPSG:28992' });
2
  • If you have a solution you should post it as an answer
    – Ian Turton
    Commented Nov 8, 2020 at 19:50
  • Someone thought it was a similar question to another. But it wasn't at all. I wasn't able to put the solution elsewhere ... ;-( I will retry. Can you re-open the question?
    – tm1701
    Commented Nov 9, 2020 at 17:14

1 Answer 1

1

Loading the features: in this case from the 'assets' folder:

this.defineProjection();
this.httpClient.get('assets/wfs113-epsg-28992.xml', {responseType: 'text'})
  .subscribe(
    data => {
      console.log(data);
      this.fileText = data;
      var wfsFormat = new WFS({
        gmlFormat: new GML3()
      });
      this.gmlFeatures = wfsFormat.readFeatures(this.fileText, {
        featureProjection: 'EPSG:28992',
        dataProjection: 'EPSG:28992'
      });
      this.addGmlFeatures();
    },
    error => {
      console.log(error);
    }
  );

You have to define the specific projection first:

defineProjection() {
    proj4.defs("EPSG:28992", "+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 +y_0=463000  +ellps=bessel  +towgs84=565.040,49.910,465.840,-0.40939,0.35971,-1.86849,4.0772 +units=m +no_defs");
    register(proj4)
    this.dutchProjection = GetProjection('EPSG:28992');
  }

The displaying of the features on the map:

ngAfterViewInit() {
    let polygonStyle = new Style({
      fill: new Fill({
        color: "rgba(255, 0, 0, 0.8)"
      }),
      stroke: new Stroke({
        color: "#ffcc33",
        width: 10
      })
    });
    this.vectorSource = new VectorSource({
      format: new WFS(),
      features: []
    });
    this.vectorLayer = new Vector({
      source: this.vectorSource,
      style: [polygonStyle]
    });

    let scaleInfo = new ScaleLine({
      units: 'degrees',
      minWidth: 100
    });
    const mousePosition = new MousePosition({
      coordinateFormat: createStringXY(2),
      projection: 'EPSG:28992',
      undefinedHTML: ' No coordinate active'
    });

    this.map = new Map({
      layers: [
        new Tile({
          source: new XYZ({
            url: 'https://geodata.nationaalgeoregister.nl/tiles/service/wmts/brtachtergrondkaart/EPSG:3857/{z}/{x}/{y}.png',
          })
        }),
        this.vectorLayer
      ],
      view: new View({
        projection: this.dutchProjection,
        center: [173063,441818],
        zoom: 9
      }),
      target: "map"
    });
    this.map.addControl(scaleInfo);
    this.map.addControl(mousePosition);
    this.addGmlFeatures();
  }

And the adding of the features:

addGmlFeatures() {
    if (this.gmlFeatures.length > 0) {
      this.vectorLayer.getSource().addFeatures(this.gmlFeatures);
      //this.map.getView().fit( this.vectorSource.getExtent());
      console.log( this.map.getView().getProjection());
    }
  }

Example file:

<?xml version='1.0' encoding="ISO-8859-1" ?>
<wfs:FeatureCollection
  xmlns:ms="http://mapserver.gis.umn.edu/mapserver"
  xmlns:gml="http://www.opengis.net/gml"
  xmlns:wfs="http://www.opengis.net/wfs"
  xmlns:ogc="http://www.opengis.net/ogc"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://mapserver.gis.umn.edu/mapserver http://atl-p0-app001.culture.fr:5522/cgi-bin/mapserv?SERVICE=WFS&amp;VERSION=1.1.0&amp;REQUEST=DescribeFeatureType&amp;TYPENAME=MD_2775&amp;OUTPUTFORMAT=text/xml;%20subtype=gml/3.1.1  http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd">
  <gml:boundedBy>
    <gml:Envelope srsName="EPSG:28992">
      <gml:lowerCorner>173063 441818</gml:lowerCorner>
      <gml:upperCorner>173563 444318</gml:upperCorner>
    </gml:Envelope>
  </gml:boundedBy>
  <gml:featureMember>
    <ms:MD_2775>
      <gml:boundedBy>
        <gml:Envelope srsName="EPSG:28992">
          <gml:lowerCorner>173063 441818</gml:lowerCorner>
          <gml:upperCorner>173563 444318</gml:upperCorner>
        </gml:Envelope>
      </gml:boundedBy>
      <ms:msGeometry>
        <gml:Polygon srsName="EPSG:28992">
          <gml:exterior>
            <gml:LinearRing>
              <gml:posList srsDimension="2">173063 441818 173463 441818 173463 444818 173063 444818 173063 441818 </gml:posList>
            </gml:LinearRing>
          </gml:exterior>
        </gml:Polygon>
      </ms:msGeometry>
      <ms:CODE></ms:CODE>
      <ms:LIBELLE></ms:LIBELLE>
      <ms:D_CREAT>19890303</ms:D_CREAT>
      <ms:ZONE>ZPPAUP</ms:ZONE>
      <ms:SURFACE>4.62397681219e+006</ms:SURFACE>
      <ms:COORD_X>6.70482028142e+005</ms:COORD_X>
      <ms:COORD_Y>7.09856001803e+006</ms:COORD_Y>
      <ms:INSEE>59309</ms:INSEE>
      <ms:COMMUNE>HONDSCHOOTE</ms:COMMUNE>
      <ms:DEPARTEMEN>NORD</ms:DEPARTEMEN>
      <ms:REGION>NORD-PAS-DE-CALAIS</ms:REGION>
    </ms:MD_2775>
  </gml:featureMember>
</wfs:FeatureCollection>

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.