[mapserver-users] problems with KML output in context of WFS GetFeature

Peter Freimuth peter.freimuth at blackbridge.com
Wed Sep 24 07:40:11 PDT 2014


Hi Mapserver Users,

We have a problem with creating KML output from a PostGIS db in context of a GetFeature request version=1.1.0 outputformat=kml.

The problem is that not all attributes are exported and that the values are shifted, means the mapping between value ad attribute name is wrong.

This is the request:

http://localhost/cgi-bin/catalog_view.fcgi?typename=coveragepols&searchid=6ca8dd30-43b8-11e4-9804-00163e437838&SERVICE=WFS&VERSION=1.1.0&REQUEST=GetFeature&SRS=EPSG:4326&outputformat=kml

This is the mapserv config:
<!-- MapServer version 6.4.1 OUTPUT=PNG OUTPUT=JPEG OUTPUT=KML SUPPORTS=PROJ SUPPORTS=AGG SUPPORTS=FREETYPE SUPPORTS=CAIRO SUPPORTS=ICONV SUPPORTS=WMS_SERVER SUPPORTS=WMS_CLIENT SUPPORTS=WFS_SERVER SUPPORTS=WFS_CLIENT SUPPORTS=WCS_SERVER SUPPORTS=SOS_SERVER SUPPORTS=FASTCGI SUPPORTS=GEOS INPUT=JPEG INPUT=POSTGIS INPUT=OGR INPUT=GDAL INPUT=SHAPEFILE -->

This is the outputformat declaration from the mapfile:
    OUTPUTFORMAT
        NAME "kml"
        DRIVER "OGR/KML"
        MIMETYPE "application/vnd.google-earth.kml.xml"
        FORMATOPTION "STORAGE=memory"
        FORMATOPTION "FORM=SIMPLE"
        FORMATOPTION "FILENAME=catalog_search_result.kml"
    END

This is the layer from the mapfile:
    #----------------------------------------------------------------------------------------------------------------------------#
    # This layer serves a WMS representation of the coverage polygons and a WFS for the related metadata
    #----------------------------------------------------------------------------------------------------------------------------#    LAYER
        NAME "coveragepols"
        TYPE POLYGON
        STATUS ON
        DEBUG 5
        UNITS meters #dd
        SIZEUNITS PIXELS
        TOLERANCE 3
        TOLERANCEUNITS PIXELS
        MINSCALE 1000
        MAXSCALE 10000000
        LABELITEM "label"
        LABELMAXSCALEDENOM 1400000
        PROCESSING "CLOSE_CONNECTION=DEFER"
        CONNECTIONTYPE POSTGIS
        CONNECTION"user=nnnn password=nnnn dbname=nnnn host='localhost' port=5432"
        DATA "coverage_poly FROM (SELECT product_identifier, product_identifier||'_'||cast(acquisition_date as date)::text as label,
                                         imagetake_cat_id as it_cat_id, tile_id, spacecraft_id, cloud_cover, black_fill, acquisition_date,
                                         image_path, id as image_id, search_request_id as search_id,
                                         tileid_stack_order, roll_angle as view_angle, metadata_url,
                                         st_asewkt(st_transform(footprint,3785)::geometry) as footprint,
                                         st_transform(coveragepoly,3785) as coverage_poly
                             FROM catalog_search_view.view_service
                             WHERE search_request_id='%searchid%' AND is_visible=TRUE
                             ORDER BY product_identifier, tile_id, tileid_stack_order ASC, acquisition_date ASC, cloud_cover ASC, black_fill ASC
                             ) foo USING UNIQUE image_id USING SRID=3785"
        PROJECTION
            "init=epsg:3785" #Google Projection ( new code )
            #"init=epsg:4326"
        END
        VALIDATION
            'searchid' '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}'
            'default_searchid' '5b7257a0-d9df-11e3-b7e2-b4b52fd4696c'
        END
        METADATA
            "ows_title" "Coverage Polygons"
            "ows_extent" "-20037508.34 -20037508.34 20037508.34 20037508.34"
            #"ows_extent" "-180 -89 180 89"
            "wms_srs" "EPSG:3857 EPSG:3785 EPSG:900913 EPSG:4326" #output
            "wfs_getfeature_formatlist"  "geojson,shapezip,csv"
            "wfs_featureid" "image_id"
            "wfs_getfeature_formatlist"  "geojson,shapezip,csv,kml "
            "wfs_geomtype"  "Polygon"
            "gml_include_items" "all"
            "gml_exclude_items" ""
            "gml_types" "auto"
        END
        CLASS
            NAME "Coverage Polygons"
            #STYLE
            #   COLOR 231 182 21
            #END
            STYLE
                OUTLINECOLOR 10 255 0
                WIDTH 2
            END
            LABEL
