[mapguide-users] cannot insert feature,give a favor

Carl carlshe at 163.com
Tue Sep 11 00:00:06 EDT 2007


I just faced the same problem. (I traced the process and found the same
problem). Could you please have a post when you get a soultion? 

Can you share the code of set_ResourceWriteAble(resoureId, resourceService); 
I just set the xml of featuresource directly (Set READONLY to FALSE). 

Regards, SHE 



knife wrote:
> 
>     hi,everyone
>        sorry ,my english is not goog. 
>        this' insert feature' (update and delete can do)question has
> bothered me two days.when i compiles the program with vs2005,no erro
> occurs. of course the sdf can be writeable
>      
>       i checked the polygon:isvalid()=true,isclosed()=true,IsEmpty()
> =false
>       but,when i checked the  void ReleaseReader(MgPropertyCollection res,
> MgFeatureCommandCollection commands) ,
>     i found that  "res.GetItem(i).GetPropertyType()=9,that is
> MgStringProperty not MgFeatureProperty(type= 12),    so res.GetItem(i)
> cannot be converted to MgFeatureProperty"
> 
>     how can i do?
>  
>    the following is part of my code(.net)
> ---------------------------------------------------------------------------------------------------------      
> 
>             MgGeometryFactory geoFac = new MgGeometryFactory();
>             MgLinearRingCollection LinearRingCollection = new
> MgLinearRingCollection();
>             MgCoordinateCollection CoordinateCollection = new
> MgCoordinateCollection();
> 
> 
>             String[] coods = this.TextBox1.Text.Split(',');
>             for (int i = 1; i <= Convert.ToInt16(coods[0])*2 ; i+=2)
>             {
>                 double x = Convert.ToDouble(coods[i]);
>                 double y = Convert.ToDouble(coods[i+1]);
>                 MgCoordinate coordinate = geoFac.CreateCoordinateXY(x, y);
>                 CoordinateCollection.Add(coordinate);
>                 //MgPoint point = new
> MgGeometryFactory().CreatePoint(coordinate);
>             }
>            
>             MgLinearRing LinearRing =
> geoFac.CreateLinearRing(CoordinateCollection);
>             CoordinateCollection.Clear();
>             LinearRingCollection.Add(LinearRing);
>             MgPolygon Polygon = geoFac.CreatePolygon(LinearRing, null);
> 
> 
>             //propertyCol.Add(new MgInt32Property("Autogenerated_SDF_ID",
> 11));
>             propertyCol.Add(new MgStringProperty("Name", "it's me"));
>             propertyCol.Add(new MgInt32Property("Key", 11));
>             propertyCol.Add(new MgStringProperty("Url", "me,too"));
> 
>             //Polygon.
>             propertyCol.Add(new MgGeometryProperty("Data",
> geometryReaderWriter.Write(Polygon)));
>           
>             ftrCmdCol.Add(new MgInsertFeatures(lyrClass, propertyCol));
> 
>             set_ResourceWriteAble(resoureId, resourceService); // set sdf
> readonly=false
>            
>             if (ftrCmdCol.Count >= 1)
>             {
>                 ReleaseReader(ftrService.UpdateFeatures(resoureId,
> ftrCmdCol, false), ftrCmdCol);
> 
>                 layerToSave.ForceRefresh();
>                 map.Save(resourceService);
>              }
> 
> //-----------------------
> private void ReleaseReader(MgPropertyCollection res,
> MgFeatureCommandCollection commands) 
>     {
>         
>             if (res == null)
>                 return;
>             for(int i = 0; i < res.GetCount(); i++)
>             {
>                  MgFeatureCommand cmd = commands.GetItem(i);
>                 if(cmd is MgInsertFeatures)
>                 {
>                     if (res.GetItem(i).GetPropertyType() !=
> MgPropertyType.Feature)
>                    //res.GetItem(i).GetPropertyType()=9,that is
> MgStringProperty not MgFeatureProperty(12)
>                    //so res.GetItem(i) cannot be converted to
> MgFeatureProperty
>                     // does that mean the inserting action is failed?
>                         return;
>                     MgFeatureProperty resProp =
> (MgFeatureProperty)res.GetItem(i);
>                     if(resProp != null)
>                     {
>                         MgFeatureReader reader
> =(MgFeatureReader)resProp.GetValue();
>                         if(reader == null)
>                             return;
>                         reader.Close();
>                     }
>                 }
>             }  
>         }
> 

-- 
View this message in context: http://www.nabble.com/cannot-insert-feature%2Cgive-a-favor-tf4227545s16610.html#a12607455
Sent from the MapGuide Users mailing list archive at Nabble.com.



More information about the mapguide-users mailing list