I didn't read your whole mail, but short answer is that I suspect you
are overlooking the fact that in GetFeatureInfo, the X and Y coordinates
are in pixels within the view of the map (which is 500x500 pixels in
your example).
So when you write x=0&y=0 that refers to the top-left corner of the map
view, and not the 0,0 of the SRS coordinate system... which corresponds
to longitude=-10, and latitude=+10. Actually, the x,y value is
translated to be the center of the top-left pixel (and not its top-left
boundary), which explains why you get lon,lat=9.98,9.98 in the query.
Daniel
On 12-06-22 5:40 PM, Anzel, Phil - NRCS, Fort Collins, CO wrote:
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.
_______________________________________________
mapserver-users mailing list
mapserver-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/mapserver-users
--
Daniel Morissette
http://www.mapgears.com/
Provider of Professional MapServer Support since 2000
_______________________________________________
mapserver-users mailing list
mapserver-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/mapserver-users