[mapserver-users] DATA "table" does not find FID for WFS

Even Rouault even.rouault at spatialys.com
Wed Oct 28 04:31:26 PDT 2015


Le mercredi 28 octobre 2015 12:12:55, Rahkonen Jukka (MML) a écrit :
> Hi,
> 
> I am testing with MS4W 3.1.0 and the GDAL that is included seems to be
> 
> C:\ms4w>gdalinfo --version
> GDAL 2.0.0, released 2015/06/14
> 
> I believe that it should include #5781

Yes, but that is irrelevant to your issue when looking closer.

The GML output tries to find a item/field with the name of the gml_featureid. 
But the FID column in OGR is treated specially and not reported as a regular 
field. Which explains the error. In the case of "select * from table_name" as 
pk_uid is different from ogc_fid then it is just recognized as a regular column, 
which makes things work. So even "select * from table_name" isn't a guarantee 
that things are going to work. If the primary key field was named ogc_fid, you'd 
have to do "select ogc_fid as pk_uid, * from table_name" so it appears as a 
regular OGR field.

> 
> -Jukka-
> 
> Even Rouault wrote:
> 
> Le mercredi 28 octobre 2015 08:10:44, Rahkonen Jukka (MML) a écrit :
> > Hi,
> > 
> > I have noticed with Mapserver 7.0 that WFS server does not find the
> > "gml_featureid" column if I define DATA this way:
> > 
> > CONNECTIONTYPE OGR
> > CONNECTION "\ms4w\apps\wms-wfs.sqlite"
> > DATA "states"
> > 
> > This gives a warning into GML sent by GetFeature
> > <!-- WARNING: FeatureId item 'PK_UID' not found in typename
> > 'states_table'. -->
> > and featureMembers are without fid
> > <gml:featureMember>
> > <ms:states_table>
> > 
> > This leads to correct result:
> > 
> > CONNECTIONTYPE OGR
> > CONNECTION "\ms4w\apps\wms-wfs.sqlite"
> > DATA "select * from states"
> > 
> > <gml:featureMember>
> > <ms:states_table fid="states_table.1">
> > 
> > Documentation http://www.mapserver.org/input/vector/ogr.html does not
> > warn that defining data as "layer_name" vs. "select * from layer"
> > could make a difference. Ogrinfo finds the FID column and reports it
> > as: FID Column = PK_UID
> > 
> > PK_UID is defined in the table as
> > CREATE TABLE states (
> > PK_UID INTEGER PRIMARY KEY AUTOINCREMENT,
> > 
> > 
> > This looks like a bug but I am not sure if it is a Mapserver bug of
> > GDAL bug and if it affects only Spatialite.
> 
> You didn't specify which GDAL version is used.
> 
> That could possibly be the following bug that was fixed in 1.11.2 and 2.0:
>  * make GetFIDColumn() work when run as first method call (#5781)
> 
> > -Jukka Rahkonen-
> 
> --
> Spatialys - Geospatial professional services http://www.spatialys.com

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



More information about the MapServer-users mailing list