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

Even Rouault even.rouault at spatialys.com
Wed Sep 24 08:25:12 PDT 2014


Peter,

looks like you need https://github.com/mapserver/mapserver/issues/4776. 
Probably on master only currently. Might be backport-able to 6.4 branch as 
well.

Best regards,

Even

Le mercredi 24 septembre 2014 16:40:11, Peter Freimuth a écrit :
> 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=6
> ca8dd30-43b8-11e4-9804-00163e437838&SERVICE=WFS&VERSION=1.1.0&REQUEST=GetFe
> ature&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</f
> ill></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></outerB
> oundaryIs></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

-- 
Spatialys - Geospatial professional services
http://www.spatialys.com


More information about the mapserver-users mailing list