[Geomoose-users] Search based on lat/lon layer

Jim Klassen Jim.Klassen at ci.stpaul.mn.us
Mon Apr 27 11:58:23 EDT 2009


Did you see/read/try Steve's comment in the trac entry?

>>> Brent Fraser <bfraser at geoanalytic.com> 04/27/09 10:10 AM >>>
Jim,

  Looks like your patch will do the trick for the future.  I'm trying to use a "stock" mapserver for this implementation (v5.2.1 from MS4W), and stay off the GeoMoose v2.0 Beta (with OpenLayers) bleeding edge, so I'll likely enhance the GeoMoose javascript...

Thanks!
Brent

Jim Klassen wrote:
> Two thoughts.
> 
> 1) There have been recent changes to shpext and some of the other related tags in mapserver templates that support supplying an output projection. (or at least transforming them to the mapfiles output projection).... that reminds me I need to make a ticket for one of those changes.
> 
> http://trac.osgeo.org/mapserver/ticket/2961
> 
> Anyway... I already did that.
> --- maptemplate.c	(revision 8844)
> +++ maptemplate.c	(working copy)
> @@ -3282,14 +3282,23 @@
>          }
>        }
>      }
> -    
> -    sprintf(repstr, "%f %f", (mapserv->resultshape.bounds.maxx + mapserv->resultshape.bounds.minx)/2, (mapserv->resultshape.bounds.maxy + mapserv->resultshape.bounds.miny)/2); 
> -    outstr = msReplaceSubstring(outstr, "[shpmid]", repstr);
> -    sprintf(repstr, "%f", (mapserv->resultshape.bounds.maxx + mapserv->resultshape.bounds.minx)/2);
> -    outstr = msReplaceSubstring(outstr, "[shpmidx]", repstr);
> -    sprintf(repstr, "%f", (mapserv->resultshape.bounds.maxy + mapserv->resultshape.bounds.miny)/2);
> -    outstr = msReplaceSubstring(outstr, "[shpmidy]", repstr);
> -    
> +   
> +    { 
> +	    rectObj tempExtent;
> +	    tempExtent.minx = mapserv->resultshape.bounds.minx;
> +	    tempExtent.maxx = mapserv->resultshape.bounds.maxx;
> +	    tempExtent.miny = mapserv->resultshape.bounds.miny;
> +	    tempExtent.maxy = mapserv->resultshape.bounds.maxy;
> +	    if(msProjectionsDiffer(&(mapserv->resultlayer->projection), &(mapserv->map->projection))) 
> + 	        msProjectRect(&(mapserv->resultlayer->projection), &mapserv->map->projection, &tempExtent);  
> +	    sprintf(repstr, "%f %f", (mapserv->resultshape.bounds.maxx + mapserv->resultshape.bounds.minx)/2, (mapserv->resultshape.bounds.maxy + mapserv->resultshape.bounds.miny)/2); 
> +	    outstr = msReplaceSubstring(outstr, "[shpmid]", repstr);
> +	    sprintf(repstr, "%f", (tempExtent.maxx + tempExtent.minx)/2);
> +	    outstr = msReplaceSubstring(outstr, "[shpmidx]", repstr);
> +	    sprintf(repstr, "%f", (tempExtent.maxy + tempExtent.miny)/2);
> +	    outstr = msReplaceSubstring(outstr, "[shpmidy]", repstr);
> +    }
> +
>      if(processExtentTag(mapserv, &outstr, "shpext", &(mapserv->resultshape.bounds), &(mapserv->resultlayer->projection)) != MS_SUCCESS)
>        return(NULL);
>      if(processExtentTag(mapserv, &outstr, "shpext_esc", &(mapserv->resultshape.bounds), &(mapserv->resultlayer->projection)) != MS_SUCCESS) /* depricated */
> 
> 
> 2) You can reproject using the OpenLayers code: Something along the lines of: coord = {'x': x_coord, 'y': y_coord}; OpenLayers.Projection.transform({'x': lon, 'y': lat}, <insert your projection here>, LatLongProjection); ll = {'lon': coord.x, 'lat': coord.y} ; Map.panTo(ll);
> (From memory, check the projection call from geomoose/main.js)
> 
>>>> Brent Fraser <bfraser at geoanalytic.com> 04/24/09 4:32 PM >>>
>   I've got a layer in geographic coordinates I'd like to do a GeoMoose Search on.  Unfortunately, Mapserver's shpminx/shpmaxx/shpminx/shpmaxx template values return the shape extents in the layer's coordinate system, not the map coordinate system, so the GeoMoose Map.zoomToViewString call in the itemquery template does not work.
> 
>   Has anyone got a Map.zoomToLatLonViewString function laying around?
> 
> My other options are:
>   Convert the layer to the map projection (a maintenance nightmare)
>   Enhance Mapserver's [shpmin} handling to match it's [shpext proj=] abilities (too much work right now)
> 
> Thanks!
> Brent Fraser
> 
> ------------------------------------------------------------------------------
> Crystal Reports - New Free Runtime and 30 Day Trial
> Check out the new simplified licensign option that enables unlimited
> royalty-free distribution of the report engine for externally facing 
> server and web deployment.
> http://p.sf.net/sfu/businessobjects
> _______________________________________________
> Geomoose-users mailing list
> Geomoose-users at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/geomoose-users
> 
> 

------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensign option that enables unlimited
royalty-free distribution of the report engine for externally facing 
server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Geomoose-users mailing list
Geomoose-users at lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geomoose-users





More information about the Geomoose-users mailing list