[mapguide-users] Re: Add geometry to feature source

Greg gbneff at cid.utah.gov
Tue Mar 8 18:08:48 EST 2011


Thanks for pointing me in the right direction.

I still have a problem:  When I create an MgFeatureReader to look see if my
code has added anything to the feature source, no rows are returned.  I must
be doing something wrong with the MgInsertFeatures.  My code is below.  If
you have a minute, please take a look.

Thanks,

Greg

//create lines using the coordinates from the file
        for (i = 0; i < lat.Count - 1; i+=2)
        {
            //convert from Lat Lon to X Y
            coordLatLon =
geometryFactory.CreateCoordinateXY(Convert.ToDouble(lon[i]),
Convert.ToDouble(lat[i]));
            coordXY = mapCS.ConvertFromLonLat(coordLatLon);
            coordsXY.Add(coordXY);
            coordLatLon =
geometryFactory.CreateCoordinateXY(Convert.ToDouble(lon[i+1]),
Convert.ToDouble(lat[i+1]));
            coordXY = mapCS.ConvertFromLonLat(coordLatLon);
            coordsXY.Add(coordXY);
            line = geometryFactory.CreateLineString(coordsXY);
            geometries.Add(line);
            coordsXY.Clear();
            //X.Add(coordXY.GetX().ToString());
            //Y.Add(coordXY.GetY().ToString());
            //if (i < 108)
            //{
            //    Response.Write("
" + line.GetLength().ToString() + "");
            //}
        }
        
        MgMultiGeometry mergedFeatures;
        mergedFeatures = geometryFactory.CreateMultiGeometry(geometries);
        MgPropertyCollection properties = new MgPropertyCollection();
        MgAgfReaderWriter agfRW = new MgAgfReaderWriter();
        MgByteReader agfByteStream;
        agfByteStream = agfRW.Write(mergedFeatures);
        MgGeometryProperty geometryProperty;
        geometryProperty = new MgGeometryProperty("curveProp",
agfByteStream);
        properties.Add(geometryProperty);
        MgInsertFeatures insertCommand;
        insertCommand = new MgInsertFeatures("curveInsert", properties);
        MgFeatureCommandCollection commands = new
MgFeatureCommandCollection();
        commands.Add(insertCommand);
        
        //TODO: ***** check if TruckRoute feature class already exists *****
        MgClassDefinitionCollection featClassColl = new
MgClassDefinitionCollection();

        //create feature source
        //create feature class definition
        String geomPropName = "curveGeom";
        MgClassDefinition featClass = new MgClassDefinition();
        featClass.SetName("truck_route");
        featClass.SetDescription("Truck Route Display");
        featClass.SetDefaultGeometryPropertyName(geomPropName);
        MgPropertyDefinitionCollection classProperties =
featClass.GetProperties();

        //create identity property
        MgDataPropertyDefinition idProp = new
MgDataPropertyDefinition("featId");
        idProp.SetDataType(MgPropertyType.Int32);
        idProp.SetAutoGeneration(true);
        idProp.SetReadOnly(true);
        classProperties.Add(idProp);

        //create geometry property
        MgGeometricPropertyDefinition curveProp = new
MgGeometricPropertyDefinition(geomPropName);
        curveProp.SetGeometryTypes(MgFeatureGeometricType.Curve);
        curveProp.SetHasElevation(false);
        curveProp.SetHasMeasure(false);
        curveProp.SetSpatialContextAssociation("defaultSrs");
        classProperties.Add(curveProp);

        MgPropertyDefinitionCollection idProps =
featClass.GetIdentityProperties();
        idProps.Add(idProp);
                
        //create a feature schema
        MgFeatureSchema curveSchema = new MgFeatureSchema();
        curveSchema.SetName("Schema1");
        curveSchema.SetDescription("temp schema for truck_route");
        curveSchema.GetClasses().Add(featClass);

        //creat sdf parameters
        MgCreateSdfParams sdfParams = new MgCreateSdfParams();
        sdfParams.SetSpatialContextName("defaultSrs");
        sdfParams.SetCoordinateSystemWkt(srsMapDef);
        sdfParams.SetFeatureSchema(curveSchema);

        //add feature source to feature service
        MgResourceIdentifier TruckRouteFeatureResId = new
MgResourceIdentifier("Session:" + sessionId +
"//truck_route.FeatureSource");
        featureService.CreateFeatureSource(TruckRouteFeatureResId,
sdfParams);
        featureService.UpdateFeatures(TruckRouteFeatureResId, commands,
false);
        
        //check features created
        MgFeatureQueryOptions nameQuery = new MgFeatureQueryOptions();
        nameQuery.SetFilter("featId = 0");
        MgFeatureReader featureReader =
featureService.SelectFeatures(TruckRouteFeatureResId, "truck_route",
nameQuery);
        Response.Write("
Features:");
        Response.Write("
Geometries Length: 	" + geometries[100].GetLength().ToString() + "");
        Response.Write("
Properties: 	" + properties.GetItem(0).GetName().ToString() + "");
        Response.Write("
Commands: 	" + commands.GetCount().ToString() + "");
        Response.Write("
Feature Reader: 	" + featureReader.GetPropertyName(0).ToString() + "");
        
        while (featureReader.ReadNext())
        {
            Response.Write("
featId = " + featureReader.GetInt32("featId").ToString() + "");
        }

--
View this message in context: http://osgeo-org.1803224.n2.nabble.com/Add-geometry-to-feature-source-tp6082938p6149226.html
Sent from the MapGuide Users mailing list archive at Nabble.com.


More information about the mapguide-users mailing list