[mapguide-users] switching to Maestro 5 API
mika at digikartta.net
mika at digikartta.net
Tue Nov 26 12:54:41 PST 2013
IMutableFeature & IMutableRecord?
- mika -
mika at digikartta.net kirjoitti 2013-11-26 16:44:
> Thanks Jackie,
> that helped.
>
> Another question relating to the same field.
>
> Constructing features and inserting them into feature source. I'll
> try to cut irrelevant part out of this. I can't figure out how to do
> this. I guess the actual insert would go like this.
>
> IInsertFeatures ins =
> (IInsertFeatures)conn.CreateCommand((int)CommandType.InsertFeature);
> ins.FeatureSourceId = "xxx";
> ins.ClassName = "yyy";
> ins.Execute();
>
> But how would I "bind" and construct the "propertycollection" for
> that? Any examples?
>
> This is a snippet from my old method.
> - mika -
>
>
> public int insertRoutes(MgResourceIdentifier mri, List<Feature>
> routes)
> {
> int inserted = 0;
> MgFeatureCommandCollection commands = new
> MgFeatureCommandCollection();
> MgFeatureService mfs = this.featSrvc;
> MgPropertyCollection insertedFeatures;
> MgAgfReaderWriter agfRW = new MgAgfReaderWriter();
> foreach (Feature route in routes)
> {
> MgPropertyCollection routeCol = new
> MgPropertyCollection();
> MgGeometryFactory geometryFactory = new
> MgGeometryFactory();
> if (route.geometry.type == "MultiPoint")
> {
> MgPointCollection pointCol = new MgPointCollection();
> MgPoint uusipiste =
>
> geometryFactory.CreatePoint(geometryFactory.CreateCoordinateXY((double)route.geometry.coordinates[0][0],
> (double)route.geometry.coordinates[0][1]));
> pointCol.Add(uusipiste);
> MgMultiPoint uudetpisteet =
> geometryFactory.CreateMultiPoint(pointCol);
> //MgPoint uusipiste =
>
> geometryFactory.CreatePoint(geometryFactory.CreateCoordinateXY((double)route.geometry.coordinates[0][0],
> (double)route.geometry.coordinates[0][1]));
> MgByteReader agf = agfRW.Write(uudetpisteet);
> MgGeometryProperty geom = new
> MgGeometryProperty("Geom", agf);
> MgInt32Property reitinid = new
> MgInt32Property("kohteetid", route.properties.routeid);
> MgInt32Property reitinosanid = new
> MgInt32Property("routepartid", route.properties.routepartid);
> MgStringProperty type = new MgStringProperty("type",
> route.properties.type);
> MgInt32Property angle = new MgInt32Property("angle",
> (int)Math.Round(route.properties.angle, 0));
> MgStringProperty symbol = new
> MgStringProperty("symbol", route.properties.symbol);
> routeCol.Add(geom);
> routeCol.Add(reitinid);
> routeCol.Add(reitinosanid);
> routeCol.Add(type);
> routeCol.Add(angle);
> routeCol.Add(symbol);
> string fclassName =
> "schema_routelines:dim_routepoints";
> MgInsertFeatures insertFeatures = new
> MgInsertFeatures(fclassName, routeCol);
> commands.Add(insertFeatures);
> }
> else if (route.geometry.type == "LineString")
> {
>
> }
> }
> if (commands.Count > 0)
> {
> insertedFeatures = mfs.UpdateFeatures(mri, commands,
> false);
> inserted = insertedFeatures.Count;
> }
> return inserted;
> }
>
>
>
> Jackie Ng kirjoitti 2013-11-25 06:52:
>> The Maestro SDK contains everything you need to build an application
>> on top
>> of the Maestro API:
>>
>> - The Maestro API assemblies
>> - The full API reference + basic developer's guide in a CHM
>> document
>> - Some desktop/web sample applications using the Maestro API
>> - A ProviderTemplate utility to build your own LocalNative
>> connection
>> provider that wraps your specific version of the official .net
>> MapGuide API.
>>
>> You can download the Maestro SDK from the same download page as
>> Maestro
>> itself: http://trac.osgeo.org/mapguide/wiki/maestro/Downloads
>>
>> To answer your question specifically:
>>
>> Use the CreateCommand() of the IServerConnection to create a
>> IDeleteFeatures
>> command:
>>
>> public void ClearDataSource(IServerConnection conn, String
>> dataSourceId, String featureName)
>> {
>> IDeleteFeatures deleteCmd =
>> (IDeleteFeatures)conn.CreateCommand(CommandType.DeleteFeatures);
>> deleteCmd.FeatureSourceId = dataSourceId;
>> deleteCmd.ClassName = featureName;
>> deleteCmd.Filter = "ID >= 0";
>> int nDeleted = deleteCmd.Execute();
>> }
>>
>> Note that support for IDeleteFeatures varies on the implementation
>> of
>> IServerConnection. For example, the HTTP one that wraps the mapagent
>> won't
>> support CRUD operations, but the ones that wrap the official
>> MapGuide API
>> and mg-desktop do support CRUD operations. You can programmatically
>> check
>> support for such commands via the capabilities of the
>> IServerConnection
>>
>> - Jackie
>>
>>
>>
>> --
>> View this message in context:
>>
>> http://osgeo-org.1560.x6.nabble.com/switching-to-Maestro-5-API-tp5090710p5090931.html
>> Sent from the MapGuide Users mailing list archive at Nabble.com.
>> _______________________________________________
>> mapguide-users mailing list
>> mapguide-users at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/mapguide-users
> _______________________________________________
> mapguide-users mailing list
> mapguide-users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapguide-users
More information about the mapguide-users
mailing list