Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WFS: do not send a MAP= parameter when a <file> is not given in the mapsource (for type="mapserver-wfs") #772

Open
brentfraser opened this issue Jan 3, 2023 · 6 comments

Comments

@brentfraser
Copy link
Contributor

It looks like lots of MapServers are specified to use EPSG:4326, especially when set up as WFS server. Due to a MapServer bug(?) they will respond to query requests in EPSG:3857.

GeoMoose currently (v3.11) has a type="mapserver-wfs" to do requests in EPSG:3857, and reproject response data in EPSG:4326. BUT using "mapserver-wfs" means that it will send a MAP= parameter, which the foreign server will complain about.

A good solution would be not to send a MAP parameter if the GeoMoose admin has not included a tag in the mapsource.

@brentfraser
Copy link
Contributor Author

An [better?] alternative would be to implement a tag in the mapsource and have GeoMoose reproject the request parameters and response values.

@elil
Copy link
Member

elil commented Jan 3, 2023

@brentfraser brentfraser changed the title WFS: don't send any MAP= parameter when a <file> is not given in the mapsource (for type="mapserver-wfs") WFS: do not send a MAP= parameter when a <file> is not given in the mapsource (for type="mapserver-wfs") Jan 11, 2023
@brentfraser
Copy link
Contributor Author

Test with #787

@theduckylittle
Copy link
Member

theduckylittle commented Jan 27, 2023

My current suggested solution:

  1. Do not use mapserver-wfs
  2. Use type="wfs" and do not use a MAP= parameter and set the srcProj= attribute.

I've updated this to review me since #787 has been opened.

@brentfraser
Copy link
Contributor Author

You suggestion doesn't work. I've setup a map-source:

    <map-source name="issue772"                 type="wfs"   src-proj="EPSG:4326"  title="World Cities">
        <url>https://demo.mapserver.org/cgi-bin/wfs?</url>
        <param name="cross-origin" value="anonymous"/>
        <param name="typename" value="ms:cities"/>
        <param name="srsname"  value="EPSG:4326"/>
        <config name="pixel-tolerance" value="3" />
        <layer name="cities" title="World Cities">
            <style><![CDATA[
            {
                "circle-radius": 4,
                "circle-color": "#fec44f",
                "fill-color": "#fec44f",
                "circle-stroke-color": "#d95f0e",
                "line-color": "blue",
                "line-width": 2,
                "fill-opacity": 0.20,
                "line-opacity": 0.80,
                "text-field_COMMENTED-OUT": "{OWNER_NAME}",
                "text-color": "#000000"
            }
            ]]></style>
            <template name="identify" auto="true" />
            <template name="select"   auto="true" />
        </layer>
    </map-source>

GeoMoose sends

https://demo.mapserver.org/cgi-bin/wfs?srsname=EPSG%3A4326&outputFormat=text%2Fxml%3B+subtype%3Dgml%2F2.1.2&service=WFS&version=1.1.0&request=GetFeature&bbox=-10378290.697282547%2C5463768.038048627%2C-10330823.302717453%2C5520255.001951372%2CEPSG%3A3857&cross-origin=anonymous&typename=ms%3Acities

Which in general looks OK, except the bbox is in EPSG:3857 (proj is given at the end of the bbox). The getCapabilities of the site specifies only EPSG:4326.

The server responds with

<?xml version='1.0' encoding="UTF-8" ?>
<wfs:FeatureCollection
   xmlns:ms="http://mapserver.gis.umn.edu/mapserver"
   xmlns:wfs="http://www.opengis.net/wfs"
   xmlns:gml="http://www.opengis.net/gml"
   xmlns:ogc="http://www.opengis.net/ogc"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/WFS-basic.xsd 
                       http://mapserver.gis.umn.edu/mapserver https://demo.mapserver.org/cgi-bin/wfs?SERVICE=WFS&amp;VERSION=1.1.0&amp;REQUEST=DescribeFeatureType&amp;TYPENAME=ms:cities&amp;OUTPUTFORMAT=XMLSCHEMA">
   <gml:boundedBy>
      <gml:null>missing</gml:null>
   </gml:boundedBy>
</wfs:FeatureCollection>

So no features returned. I'm guessing this is because the bbox is in EPSG:3857.

@theduckylittle
Copy link
Member

There is more going on than just he projection issue. I got all the projections working correctly in the #787 branch and it was still refusing to return anything when the bbox= was set. I think that it is an issue with a misconfigured WFS source. To address this I've added the following support:

<config name="strategy" value="all" />

Which will disable the use of the bounding-box loading strategy.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants