Set spatial context to MySQL DataStore

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Set spatial context to MySQL DataStore

popovictamara
This post was updated on .
Hello,
i have created MySQL Datastore, and I am trying to use IConnection object to
set spatial context and assign coordinate system to datastore, but i can't
get it to work. Not getting any exceptions, the code runs, but coordinate
system is not assigned. It is listed but not activated, because the default coord system is created too. I write in C# and I am following FDO Developers
Guide example.

Example No.1:
 // Create spatial context, including coordinate system
 
  AcMapMap currentMap = AcMapMap.GetCurrentMap();
  string mapSRS = currentMap.GetMapSRS();
 
  ICreateSpatialContext createSCCmd =
  conn.CreateCommand(CommandType.CommandType_CreateSpatialContext)
    as ICreateSpatialContext;
  createSCCmd.CoordinateSystemWkt = mapSRS;
  createSCCmd.Name = "";
  createSCCmd.CoordinateSystem = mapSRS;
  createSCCmd.Extent = new byte[] { 0, 0, 0, 0 };
  createSCCmd.Description = "Description";
  createSCCmd.XYTolerance = 0.0;
  createSCCmd.ZTolerance = 0.0;
  createSCCmd.Execute();


Example No.2:
DirectPositionImpl lowerLeft = new DirectPositionImpl();
lowerLeft.X = -180.0;
lowerLeft.Y = -90.0;
DirectPositionImpl upperRight = new DirectPositionImpl();
upperRight.X = 180.0;
upperRight.Y = 90.0;
FgfGeometryFactory geomFactory = new FgfGeometryFactory();
IEnvelope envelope = geomFactory.CreateEnvelope(lowerLeft, upperRight);
IGeometry geom = geomFactory.CreateGeometry(envelope);
byte[] extent = geomFactory.GetFgf(geom);
spatialContextWriter.CoordinateSystem = "WGS 84";
spatialContextWriter.CoordinateSystemWkt = "GEOGCS [ \"Longitude / Latitude
(WGS 84)\", DATUM [\"WGS 84\", SPHEROID [\"WGS 84\", 6378137,
298.257223563]], PRIMEM [ \"Greenwich\", 0.000000 ], UNIT \"Decimal
Degree\", 0.01745329251994330]]";
spatialContextWriter.Description = "This Coordinate System is used for
GPS.";
spatialContextWriter.ExtentType =
SpatialContextExtentType.SpatialContextExtentType_Static;
spatialContextWriter.Extent = extent;
spatialContextWriter.Name = "WGS84";
spatialContextWriter.XYTolerance = 0.001;




And this is my code:

FgfGeometryFactory geomFactory = new FgfGeometryFactory();

IniFile iniFile = new IniFile(Paths.Info);
string wkt = iniFile.Read("wkt", "WKT");
double xmin = double.Parse(iniFile.Read("xmin", "EXTENTS"));
double xmax = double.Parse(iniFile.Read("xmax", "EXTENTS"));
double ymin = double.Parse(iniFile.Read("ymin", "EXTENTS"));
double ymax = double.Parse(iniFile.Read("ymax", "EXTENTS"));

ICreateSpatialContext createSpatialContext =
conn.CreateCommand(CommandType.CommandType_CreateSpatialContext) as
ICreateSpatialContext;
createSpatialContext.Name = iniFile.Read("name", "SPATIALCONTEXT");
createSpatialContext.CoordinateSystem = wkt;
createSpatialContext.CoordinateSystemWkt = wkt;
createSpatialContext.Description = iniFile.Read("name", "SPATIALCONTEXT");
           
DirectPositionImpl lowerLeft = new DirectPositionImpl(xmax, ymin);
DirectPositionImpl upperRight = new DirectPositionImpl(xmin, ymax);
IEnvelope envelope = geomFactory.CreateEnvelope(lowerLeft, upperRight);
IGeometry geom = geomFactory.CreateGeometry(envelope);
byte[] extent = geomFactory.GetFgf(geom);
// a static extent is defined once and never changed
// a dynamic extent grows to accommodate the geometries added to the data
store
createSpatialContext.ExtentType =
SpatialContextExtentType.SpatialContextExtentType_Static;
createSpatialContext.Extent = extent;

createSpatialContext.XYTolerance = 0.00;
createSpatialContext.ZTolerance = 0.00;
createSpatialContext.Execute();


this is wkt I use:
PROJCS["MGI 1901 / Balkans zone 6",
    GEOGCS["MGI 1901",
        DATUM["MGI_1901",
            SPHEROID["Bessel 1841",6377397.155,299.1528128,
                AUTHORITY["EPSG","7004"]],
            TOWGS84[682,-203,480,0,0,0,0],
            AUTHORITY["EPSG","1031"]],
        PRIMEM["Greenwich",0,
            AUTHORITY["EPSG","8901"]],
        UNIT["degree",0.0174532925199433,
            AUTHORITY["EPSG","9122"]],
        AUTHORITY["EPSG","3906"]],
    PROJECTION["Transverse_Mercator"],
    PARAMETER["latitude_of_origin",0],
    PARAMETER["central_meridian",18],
    PARAMETER["scale_factor",0.9999],
    PARAMETER["false_easting",6500000],
    PARAMETER["false_northing",0],
    UNIT["metre",1,
        AUTHORITY["EPSG","9001"]],
    AUTHORITY["EPSG","3908"]]

Here is the result when i connect to my database through AutoCAD Map 3D. My coord system is there, but so is the default one. Why?


--
Sent from: http://osgeo-org.1560.x6.nabble.com/FDO-Users-f3898664.html
_______________________________________________
fdo-users mailing list
fdo-users@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/fdo-users