...
            END
        END
    END


This is the resulting KML:

<?xml version="1.0" encoding="utf-8" ?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document><Folder><name>coveragepols</name>
  <Placemark>
                <name>8971800</name>
                <description>8971800_2012-04-01</description>
                <Style><LineStyle><color>ff0000ff</color></LineStyle><PolyStyle><fill>0</fill></PolyStyle></Style>
                <ExtendedData><SchemaData schemaUrl="#coveragepols">
                                <SimpleData name="product_identifier">8971799</SimpleData>
                                <SimpleData name="label">2131328</SimpleData>
                                <SimpleData name="it_cat_id">0</SimpleData>
                                <SimpleData name="tile_id">2</SimpleData>
                                <SimpleData name="spacecraft_id">70</SimpleData>
                                <SimpleData name="cloud_cover">2012</SimpleData>
                                <SimpleData name="black_fill">0</SimpleData>
                                <SimpleData name="image_path">6ca8dd30-43b8-11e4-9804-00163e437838</SimpleData>
                                <SimpleData name="search_id"></SimpleData>
                                <SimpleData name="view_angle">0</SimpleData>
                </SchemaData></ExtendedData>
      <Polygon><outerBoundaryIs><LinearRing><coordinates>-53.842662603651206,-16.845382012603906 -53.8416445,-16.911957400000013 -54.050696106229296,-16.914945332724113 -54.029782739899993,-16.81954737480001 -53.842662603651206,-16.845382012603906</coordinates></LinearRing></outerBoundaryIs></Polygon>
  </Placemark>
....

Everything works fine with GML2,3, geojson, csv, shapezip.
This is an example of the  gml2 output:
<gml:featureMember>
<re:coveragepols fid="coveragepols.7870">
<gml:boundedBy><gml:Box srsName="EPSG:4326"><gml:coordinates>-16.914945,-54.050696 -16.819547,-53.841645</gml:coordinates></gml:Box></gml:boundedBy>
<re:msGeometry><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>-16.845382,-53.842663 -16.911957,-53.841645 -16.914945,-54.050696 -16.819547,-54.029783 -16.845382,-53.842663 </gml:coordinates>
</gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></re:msGeometry>
<re:product_identifier>8971800</re:product_identifier>
<re:label>8971800_2012-04-01</re:label>
<re:it_cat_id>8971799</re:it_cat_id>
<re:tile_id>2131328</re:tile_id>
<re:spacecraft_id>RapidEye-2</re:spacecraft_id>
<re:cloud_cover>2</re:cloud_cover>
<re:black_fill>70</re:black_fill>
<re:acquisition_date>2012-04-01 14:54:13+00</re:acquisition_date>
<re:image_path>/data/browse_images/re/itt_it/2012/4/1/8971799/2131328_2012-04-01_8971799_8971800_browse.tif</re:image_path>
<re:image_id>7870</re:image_id>
<re:search_id>6ca8dd30-43b8-11e4-9804-00163e437838</re:search_id>
<re:tileid_stack_order/>
<re:view_angle/>
<re:metadata_url/>
<re:footprint>SRID=3785;MULTIPOLYGON(((-6020089.94663019 -1884323.72494587,-5993595.17046117 -1884323.72494587,-5993595.17046117 -1910982.75368706,-6020089.94663019 -1910982.75368706,-6020089.94663019 -1884323.72494587)))</re:footprint>
</re:coveragepols>
</gml:featureMember>


Any idea what I need to change to get this working properly?? Any hint or a solution is welcome.

Peter
BlackBridge AG | Sitz Berlin | Amtsgericht Charlottenburg - Registergericht | HRB 152785 | Aufsichtsratsvorsitzender: David Westwood | Vorstand: Ryan Johnson
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/mapserver-users/attachments/20140924/4cabbe16/attachment-0001.html>


More information about the mapserver-users mailing list