[gdal-dev] Usage of styles in C API

Even Rouault even.rouault at mines-paris.org
Sun Aug 3 04:09:40 PDT 2014


Le dimanche 03 août 2014 12:55:44, Nik Sands a écrit :
> Thanks Even,
> 
> Yes, deleting the spaces seems to get it working correctly.  Is this
> expected?  Are spaces an illegal part of a style string?
> 
> The documentation includes spaces in the example .ofs file there, so I had
> copied that format when creating my text file.

I guess we should be tolerant with spaces. The grammar of the style string 
itself seems to indicate that no spaces are expected in the style_def itself. 
But the format of the .ofs file is not really well defined.

Perhaps Chaitanya will take care of that. See previous email.

> 
> Cheers,
> Nik.
> 
> On 3 Aug 2014, at 8:45 pm, Even Rouault <even.rouault at mines-paris.org> 
wrote:
> > Le dimanche 03 août 2014 12:41:56, Nik Sands a écrit :
> >> Sorry, my mistake... I had my logging in the wrong place.  styleChars is
> >> 
> >> actually of the form (including the leading space):
> >> 	' PEN(c:#A08080,w:2pt); LABEL(c:#000000,s:18pt,t:{title})'
> > 
> > The issue must be the leading space before PEN, and potentially LABEL
> > too.
> > 
> >> On 3 Aug 2014, at 8:35 pm, Nik Sands <nixanz at nixanz.com> wrote:
> >>> On one of the iterations through this code, styleChars is:
> >>> 	'vegetation_low: BRUSH(fc:#A0F0A0); LABEL(c:#004000,s:18pt,t:
{title})'
> >>> 
> >>> So perhaps the inclusion of the style name is the problem?
> >>> 
> >>> This was read into a style table from a text file using
> >>> 'OGR_STBL_LoadStyleTable()'.  I had assumed that a similar format to
> >>> .ofs was suitable.  If this is not the case, how should I read a style
> >>> table from a text file in such a way that I can distinguish the various
> >>> styles by name?
> >>> 
> >>> In guess my more general question is:  What is the correct way to read
> >>> styles from an arbitrary text file into a style table, and then use a
> >>> style manager to get the various parts/tools?
> >>> 
> >>> On 3 Aug 2014, at 8:26 pm, Even Rouault <even.rouault at mines-paris.org>
> > 
> > wrote:
> >>>> Le dimanche 03 août 2014 12:11:42, Nik Sands a écrit :
> >>>>> I'm just starting out using the styles features of OGR (using the C
> >>>>> API) but at struggling with a few elements of it.
> >>>>> 
> >>>>> My code (copied below) fails to get any OGRStyleToolH.  Ie, the "if (
> >>>>> tool )" block never gets run, because 'tool' is always NULL at the
> >>>>> point indicated by the comment.  But the execution does reach that
> >>>>> point in the code which indicates that the OGRStyleMrgH does in fact
> >>>>> include at least one part (tool).
> >>>>> 
> >>>>> I'd be grateful if somebody could point out what I'm doing wrong.
> >>>> 
> >>>> Nothing strikes me as wrong. A potential explanation is that
> >>>> styleChars doesn't contain a valid OGR Feature Style string.
> >>>> GetPartCount() counts the number of ";" separating style parts, but it
> >>>> doens't check that each style part actually begins by a recognized
> >>>> tool name (PEN, BRUSH, SYMBOL, LABEL). OGR_SM_GetPart() does this
> >>>> check however and if it cannot recognize it it returns a NULL tool.
> >>>> 
> >>>>> Thanks,
> >>>>> Nik.
> >>>>> 
> >>>>> 
> >>>>> -------------------------------------------
> >>>>> 
> >>>>> 	const char *styleChars = OGR_STBL_GetNextStyle(table) ) )
> >>>>> 	NSString *styleName = [NSString
> >>>>> 
> >>>>> stringWithUTF8String:OGR_STBL_GetLastStyleName(table)]; OGRStyleMgrH
> >>>>> styleMgr = OGR_SM_Create(NULL);
> >>>>> 
> >>>>> 	OGR_SM_InitStyleString(styleMgr, styleChars);
> >>>>> 	
> >>>>> 	
> >>>>> 	for ( int i = 0; i < OGR_SM_GetPartCount(styleMgr, NULL); i++ )
> >>>>> 	{
> >>>>> 	
> >>>>> 		OGRStyleToolH tool = OGR_SM_GetPart(styleMgr, i, NULL);
> >>>>> 		
> >>>>> 		if ( tool )  //  'tool' always NULL here
> >>>>> 		{
> >>>>> 		
> >>>>> 			switch ( OGR_ST_GetType(tool) )
> >>>>> 			{
> >>>>> 			
> >>>>> 				case OGRSTCPen:
> >>>>> 					self.pen = tool;
> >>>>> 					break;
> >>>>> 				
> >>>>> 				case OGRSTCBrush:
> >>>>> 					self.brush = tool;
> >>>>> 					break;
> >>>>> 				
> >>>>> 				case OGRSTCSymbol:
> >>>>> 					self.symbol = tool;
> >>>>> 					break;
> >>>>> 				
> >>>>> 				case OGRSTCLabel:
> >>>>> 					self.label = tool;
> >>>>> 					break;
> >>>>> 				
> >>>>> 				default:
> >>>>> 					NSLog(@"Unknown style tool type!");
> >>>>> 					break;
> >>>>> 			
> >>>>> 			}
> >>>>> 		
> >>>>> 		}
> >>>>> 	
> >>>>> 	}
> >>>>> 
> >>>>> -------------------------------------------
> >>>>> 
> >>>>> 
> >>>>> _______________________________________________
> >>>>> gdal-dev mailing list
> >>>>> gdal-dev at lists.osgeo.org
> >>>>> http://lists.osgeo.org/mailman/listinfo/gdal-dev
> >>> 
> >>> _______________________________________________
> >>> gdal-dev mailing list
> >>> gdal-dev at lists.osgeo.org
> >>> http://lists.osgeo.org/mailman/listinfo/gdal-dev

-- 
Geospatial professional services
http://even.rouault.free.fr/services.html


More information about the gdal-dev mailing list