[mapguide-users] RE: Wish List

Kori Maleski Kori.Maleski at websoftdev.com
Tue Apr 10 18:41:02 EDT 2007


Here is how to get area with a coordinate transform:   

 

Say - if my map is projected, but my data is in Latlong.

 

 

 

            If l_ofeatures.ReadNext() Then

 

                Do

 

                    Dim l_oMgByteReader As MgByteReader =
l_ofeatures.GetGeometry("Geometry")

                    Dim l_oGeometryReaderWriter As New MgAgfReaderWriter

                    Dim l_oMgGeometry As MgGeometry =
l_oGeometryReaderWriter.Read(l_oMgByteReader)

                    Dim l_oMgPolygon As MgPolygon = l_oMgGeometry

 

 

                    'Get Current map projection

                    Dim l_sWKTproj As String = p_oMap.GetMapSRS()

                    'Create Coordinate System object to Reproject 

                    Dim l_oMGCoordinateSystemDestination As
MgCoordinateSystem = l_oMGCoordinateSystemFactory.Create(l_sWKTproj)

 

  Dim l_sWKTproj As String =
"GEOGCS[LL84,DATUM[WGS84,SPHEROID[WGS84,6378137.000,298.25722293]],PRIMEM[Gr
eenwich,0],UNIT[Degree,0.01745329251994]]"

                    Dim l_oMGCoordinateSystemSource As MgCoordinateSystem =
l_oMGCoordinateSystemFactory.Create(l_sWKTproj)

 

                    Dim l_oMGTransform As MgTransform

                    l_oMGTransform = New
MgCoordinateSystemTransform(l_oMGCoordinateSystemSource,
l_oMGCoordinateSystemDestination)

                    l_oMgPolygon.Transform(l_oMGTransform)

                    Dim l_dArea As Double = l_oMgPolygon.Area

 

                Loop While l_ofeatures.ReadNext()

 

            End If

 

            l_ofeatures.Close()

 

 

 

a'la PHP flavour:

 

 

function GetTransform()

      {

            $coordSysFactory = new MgCoordinateSystemFactory();

            $resourceService =
$this->site->CreateService(MgServiceType::ResourceService);

            

            $map = new MgMap();

            $map->Open($resourceService, $this->args['MAPNAME']);

            

$source =
$coordSysFactory->Create("GEOGCS[LL84,DATUM[WGS84,SPHEROID[WGS84,6378137.000
,298.25722293]],PRIMEM[Greenwich,0],UNIT[Degree,0.01745329251994]]");

            $target = $coordSysFactory->Create($map->GetMapSRS());      

            

      

            return new MgCoordinateSystemTransform($source, $target);

      }

 

 

 

 

________________________________

 

 

 

 

Kori Maleski

Senior Application Developer

WEBSOFT DEVELOPERS, INC.

P: (530) 759-8754 ext 114

F: (530) 759-0923

kori.maleski at websoftdev.com

________________________________

 

 

-----Original Message-----
From: mapguide-users-bounces at lists.osgeo.org
[mailto:mapguide-users-bounces at lists.osgeo.org] On Behalf Of Jason Birch
Sent: Tuesday, April 10, 2007 2:24 PM
To: MapGuide Users Mail List
Subject: RE: [mapguide-users] RE: Wish List

 

Hi Jim,

 

That's giving you the area in degrees, which is a nonsense number.  

 

You need to transform your LL geometry into a projected system like UTM

(or maybe BC Albers for your application?).

 

Jason

 

-----Original Message-----

From: Jim O'Leary

Subject: [mapguide-users] RE: Wish List

 

However, the number that I get is:

 

0.00022107919307102

 

which does not seem meaningful.

_______________________________________________

mapguide-users mailing list

mapguide-users at lists.osgeo.org

http://lists.osgeo.org/mailman/listinfo/mapguide-users

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/mapguide-users/attachments/20070410/3a7fd8d4/attachment-0001.html


More information about the mapguide-users mailing list