MCPcopy Index your code
hub / github.com/MapServer/MapServer / msShapeGetClass

Function msShapeGetClass

maputil.c:513–567  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

511}
512
513int msShapeGetClass(layerObj *layer, mapObj *map, shapeObj *shape, int *classgroup, int numclasses)
514{
515 int i, iclass;
516
517 /* INLINE features do not work with expressions, allow the classindex */
518 /* value set prior to calling this function to carry through. */
519 if(layer->connectiontype == MS_INLINE) {
520 if(shape->classindex < 0 || shape->classindex >= layer->numclasses) return(-1);
521
522 if(map->scaledenom > 0) { /* verify scaledenom here */
523 if((layer->class[shape->classindex]->maxscaledenom > 0) && (map->scaledenom > layer->class[shape->classindex]->maxscaledenom))
524 return(-1); /* can skip this feature */
525 if((layer->class[shape->classindex]->minscaledenom > 0) && (map->scaledenom <= layer->class[shape->classindex]->minscaledenom))
526 return(-1); /* can skip this feature */
527 }
528
529 return(shape->classindex);
530 }
531
532 if (layer->numclasses > 0) {
533 if (classgroup == NULL || numclasses <=0)
534 numclasses = layer->numclasses;
535
536 for(i=0; i<numclasses; i++) {
537 if (classgroup)
538 iclass = classgroup[i];
539 else
540 iclass = i;
541
542 if (iclass < 0 || iclass >= layer->numclasses)
543 continue; /* this should never happen but just in case */
544
545 if(map->scaledenom > 0) { /* verify scaledenom here */
546 if((layer->class[iclass]->maxscaledenom > 0) && (map->scaledenom > layer->class[iclass]->maxscaledenom))
547 continue; /* can skip this one, next class */
548 if((layer->class[iclass]->minscaledenom > 0) && (map->scaledenom <= layer->class[iclass]->minscaledenom))
549 continue; /* can skip this one, next class */
550 }
551
552 /* verify the minfeaturesize */
553 if ((shape->type == MS_SHAPE_LINE || shape->type == MS_SHAPE_POLYGON) && (layer->class[iclass]->minfeaturesize > 0))
554 {
555 double minfeaturesize = Pix2LayerGeoref(map, layer,
556 layer->class[iclass]->minfeaturesize);
557 if (msShapeCheckSize(shape, minfeaturesize) == MS_FALSE)
558 continue; //skip this one, next class
559 }
560
561 if(layer->class[iclass]->status != MS_DELETE && msEvalExpression(layer, shape, &(layer->class[iclass]->expression), layer->classitemindex) == MS_TRUE)
562 return(iclass);
563 }
564 }
565
566 return(-1); /* no match */
567}
568
569char *msShapeGetAnnotation(layerObj *layer, shapeObj *shape)
570{

Callers 12

msQueryByIndexFunction · 0.85
msQueryByAttributesFunction · 0.85
msQueryByFilterFunction · 0.85
msQueryByRectFunction · 0.85
msQueryByFeaturesFunction · 0.85
msQueryByPointFunction · 0.85
msQueryByShapeFunction · 0.85
msDrawVectorLayerFunction · 0.85
processFeatureTagFunction · 0.85
msOGRWriteFromQueryFunction · 0.85
msUnionLayerNextShapeFunction · 0.85
layerObj_getClassIndexFunction · 0.85

Calls 3

Pix2LayerGeorefFunction · 0.85
msShapeCheckSizeFunction · 0.85
msEvalExpressionFunction · 0.85

Tested by

no test coverage detected