[mapguide-internals] question about inserting features

Robert Bray rbray at robertbray.net
Thu Jul 19 17:21:56 EDT 2007


This is all somewhat odd and probably a bug that should be logged. 
UpdateFeatures should return the identity property(ies) of the newly 
created feature.

Bob

Paul Spencer wrote:
> Hi Traian,
> 
> its an SDF file.  I did end up getting contains to work using a negative 
> buffer, but I am currently working on a different solution that is 
> (hopefully) less error prone than doing a spatial selection to get back 
> the feature that I inserted.  This is all just a work-around for not 
> being able to access the newly inserted features through the result object.
> 
> Cheers
> 
> Paul
> 
> On 18-Jul-07, at 9:52 AM, Traian Stanev wrote:
> 
>> At least some of these should have worked. I am late to the thread, so I
>> may have missed this, but what data source are you inserting the feature
>> into (SDF, SHP, some DB?)
>>
>> Traian
>>
>> -----Original Message-----
>> From: mapguide-internals-bounces at lists.osgeo.org
>> [mailto:mapguide-internals-bounces at lists.osgeo.org] On Behalf Of Paul
>> Spencer (External)
>> Sent: Tuesday, July 17, 2007 10:27 PM
>> To: Paul Spencer (External)
>> Cc: MapGuide Internals Mail List
>> Subject: Re: [mapguide-internals] question about inserting features
>>
>> Another problem (potential problem) has cropped up.  I thought that I
>> could provide a mechanism to do this by performing a select after
>> insert and using a spatial filter that had the geom that was inserted
>> and an operation of Equals.  Doesn't work.  I also tried CoveredBy
>> using a buffered version of the geometry.  Doesn't work either.
>>
>> Should any of these strategies work?
>>
>> Paul
>>
>> On 17-Jul-07, at 8:19 AM, Paul Spencer wrote:
>>
>>> Hi Trevor ... nice thought ...  GetPropertyType() returns 12,
>>> MgPropertyType::Feature ... This makes sense because the identity
>>> property of a feature source may be composed of several attributes
>>> so there wouldn't necessarily be a single value.
>>>
>>> I hadn't checked the property type before, but I did print_r($res-
>>>> GetItem(0)->GetValue()) and it told me it was an
>>> mg_feature_reader_obj (or something like that) and ReadNext() also
>>> did not fail - it is only the calls to get at the properties that
>>> fail with a null reference.
>>>
>>> Cheers
>>>
>>> Paul
>>>
>>> On 16-Jul-07, at 5:54 PM, Trevor Wekel wrote:
>>>
>>>> Hi Paul,
>>>>
>>>> I wonder if UpdateFeatures returns the identity property for the
>>>> inserted property and not an MgFeatureReader.  Try calling
>>>> res->GetItem(0)->GetPropertyType() and see what the type is.
>>>>
>>>> Thanks,
>>>> Trevor
>>>>
>>>> -----Original Message-----
>>>> From: mapguide-internals-bounces at lists.osgeo.org
>>>> [mailto:mapguide-internals-bounces at lists.osgeo.org] On Behalf Of Paul
>>>> Spencer (External)
>>>> Sent: Monday, July 16, 2007 3:27 PM
>>>> To: MapGuide Internals Mail List
>>>> Subject: [mapguide-internals] question about inserting features
>>>>
>>>> Hi all,
>>>>
>>>> when inserting new features into a feature source, the (php) code
>>>> looks like this:
>>>>
>>>> $className = $layer->GetFeatureClassName();
>>>> $cmd = new MgInsertFeatures($className, $drawProps);
>>>> $commands = new MgFeatureCommandCollection();
>>>> $commands->Add($cmd);
>>>> $res = $featureService->UpdateFeatures($dataSourceId, $commands,
>>>> false);
>>>>
>>>> this works great.  What I would like to do is access the newly
>>>> created feature.  According to the documentation, the result of
>>>> UpdateFeatures is an MgPropertyCollection which should have one
>>>> property, of type MgFeatureProperty whose value is an MgFeatureReader
>>>> that contains the set of properties inserted into the datastore by
>>>> the insert command.
>>>>
>>>> When I try to get access to the properties, I receive an error
>>>>
>>>>   - MgFeatureReader.GetPropertyCount line 29 file .\Services
>>>> \FeatureReader.cpp
>>>>
>>>> This happens with the following code:
>>>>
>>>> $featureReader = $res->GetItem(0)->GetValue();
>>>> while ($featureReader->ReadNext()) {
>>>>      $nProps = $featureReader->GetPropertyCount();
>>>>      // would do something more here if it didn't crap out
>>>> }
>>>>
>>>> Is this the right way to access a newly inserted feature?  If not,
>>>> then how should I do it?  If yes, is the code wrong or is there a bug
>>>> somewhere?
>>>>
>>>> Cheers
>>>>
>>>> Paul
>>>> +-----------------------------------------------------------------+
>>>> |Paul Spencer                          pspencer at dmsolutions.ca    |
>>>> +-----------------------------------------------------------------+
>>>> |Chief Technology Officer                                         |
>>>> |DM Solutions Group Inc                http://www.dmsolutions.ca/ |
>>>> +-----------------------------------------------------------------+
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> mapguide-internals mailing list
>>>> mapguide-internals at lists.osgeo.org
>>>> http://lists.osgeo.org/mailman/listinfo/mapguide-internals
>>>>
>>>> _______________________________________________
>>>> mapguide-internals mailing list
>>>> mapguide-internals at lists.osgeo.org
>>>> http://lists.osgeo.org/mailman/listinfo/mapguide-internals
>>>
>>> +-----------------------------------------------------------------+
>>> |Paul Spencer                          pspencer at dmsolutions.ca    |
>>> +-----------------------------------------------------------------+
>>> |Chief Technology Officer                                         |
>>> |DM Solutions Group Inc                http://www.dmsolutions.ca/ |
>>> +-----------------------------------------------------------------+
>>>
>>>
>>>
>>>
>>>
>>
>> +-----------------------------------------------------------------+
>> |Paul Spencer                          pspencer at dmsolutions.ca    |
>> +-----------------------------------------------------------------+
>> |Chief Technology Officer                                         |
>> |DM Solutions Group Inc                http://www.dmsolutions.ca/ |
>> +-----------------------------------------------------------------+
>>
>>
>>
>>
>>
>> _______________________________________________
>> mapguide-internals mailing list
>> mapguide-internals at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/mapguide-internals
>>
>>
>> _______________________________________________
>> mapguide-internals mailing list
>> mapguide-internals at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/mapguide-internals
> 
> +-----------------------------------------------------------------+
> |Paul Spencer                          pspencer at dmsolutions.ca    |
> +-----------------------------------------------------------------+
> |Chief Technology Officer                                         |
> |DM Solutions Group Inc                http://www.dmsolutions.ca/ |
> +-----------------------------------------------------------------+
> 
> 
> 
> 
> 
> _______________________________________________
> mapguide-internals mailing list
> mapguide-internals at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapguide-internals
> 


More information about the mapguide-internals mailing list