[gdal-dev] How to get string representation from OGRStyleMgrH

Nik Sands nixanz at nixanz.com
Sun Aug 10 04:31:25 PDT 2014


Thanks Even,

Sounds like I'd have to assemble the new style string manually by joining up to four tool style strings using 'OGR_ST_GetStyleString()' (one for each tool that is present) with a ";" in between each.

That should be OK.

Cheers,
Nik.


On 10 Aug 2014, at 8:57 pm, Even Rouault <even.rouault at spatialys.com> wrote:

> Le dimanche 10 août 2014 12:36:02, Nik Sands a écrit :
>> Is there a C API equivalent?  
> 
> No, from what I can see
> 
>> Or some other way of doing this without C++?
> 
> Actually I'm not sure OGRStyleMgr::GetStyleString(NULL) is what you want, at 
> least not directly. It just returns the m_pszStyleString member of OGRStyleMgr
> 
> You didn't explain your use case, but if it is :
> 1) initialize a style manager with a style string
> 2) browse through the tools with GetPart()
> 3) modify some tools with the tool API
> 4) get the modified style string
> 
> then I believe you have to do something cumbersome :
> 4b) create a new style manager with an empty style string
> 5) use AddPart(OGRStyleTool *) on the new style manager to add the unmodified 
> and modified tools (you need to keep the pointers obtained from 2), not re-call 
> GetPart() on the first style manager)
> 6) call GetStyleString() on the second style manager
> 
> When you modify the tools with the tool API it edits the string of the tool, 
> but there's no link with the style manager it comes from, so it won't see the 
> change.
> 
> The working of the style manager is a bit weird...
> 
>> 
>> I'm using C rather than C++.
>> 
>> On 10 Aug 2014, at 7:30 pm, Even Rouault <even.rouault at spatialys.com> wrote:
>>> Le dimanche 10 août 2014 08:05:48, Nik Sands a écrit :
>>>> Hi devs,
>>>> 
>>>> I've been working with styles using 'OGRStyleMgrH'.  However, I cannot
>>>> figure out how to get a string directly from an OGRStyleMgrH.  I'd like
>>>> to be able to get the string representation of the style in the same
>>>> format as can be used to initialise the OGRStyleMgrH in
>>>> OGR_SM_InitStyleString().
>>> 
>>> Nik,
>>> 
>>> OGRStyleMgr::GetStyleString(NULL) should do :
>>> 
>>> /**
>>> * \brief Get the style string from the style manager.
>>> *
>>> * @param poFeature feature object from which to read the style or NULL to
>>> *                  get the style string stored in the manager.
>>> *
>>> * @return the style string stored in the feature or the style string
>>> stored *          in the style manager if poFeature is NULL
>>> *
>>> * NOTE: this method will call OGRStyleMgr::InitFromFeature() if poFeature
>>> is *       not NULL and replace the style string stored in the style
>>> manager */
>>> 
>>> Even
>>> 
>>>> How can I do this?
>>>> 
>>>> Cheers,
>>>> Nik.
>>>> 
>>>> _______________________________________________
>>>> gdal-dev mailing list
>>>> gdal-dev at lists.osgeo.org
>>>> http://lists.osgeo.org/mailman/listinfo/gdal-dev
> 
> -- 
> Spatialys - Geospatial professional services
> http://www.spatialys.com



More information about the gdal-dev mailing list