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

Add source projection information to map-sources #787

Draft
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

theduckylittle
Copy link
Member

Add a src-proj property to WFS sources to make configuring the projection information more explicit.

This will work with a WFS in its preferred projection.

@klassenjs
Copy link
Member

I'm not sure on this one. I'm getting JS Console errors, but I might be doing it wrong. Is there docs/test case for this?

Add a `src-proj` property to WFS sources to make configuring the
projection information more explicit.
@theduckylittle
Copy link
Member Author

@klassenjs see #542 for a test case. This latest version should be working properly with both EPSG:3857 layers and EPSG:4326 layers.

Ensure projections are set properly when given src-srs
@brentfraser
Copy link
Contributor

Display of WFS EPSG:4326 features works! But Identify and Select does not.

GeoMoose/OL sends a GetFeature request with a Filter containing
<PropertyName>geom</PropertyName>
which must be a default somewhere in the code. My two test servers report a geom name of msGeometry (e.g. see https://demo.mapserver.org/cgi-bin/wfs?SERVICE=WFS&VERSION=1.1.0&REQUEST=DescribeFeatureType )

I think we ran across this problem when implementing WFS-T and added:
<config name="geometry-name" value="wkb_geometry" />
to the map-source definition.

Or maybe the problem is the coordinate def / order (such a nightmare for WFS 1.0, 1.1, 2.0).

@klassenjs
Copy link
Member

klassenjs commented Apr 26, 2023

I think this needs a manual merge/rebase. I'm not seeing the vector parcels or pipelines layers on the map anymore (MapServer on the demo server is returning an error).

Note: tested with a local checkout of this branch and then a local git rebase main (which applied cleanly).

<wfs:FeatureCollection 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.geomoose.org/cgi-bin/mapserv7?map=/srv/demo/src/3.x/gm3-demo-data/demo/parcels/parcels.map&SERVICE=WFS&VERSION=1.1.0&REQUEST=DescribeFeatureType&TYPENAME=ms:parcels&OUTPUTFORMAT=XMLSCHEMA">
<gml:boundedBy>
<gml:null>missing</gml:null>
</gml:boundedBy>
</wfs:FeatureCollection>

@brentfraser
Copy link
Contributor

Here's my mapbook for testing this PR (AKA Issue #542 ), as well as Issue #772

<?xml version="1.0"?>
<mapbook version="3.0">
    <!-- *********************************************************
        Issues
    *********************************************************  -->
	
    <map-source name="issue542"                    type="wfs" src-proj="EPSG:4326" title="Issue 542">
        <url>https://mrdata.usgs.gov/wfs/sgmc2</url>
        <param name="cross-origin" value="anonymous"/>
        <param name="typename" value="ms:Structure"/>
        <param name="srsname"  value="EPSG:4326"/>
        <layer name="Structure" >
            <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" />
        </layer>
    </map-source>
	
    <map-source name="issue772"                 type="wfs"   src-proj="EPSG:4326"  title="World Cities">
	<!-- :https://demo.mapserver.org/cgi-bin/wfs?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetCapabilities -->
        <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"/>
        <param name="outputFormat" value="GML2"/>  <!-- From GetCapabilities: GML2: "text/xml; subtype=gml/2.1.2; charset=UTF-8" -->
		
        <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>

    <map-source name="wfs"                 type="wfs"   src-proj="EPSG:4326"  title="water_areas">
        <url>https://ahocevar.com/geoserver/wfs?</url>
        <param name="cross-origin" value="anonymous"/>
        <param name="typename" value="osm:water_areas"/>
        <param name="srsname"  value="EPSG:4326"/>
        <param name="outputFormat" value="GML2"/>  <!-- From GetCapabilities: GML2: "text/xml; subtype=gml/2.1.2; charset=UTF-8" -->
		
        <config name="pixel-tolerance" value="3" />
        <layer name="water_areas" title="water_areas">
            <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>

    <!-- *********************************************************
        Image Only
    *********************************************************  -->
    <!-- - - - - - - -  TYPE = "xyz"   - - - - - - - - - - - - -->
    <map-source name="openstreetmap"              type="xyz" opacity="0.5">
        <url>https://a.tile.openstreetmap.org/{z}/{x}/{y}.png</url>
        <url>https://b.tile.openstreetmap.org/{z}/{x}/{y}.png</url>
        <url>https://c.tile.openstreetmap.org/{z}/{x}/{y}.png</url>
        <param name="cross-origin" value="anonymous"/>        
        <layer name="osm_mapnik" status="on">
            <attribution><![CDATA[
                    &copy; <a href="http://www.openstreetmap.org/copyright" target="_blank">OpenStreetMap</a> Contributors.
            ]]></attribution>
<!--            <legend type="img">https://c.tile.openstreetmap.org/12/987/1478.png</legend>  -->
            <legend type="html"><![CDATA[
                <img width="100" height="100" src="https://c.tile.openstreetmap.org/12/987/1478.png">
            ]]></legend>
        </layer>
    </map-source>

    <!-- =========================================================
        The catalog defines how the layers will be displayed in the catalog tab.
    =========================================================  -->
    <catalog>
        <group title="Issues"                             expand="true" tip="">
		    <layer title=" Allow WFS query return to be in EPSG:4326 #542 " src="issue542/Structure" legend-toggle="false" show-legend="false" legend="false" fade="false" unfade="false"></layer>
		    <layer title=" WFS: do not send a MAP= parameter  #772 " src="issue772/cities" legend-toggle="false" show-legend="false" legend="false" fade="false" unfade="false"></layer>
		    <layer title=" WFS:OpenLayers Example" src="wfs/water_areas" legend-toggle="false" show-legend="false" legend="false" fade="false" unfade="false"></layer>
        </group>

        <group title="Image Only"                             expand="false" tip="">
            <group title="XYZ Tiles"           expand="true">
                <layer title="OpenStreetmap" src="openstreetmap/osm_mapnik" legend-toggle="true" show-legend="true" legend="true" fade="true" unfade="true">
                </layer>
            </group>
        </group>

    </catalog>

    <toolbar>
        <tool name="fullextent" title="Zoom to Full Extent" type="action"/>
        <tool name="measure"    title="Measure"             type="service"/>
        <tool name="print"      title="Print"               type="action"/>

        <tool name="identify"   title="Identify" type="service"/>
        <tool name="select"     title="Select"   type="service"/>

        <drawer name="searches" title="Search">
            <tool name="geocode"                                title="Geocode an Address"      type="service"/>
        </drawer>

        <tool name="findme"     title="Find Me"    type="action"/>
        <tool name="reload"     title="Start Over" type="action"/>
    </toolbar>
</mapbook>

@klassenjs klassenjs modified the milestones: 3.11.0, 3.12.0 May 19, 2023
@klassenjs klassenjs modified the milestones: 3.12.0, 3.13.0 Sep 15, 2023
@tchaddad
Copy link
Collaborator

tchaddad commented Nov 8, 2024

Just making a comment here to say that the reason for search and identify not working may be related to the issue described in #346 which effectively is an issue inherited from MapServer WFS

@klassenjs klassenjs marked this pull request as draft November 8, 2024 19:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants