[mapserver-users] Strange coordinates used in GetFeatureInfo request
Anzel, Phil - NRCS, Fort Collins, CO
Phil.Anzel at ftc.usda.gov
Fri Jun 22 14:40:51 PDT 2012
All,
Does "GetFeatureInfo" have a coordinate translation problem?
Consider the WMS request shown here (ignore line wrapping):
http://localhost/mapserver/mapserv.exe
?map=m01.map
&SERVICE=WMS
&VERSION=1.1.1
&REQUEST=GetFeatureInfo
&LAYERS=External
&QUERY_LAYERS=External
&INFO_FORMAT=text/plain
&x=0.0&y=0.0
&SRS=EPSG:4326
&BBOX=-10,-10,10,10
&width=500&height=500
In the mapfile below, all coordinate system references are to "4326". Forcing an error in the DATA statement makes me think the (0,0) coordinate pair is mistranslated, as shown by the message below which includes:
shape_BOGUS.STIntersects(
geometry::STGeomFromText('POINT(-9.98 9.98)',4326)) = 1
Is there a problem with my request or with my mapfile?
Following is the mapfile and some experiments that I performed. I'm using MapServer 6.1-DEV with Sql Server 2008 under Windows XP.
The relevant mapfile is defined as:
map
name m01
status on
size 500 500
extent -20 -20 20 20
units dd
imagecolor 255 255 255
projection "init=epsg:4326" end
web
imagepath "c:\ms4w\tmp\ms_tmp"
imageurl "/ms_tmp/"
metadata
"wms_title" "test-title"
"wms_extent" "-180 -90 180 90"
"wms_srs" "EPSG:4326"
"ows_enable_request" "GetCapabilities GetMap GetFeature GetFeatureInfo"
end
end
layer
name "External"
type polygon
status on
metadata
"wms_title" "External"
"wms_extent" "-180 -90 180 90"
"wms_srs" "EPSG:4326"
"ows_include_items" "all"
"wms_include_items" "all"
"gml_include_items" "all"
"gml_geometries" "multiPolygon"
"gml_multiPolygon_type" "multipolygon"
end
dump true
header "C:\ms4w\Apache\cgi-bin\m01_header.htm"
template "C:\ms4w\Apache\cgi-bin\m01_template.html"
footer "C:\ms4w\Apache\cgi-bin\m01_footer.html"
projection "init=epsg:4326" end
units dd
# ExternalData table created and populated in Sql Server 2008 with:
# create table ExternalData
# (ID varchar(10) primary key, shape Geometry not null);
# insert into ExternalData (id, shape) values ('x102',
# geometry::STGeomFromText('polygon((-20 -20,-20 20,20 20,20 -20,-20 -20))', 4326))
connection "server=...;database=test;uid=...;pwd=..."
connectiontype plugin
plugin "C:/ms4w/Apache/specialplugins/msplugin_mssql2008.dll"
data "shape from dbo.ExternalData using unique ID using srid=4326"
labelitem "ID"
class
name "ExternalClass"
style color 255 0 0 outlinecolor 0 255 0 end
label position auto size small color 0 0 0 end
end
end
end
Note that the WMS request, the MAP and the LAYER are all defined with the "4326" projection.
If I change the DATA statement to force an error,
data "shape_BOGUS from dbo.ExternalData using unique ID using srid=4326"
the error returned shows:
msMSSQL2008LayerGetShape(): Query error.
Error executing MSSQL2008 SQL statement:
SELECT
convert(varchar(max), id),
shape_BOGUS.STAsBinary(),
convert(varchar(36), ID)
from dbo.ExternalData
WHERE shape_BOGUS.STIntersects(
geometry::STGeomFromText('POINT(-9.98 9.98)',4326)) = 1
Please note that the POINT location should be (0,0). Why isn't it?
A similar problem occurs if the feature is defined "inline" as described below.
Some additional details:
1. If I remove the "_BOGUS", a result is returned. Therefore I believe that the mapfile is well-formed.
2. With "_BOGUS" removed, and the polygon redefined in the database as POLYGON((-5 -5,-5 5,5 5,5 -5,-5 -5)), no result is returned. Therefore I believe that the bad coordinates in the query are being used.
3. If I define and use an "Internal" layer:
layer
name "Internal"
type polygon
status on
metadata
"wms_title" "Internal"
"wms_extent" "-180 -90 180 90"
"wms_srs" "EPSG:4326"
"ows_include_items" "all"
"wms_include_items" "all"
"gml_include_items" "all"
"gml_geometries" "multiPolygon"
"gml_multiPolygon_type" "multipolygon"
end
dump true
header "C:\ms4w\Apache\cgi-bin\m01_header.htm"
template "C:\ms4w\Apache\cgi-bin\m01_template.html"
footer "C:\ms4w\Apache\cgi-bin\m01_footer.html"
projection "init=epsg:4326" end
units dd
feature
wkt "polygon((-20 -20,-20 20,20 20,20 -20,-20 -20))"
items "x101"
end
processing "items=ID"
labelitem "ID"
class
name "InternalClass"
style color 255 0 0 outlinecolor 0 255 0 end
label position auto size small color 0 0 0 end
end
end
then the query returns a result. Therefore I believe that the mapfile is well-formed.
4. If I change the feature to "POLYGON((-5 -5,-5 5,5 5,5 -5,-5 -5))", no result is returned by the query. Therefore I believe that the bad coordinate problem occurs not only for Sal Server but for an inline feature as well.
5. GetMap shows the expected polygons for both the Internal and External layers when specifying "&x=0&y=0" and using a feature defined as "POLYGON((-5 -5,-5 5,5 5,5 -5,-5 -5)). Therefore I believe that the problem is specific to GetFeatureInfo.
- Phil Anzel
Contractor for USDA/NRCS
ITC Web Soil Survey Team Member
This electronic message contains information generated by the USDA solely for the intended recipients. Any unauthorized interception of this message or the use or disclosure of the information it contains may violate the law and subject the violator to civil or criminal penalties. If you believe you have received this message in error, please notify the sender and delete the email immediately.
More information about the MapServer-users
mailing list