[fdo-users] inserting data into a SDF file

Jackie Ng jumpinjackie at gmail.com
Thu Feb 19 23:02:39 EST 2009


A Spatial Context is nothing more than a piece of metadata that indicates the
coordinate system of the geometry objects in your spatial data source. 

Could you elaborate more on what difficulty you are experiencing?

- Jackie


vinay wrote:
> 
> Hi Jackie,
> 
> Thanks for the tip. It worked. Also thanks for making fdotoolkit app open
> source. It is very helpful for me to learn and understand different things
> related to FDO seeing your source code.
> 
> I am having very hard time to understand spatialcontext concepts. When
> creating the datastore for the sdf file i am want to create a default
> spatialcontext but i am having difficulty in creating a default wkt
> coordinate system. Do you have any suggestions.
> 
> Thanks in advance.
> 
> regards
> Vinay
> 
> 
> Jackie Ng wrote:
>> 
>> If you look at the property value collection of the insert command in the
>> debugger, you will see the count will increase in increments of 4.
>> 
>> As a result, the insert command will use the same first 4 property values
>> for every insert operation.
>> 
>> To fix this, clear the property value collection of the insert command
>> before setting the property values.
>> 
>> Hope that helps.
>> 
>> - Jackie
>> 
>> 
>> vinay wrote:
>>> 
>>> Hi All,
>>> 
>>> I am using the FDO dlls from the MAP ObjectArx SDK 2009  in Visual
>>> studio 2008. I am writing a small app to understand FDO API. I am able
>>> to create a sdf file, describe schema for the sdf file, create feature
>>> class, etc. I created four datapropertydefinitions in which one is an
>>> identityProperty. I am inserting values into my properties in a
>>> for-loop. When I open this sdf file in map 2009, all columns have the
>>> same values except the auto generated property column as shown below.
>>> 
>>> Please take a look in case I am missing something simple here.
>>> 
>>>  http://n2.nabble.com/file/n2349739/data.png 
>>> 
>>> Source code snippets for the sample app is below
>>> 
>>> OSGeo.FDO.Schema.FeatureSchema Schema = new
>>> OSGeo.FDO.Schema.FeatureSchema("SchemaOne", "Sample Schema");                                                
>>>                         OSGeo.FDO.Schema.FeatureClass ClassOne = new
>>> OSGeo.FDO.Schema.FeatureClass("Class one", "Class one for Schema One");
>>> 
>>>                         
>>>                         OSGeo.FDO.Schema.DataPropertyDefinition
>>> DataProp1 = new OSGeo.FDO.Schema.DataPropertyDefinition("Prop1",
>>> "Property one");
>>>                         OSGeo.FDO.Schema.DataPropertyDefinition
>>> DataProp2 = new OSGeo.FDO.Schema.DataPropertyDefinition("Prop2",
>>> "Property two");
>>>                         OSGeo.FDO.Schema.DataPropertyDefinition
>>> DataProp3 = new OSGeo.FDO.Schema.DataPropertyDefinition("Prop3",
>>> "Property three");
>>>                         OSGeo.FDO.Schema.DataPropertyDefinition
>>> DataProp4 = new OSGeo.FDO.Schema.DataPropertyDefinition("Prop4",
>>> "Property four");
>>>                         DataProp1.DataType =
>>> OSGeo.FDO.Schema.DataType.DataType_Int32;
>>>                         DataProp1.IsAutoGenerated = true;
>>>                         DataProp1.Nullable = false;
>>>               
>>>                         DataProp2.DataType =
>>> OSGeo.FDO.Schema.DataType.DataType_Decimal;
>>>                         DataProp2.IsAutoGenerated = false;
>>>                         DataProp2.Nullable = false;
>>>                         DataProp2.ReadOnly = false;
>>> 
>>>                         DataProp3.DataType =
>>> OSGeo.FDO.Schema.DataType.DataType_Decimal;
>>>                         DataProp3.IsAutoGenerated = false;
>>>                         DataProp3.Nullable = false;
>>>                         DataProp3.ReadOnly = false;
>>> 
>>>                         DataProp4.DataType =
>>> OSGeo.FDO.Schema.DataType.DataType_String;
>>>                         DataProp4.IsAutoGenerated = false;
>>>                         DataProp4.Nullable = false;
>>>                         DataProp4.ReadOnly = false;
>>>                         DataProp4.Length = 20;
>>>                        
>>>                         //Class one data props                        
>>>                         ClassOne.Properties.Add(DataProp1);
>>>                         ClassOne.IdentityProperties.Add(DataProp1);
>>>                         ClassOne.Properties.Add(DataProp2);
>>>                         ClassOne.Properties.Add(DataProp3);
>>>                         ClassOne.Properties.Add(DataProp4);                                                
>>> 
>>> 
>>> 
>>> OSGeo.FDO.Connections.Capabilities.IConnectionCapabilities connCap =
>>> conn.ConnectionCapabilities;
>>>                         ITransaction fdoTrans = null;
>>>                         if (connCap.SupportsTransactions())
>>>                             fdoTrans = conn.BeginTransaction();
>>> 
>>>                         using (OSGeo.FDO.Commands.Feature.IInsert insert
>>> = conn.CreateCommand(OSGeo.FDO.Commands.CommandType.CommandType_Insert)
>>> as OSGeo.FDO.Commands.Feature.IInsert)
>>>                         {
>>> 
>>>                             for (int nIndex = 1; nIndex < 5; nIndex++)
>>>                             {
>>> 
>>>                                 OSGeo.FDO.Commands.PropertyValue
>>> PropValue1 = null;
>>>                                 PropValue1 = new
>>> OSGeo.FDO.Commands.PropertyValue();
>>>                                 PropValue1.SetName(DataProp1.Name);
>>>                                 PropValue1.Value = new
>>> OSGeo.FDO.Expression.Int32Value(nIndex);
>>>                                 insert.PropertyValues.Add(PropValue1);
>>> 
>>>                                 PropValue1 = null;
>>>                                 PropValue1 = new
>>> OSGeo.FDO.Commands.PropertyValue();
>>>                                 PropValue1.SetName(DataProp2.Name);
>>>                                 PropValue1.Value = new
>>> OSGeo.FDO.Expression.DecimalValue(1000.50 + nIndex);
>>>                                 insert.PropertyValues.Add(PropValue1);
>>> 
>>>                                 PropValue1 = null;
>>>                                 PropValue1 = new
>>> OSGeo.FDO.Commands.PropertyValue();
>>>                                 PropValue1.SetName(DataProp3.Name);
>>>                                 PropValue1.Value = new
>>> OSGeo.FDO.Expression.DecimalValue(2000.50 + nIndex);
>>>                                 insert.PropertyValues.Add(PropValue1);
>>> 
>>>                                 PropValue1 = null;
>>>                                 PropValue1 = new
>>> OSGeo.FDO.Commands.PropertyValue();
>>>                                 PropValue1.SetName(DataProp4.Name);
>>>                                 PropValue1.Value = new
>>> OSGeo.FDO.Expression.StringValue("Note"+nIndex.ToString());
>>>                                 insert.PropertyValues.Add(PropValue1);                                
>>> 
>>>                                 try
>>>                                 {
>>>                                     using
>>> (OSGeo.FDO.Commands.Feature.IFeatureReader reader = insert.Execute())
>>>                                     {
>>>                                         while (reader.ReadNext()) { }                                        
>>>                                     }
>>>                                 }
>>>                                 catch (Exception ex)
>>>                                 {
>>>                                     //throw new
>>> FeatureServiceException("Error inserting new feature", ex);
>>>                                     MessageBox.Show(ex.Message);
>>>                                 }
>>>                             }
>>>                         }
>>>                         if (connCap.SupportsTransactions())
>>>                             fdoTrans.Commit();
>>>                         conn.Close();                        
>>> 
>>> 
>>> 
>> 
>> 
> 
> 

-- 
View this message in context: http://n2.nabble.com/inserting-data-into-a-SDF-file-tp2349739p2357056.html
Sent from the FDO Users mailing list archive at Nabble.com.



More information about the fdo-users mailing list