[mapguide-users] Getting all object Enveloppe
Kenneth, GEOGRAF A/S
ks at geograf.dk
Thu Jun 7 02:35:22 EDT 2007
Yes, you have to run through each feature in the feature reader.
Then on each feature, you have to use some of the obscure
AgfReader/Bytereader stuff to get the actual object out of the geometry
column.
When you have the object, it has a GetEnvelope() method.
Regards, Kenneth, GEOGRAF A/S
David Hequet wrote:
> Arg, i was so close of my goal
>
> I think i have to take a look on your idea because of MGSelection seems to
> have a limit.
>
> here is my code:
>
> For i = 0 To aMgLayerCollection.GetCount() - 1
> aLayer = aMgLayerCollection.GetItem(i)
> aProvider = Me._getLayerSourceType(, aLayer)
> If aProvider <> "Autodesk.Raster" And aProvider <> "DWF" Then
>
> aLayerClassName = aLayer.GetFeatureClassName()
> If aClassArray.IndexOf(aLayerClassName) = -1 Then
> Me._log(aLayerClassName)
> aLayerFeatureId = aLayer.GetFeatureSourceId()
> aLayerResId = New MgResourceIdentifier(aLayerFeatureId)
> aFeatureReader = Me._featureService.SelectFeatures(aLayerResId,
> aLayerClassName, aMGQueryOptions)
> aMGSelection.AddFeatures(aLayer, aFeatureReader, 0)
> aClassArray.Add(aLayerClassName)
> End If
> End If
> Next i
> aMgEnveloppe = aMGSelection.GetExtents(Me._featureService)
> I got an error:
> Une exception non classifiée s'est produite.Une exception non classifiée
> s'est produite.
> Une exception s'est produite dans la méthode
> MgServerSelectFeatures.SelectFeatures à la ligne 217 dans le fichier
> c:\build_tux_area\mgdev\server\src\services\feature\ServerSelectFeatures.cpp
> In english "non classified error"
> When i use this method
> aMgEnveloppe = aMGSelection.GetExtents(Me._featureService)
>
> it didn't happen every time:
> on a map with ~30 features dispatched on 4 layers it's ok
> on a map with ~1200 features on 2 layers it crash (if i try too much the
> mgserver service crash).
>
> i didn't see a getExtent method on the featurereader, i think i have to
> check enveloppe for each feature in the reader?
>
>
> Kenneth, GEOGRAF A/S wrote:
>
>> You don't have to use the selection part.
>> You can extract the object directly from the feature reader.
>> Once you have the object, you can also get the extent (aka bbox).
>> If you then construct an envelope object, you can add the features
>> envelope to original envelope.
>>
>> Something like:
>>
>> create a new MgFeatureQueryOptions with an empty filter
>> create a new Envelope
>> For Each Layer
>> {
>> Use a featureReader with the MgFeatureQueryOptions
>> Add the feature's envelope to the outer Envelope
>> }
>> Get zoom extents from the Envelope
>>
>>
>> Other than this, I don't think you can optimize it anymore, as you need
>> to execute the query on each layer.
>>
>> I think there is a "Get Extents" on the feature source, but I can't find
>> it. And I don't think it works on filtered datasources.
>>
>> Perhaps you can execute the query with some SQL optimizations like
>> "Select Envelope(geometry) from datasource".
>>
>> Hope it helps.
>>
>> Regards, Kenneth, GEOGRAF A/S
>>
>>
>>
>> David Hequet wrote:
>>
>>> Hello,
>>>
>>> I'm trying to make a fonction that can return me the enveloppe of the
>>> entire
>>> visible map (no way with original map extent).
>>>
>>> Explain: I have a map "template" with a lot of layers, i have a function
>>> that change all the layer filter (basic filter, no spatial) to see
>>> different
>>> map based on that template. Doing that make the "zoom to original extent"
>>> useless, because data are not on the same area.
>>> I wan't to set the new map extent in the MapDefinition.
>>> My ask is about getting the new extent.
>>>
>>> I thought to do it like that:
>>>
>>> create a new MgSelection
>>> create a new MgFeatureQueryOptions with an empty filter
>>> For Each Layer
>>> {
>>> Use a featureReader with the MgFeatureQueryOptions
>>> Add the selected feature to the MgSelection
>>> }
>>> Getting the MgSelection enveloppe
>>>
>>> It will work, but i don't think it's very optimized with a lot of
>>> Layer/Feature (and it will used at each map load, filter modification..)
>>>
>>> Did someone have a better way?
>>>
>>> Thank you!
>>>
>>> Ps: sorry for my poor english, ask i you want precision.
>>>
>>>
>> _______________________________________________
>> mapguide-users mailing list
>> mapguide-users at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/mapguide-users
>>
>>
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/mapguide-users/attachments/20070607/791f8c48/attachment.html
More information about the mapguide-users
mailing list