[mapguide-users] Getting all object Enveloppe
David Hequet
david.hequet at free.fr
Wed Jun 6 11:21:01 EDT 2007
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
>
>
--
View this message in context: http://www.nabble.com/Getting-all-object-Enveloppe-tf3864317s16610.html#a10990817
Sent from the MapGuide Users mailing list archive at Nabble.com.
More information about the mapguide-users
mailing list