[mapguide-users] spatial search problem

ram282 ram282 at gmail.com
Mon Jun 14 08:26:22 EDT 2010


Hi,
 I am trying to perform a spatial query.

 I click a point on the map and trying to find the features from a layer
called 'LandMarks'. 
I have the google map as the background layer. All the layers(from SQL
server spatial) have the 4326 as SRID.
 I changed the CoOrdinate system in the map definition to support google
maps as background. 
I am forming a polygon by creating a buffer around the point using 

MgGeometry mgGeometry = mgPoint.Buffer(50, measure);

 The measure values is obtained from the function getMeasureValue()
specified below 

But how could we specify the units? In the above line does the 50 means 50
metres ? 

Can any one describe clearly about how to provide the correct measure value
while creating a buffer.

 I have used the MgFeatureSpatialOperations.Intersects and also tried with
MgFeatureSpatialOperations.Inside

But in the selectionXML there are no records obtained. 

Instead of performing the spatial search, if I perform the non-spatial
search like 

options.SetFilter("CityName='XYZ'");

 I am getting the records in selectionXML. 

Below are the functions I have used..

 private void searchObjects(MgCoordinate coOrdinate) 
{
 MgGeometryFactory GF = new MgGeometryFactory(); 
MgPoint mgPoint = GF.CreatePoint(coOrdinate); 
MgCoordinateSystemMeasure measure = getMeasureValue();
 MgGeometry mgGeometry = mgPoint.Buffer(50, measure); 
MgFeatureQueryOptions options = new MgFeatureQueryOptions(); 
options.SetSpatialFilter("LandMarkPoint", mgGeometry,
MgFeatureSpatialOperations.Intersects); 
MgLayer landmarkLayer = (MgLayer)map.GetLayers().GetItem("LandMarks"); 
MgFeatureReader reader = crossingsLayer.SelectFeatures(options);

 .... create siteconnection obj here ... 
MgResourceService resService =
(MgResourceService)siteConnection.CreateService(MgServiceType.ResourceService); 

MgSelection selection = new MgSelection(map);
 selection.AddFeatures(landmarkLayer , reader, 0);
 string selectionXML = selection.ToXml(); 
selection.Save(resService, mapName);
 map.Save();
 reader.Close(); 
}

 private MgCoordinateSystemMeasure getMeasureValue() 
{
 MgCoordinateSystemFactory coordSysFac = new MgCoordinateSystemFactory();
 MgCoordinateSystem cs = coordSysFac.Create(map.GetMapSRS()); 

//map.GetMapSRS() returns PROJCS["Popular Visualisation CRS /
Mercator",GEOGCS["Popular Visualisation
CRS",DATUM["Popular_Visualisation_Datum",SPHEROID["Popular Visualisation
Sphere",6378137,0,AUTHORITY["EPSG","7059"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["EPSG","6055"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4055"]],UNIT["metre",1,AUTHORITY["EPSG","9001"]],PROJECTION["Mercator_1SP"],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],AUTHORITY["EPSG","3785"],AXIS["X",EAST],AXIS["Y",NORTH]] 

return cs.GetMeasure(); } 
-- 
View this message in context: http://osgeo-org.1803224.n2.nabble.com/spatial-search-problem-tp5177202p5177202.html
Sent from the MapGuide Users mailing list archive at Nabble.com.


More information about the mapguide-users mailing list