[fusion-dev] fusion and projection support

Mike Adair madair at dmsolutions.ca
Wed Oct 7 16:47:12 EDT 2009


Andreas,

I've just added the equivalent support for this for MapGuide to trunk, 
but I implemented the call to convertWKTToEPSG in the LoadMap.php script 
to avoid another trip to the server.

You will still need to do some setup in MapGuide so that the lookup of 
WKT to EPSG works, or else optionally include the projection definition 
string and or EPSG code in the AppDefinition.xml file.   If neither of 
those options are used, then the map will default to the OpenLayers 
default of EPSG:4326.

In the older version of MapGuide that I am running (v2.0.0), it looks 
like the WKT/EPSG lookup table is in MG/server/data/*.wkt but I'm not at 
all sure of that. (I was able to lookup one of the EPSG codes in those 
files, but haven't successfully added a custom projection def to those).

Mike



Andreas Morf wrote:
> Mike
> I investigated a little bit:
>
> With the following Code, it is possible to get the EPSG code from the
> Server:
>
> Mapguide.js:
>
>     convertWKT2EPSGRequest: function(wkt) {
>         var r = new Fusion.Lib.MGRequest.MGEPSGfromWKT(wkt);
>         Fusion.oBroker.dispatchRequest(r,
> OpenLayers.Function.bind(this.processWKT2EPSGresponse, this));
>
>     },
>     
>     processWKT2EPSGresponse: function (r) {
>         if (r.responseText)
>             alert(r.responseText);
>     }, 
>
> MGBroker.js
>
> Fusion.Lib.MGRequest.MGEPSGfromWKT = OpenLayers.Class(Fusion.Lib.MGRequest,
> {
>
>     initialize : function( wkt ) 
>     {
>         this.initializeRequest();
>         this.setParams( {
>             operation : 'CS.CONVERTWKTTOEPSGCODE',
>             version: '1.0.0',
>             cswkt: wkt
>         } );
>     }
> });
>
> The main problem was that the server always returned a '0' as result for my
> WKT:
>
> PROJCS["SWISS",GEOGCS["LLCH1903",DATUM["CH-1903",SPHEROID["BESSEL",6377397.1
> 55,299.15281535],TOWGS84[660.0770,13.5510,369.3440,0.804816,0.577692,0.95223
> 6,5.66000000]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PR
> OJECTION["Swiss_Oblique_Cylindrical"],PARAMETER["false_easting",600000.000],
> PARAMETER["false_northing",200000.000],PARAMETER["latitude_of_origin",46.952
> 40555555556],PARAMETER["central_meridian",7.43958333333333],UNIT["Meter",1.0
> 0000000000000]]
>
> There is a mapping file in CS-Map/Dictionaries which maps from CS-Code to
> EPSG (NameMapper.csv) - the CS-Code 'SWISS' was not in there so I added the
> following line:
>
> 21781,16,Autodesk,0,"SWISS",0,0,0,0,,
>
> After restarting httpd (this took me quite a bit of time to find out...) the
> server answers the request with the right EPSG-Code of 21781!
>
> Greets
> Andreas
>
>
>
>
>
>   
>> -----Original Message-----
>> From: fusion-dev-bounces at lists.osgeo.org [mailto:fusion-dev-
>> bounces at lists.osgeo.org] On Behalf Of Andreas Morf
>> Sent: Wednesday, October 07, 2009 8:40 AM
>> To: fusion-dev at lists.osgeo.org
>> Subject: RE: [fusion-dev] fusion and projection support
>>
>> The default projection of mgMapOL is set to "EPSG:4326" on line 14636
>> in
>> Openlayers.js. If Proj4js is available the initialisation of the OL
>> projection with the followinge statements (around line 10855)
>>
>>   if (window.Proj4js) {
>>       this.proj = new Proj4js.Proj(projCode);
>>   }
>>
>> results in this.proj being defined - and finally this leads to my map
>> being
>> screwed up (wrong scale, extents...) becaus my coords are in another
>> CRS
>>
>> Andreas
>>
>>     
>>> -----Original Message-----
>>> From: Mike Adair [mailto:madair at dmsolutions.ca]
>>> Sent: Tuesday, October 06, 2009 8:09 PM
>>> To: Andreas Morf
>>> Cc: fusion-dev at lists.osgeo.org
>>> Subject: Re: [fusion-dev] fusion and projection support
>>>
>>> That change is required so that the Measure widget can work with maps
>>> in
>>> various projections, otherwise the distances measured don't make
>>>       
>> sense
>>     
>>> at all (for both MapServer and MapGuide).
>>>
>>> I don't see how that revision would break a MapGuide application,
>>> perhaps you can explain?
>>>
>>> I am working on a patch for MapGuide side of things to set the
>>> projection automatically. Ideally the MapGuide API would have a way
>>>       
>> of
>>     
>>> returning the EPSG code for a map and indeed it does have
>>> $csFactory->ConvertWktToEpsgCode($srs), however I am getting an error
>>> whenever I try to use that "Could not convert to EPSG code from WKT".
>>> It
>>> is for this reason that I put support for that in the Map extension
>>> element in AppDef. If you can point to a better way of informing the
>>> client about the EPSG code for the map I would be happy to hear it.
>>>
>>> Mike
>>>
>>>
>>>
>>> Andreas Morf wrote:
>>>       
>>>> With rev. 1907 Mike added projection support to fusion - this
>>>>         
>> screwed
>>     
>>>> up my fusion app where I use projected coordinates (swiss grid):
>>>>         
>> the
>>     
>>>> oMapOL was set to default value EPSG:4326 which was the source of
>>>> malfunction.
>>>>
>>>> I normally set the CRS in my MG-mapdefinition and I don't want to
>>>>         
>> set
>>     
>>>> it again in fusion and additionally provide a EPSGxy.js ().
>>>>         
>> Shouldn't
>>     
>>>> fusion read out CRS-def from MG-server mapdef for the actual map
>>>>         
>> and
>>     
>>>> use that for client-side calculations?
>>>>
>>>> IMHO 1907 looks a bit like a quick and dirty fix for mapserver
>>>> concerns - the whole matter shoud be discussed an planned from
>>>>         
>> ground
>>     
>>>> up (RFC?).
>>>>
>>>> Greets, Andreas
>>>>
>>>> -------------------------------------------------------------------
>>>>         
>> --
>>     
>>> ---
>>>       
>>>> _______________________________________________
>>>> fusion-dev mailing list
>>>> fusion-dev at lists.osgeo.org
>>>> http://lists.osgeo.org/mailman/listinfo/fusion-dev
>>>>
>>>>         
>>> --
>>>    Michael Adair
>>>    Senior Software Architect
>>>    DM Solutions Group Inc.
>>>
>>>    Office: (613) 565-5056 x26
>>>    madair at dmsolutions.ca
>>>    http://www.dmsolutions.ca
>>>    http://research.dmsolutions.ca
>>>       
>> _______________________________________________
>> fusion-dev mailing list
>> fusion-dev at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/fusion-dev
>>     
>
> _______________________________________________
> fusion-dev mailing list
> fusion-dev at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/fusion-dev
>
>   

-- 
   Michael Adair
   Senior Software Architect
   DM Solutions Group Inc.

   Office: (613) 565-5056 x26
   madair at dmsolutions.ca
   http://www.dmsolutions.ca
   http://research.dmsolutions.ca




More information about the fusion-dev mailing list