[fdo-users] Set "Default" spatial context (MySQL)
Hidekazu Shimaji
hshimaji at ybb.ne.jp
Sat Feb 24 03:52:01 EST 2007
Hello,
I want to know how to set a spatial context named "Default" to a MySQL data store.
When I set a "Default" spatial context to a data store, which had been just created by using
a CreateDataStore command, a folloing error occured:
OSGeo.FDO.Common.Exception: Cannot create Spatial Context 'Default', it already exists
I executed a GetSpatialContexts command, and I recognised that the "Default" spatial context
exactly existed, but its CoordinateSystemWkt property had nothing.
I'd like to change the CoordinateSystemWkt value because all feature classes use the
"Default" spatial context. How can I do it? Please help me.
using
FDO3.2 (MapGuide Open Source 1.1.0)
MySQL 5.0.27
WindowsXP SP2
Visual Web developer 2005 SP1 (C#)
my code is folloing:
---code start
//WKT
const string PROJECTED_WKT =
"PROJCS[\"MY_CS\",\n" +
" GEOGCS [\"NAD 83 (Continental US)\",\n" +
" DATUM [\"NAD 83 (Continental US)\",\n" +
" SPHEROID [\"GRS 80\",6378137,298.257222101]],\n" +
" PRIMEM [\"Greenwich\", 0.000000],\n" +
" UNIT[\"Decimal Degree\",0.01745329251994330]],\n" +
" PROJECTION [\"Transverse Mercator\"],\n" +
" PARAMETER [\"Scale_Factor\",0.999600],\n" +
" PARAMETER [\"Central_Meridian\",\\-75.000000],\n" +
" PARAMETER [\"False_Easting\",500000.000000],\n" +
" PARAMETER [\"False_Northing\",{1}],\n" +
" UNIT [\"Meter\",1.000000000000]]";
//DataStore name (just created by using a CreateDataStore command)
const string DATA_STORE = "NewDataStore";
//craete a CreateConnection command
IConnection connection = FeatureAccessManager.
GetConnectionManager().CreateConnection("OSGeo.MySQL.3.2");
//set properties
IConnectionPropertyDictionary connectionDictionary =
connection.ConnectionInfo.ConnectionProperties;
connectionDictionary.SetProperty("Service", "localhost");
connectionDictionary.SetProperty("Username", "root");
connectionDictionary.SetProperty("Password", "password");
connectionDictionary.SetProperty("DataStore", DATA_STORE);
//open connection
if (connection.Open() ==
OSGeo.FDO.Connections.ConnectionState.ConnectionState_Open)
{
//craete a CreateSpatialContext command
ICreateSpatialContext createSpatialContext =
(ICreateSpatialContext)connection.CreateCommand(
OSGeo.FDO.Commands.CommandType.
CommandType_CreateSpatialContext);
//name
createSpatialContext.Name ="Default";
//description
createSpatialContext.Description =
"Projected Coordinate System Test";
//wkt text
createSpatialContext.CoordinateSystem = "WKT";
createSpatialContext.CoordinateSystemWkt = PROJECTED_WKT;
//tolerance
createSpatialContext.XYTolerance = 0.001;
//range of drawing
FgfGeometryFactory factory = new FgfGeometryFactory();
IEnvelope envelop =
factory.CreateEnvelopeXY(0, 0, 1000, 1000);
IPolygon polygon = (IPolygon)factory.CreateGeometry(envelop);
createSpatialContext.Extent = factory.GetFgf(polygon);
//execute the command
createSpatialContext.Execute();
Response.Write("default spatial context has been set." + "<br>");
//close connection
connection.Close();
}
---code end
Thank you in advance.
Hidekazu
More information about the fdo-users
mailing list