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

Function FLTParseGMLEnvelope

mapogcfilter.c:3255–3341  ·  view source on GitHub ↗

/ FLTParseGMLEnvelope */ / Utility function to parse a gml:Enevelop (used for SOS and FE1.1)*/ /

Source from the content-addressed store, hash-verified

3253/* Utility function to parse a gml:Enevelop (used for SOS and FE1.1)*/
3254/************************************************************************/
3255int FLTParseGMLEnvelope(CPLXMLNode *psRoot, rectObj *psBbox, char **ppszSRS)
3256{
3257 CPLXMLNode *psChild=NULL;
3258 CPLXMLNode *psUpperCorner=NULL, *psLowerCorner=NULL;
3259 char *pszLowerCorner=NULL, *pszUpperCorner=NULL;
3260 int bValid = 0;
3261 char **tokens;
3262 int n;
3263
3264 if (psRoot && psBbox && psRoot->eType == CXT_Element &&
3265 EQUAL(psRoot->pszValue,"Envelope"))
3266 {
3267 /*Get the srs if available*/
3268 if (ppszSRS)
3269 {
3270 psChild = psRoot->psChild;
3271 while (psChild != NULL)
3272 {
3273 if (psChild->eType == CXT_Attribute && psChild->pszValue &&
3274 EQUAL(psChild->pszValue, "srsName") && psChild->psChild &&
3275 psChild->psChild->pszValue)
3276 {
3277 *ppszSRS = msStrdup(psChild->psChild->pszValue);
3278 break;
3279 }
3280 psChild = psChild->psNext;
3281 }
3282 }
3283 psLowerCorner = CPLSearchXMLNode(psRoot, "lowerCorner");
3284 psUpperCorner = CPLSearchXMLNode(psRoot, "upperCorner");
3285
3286 if (psLowerCorner && psUpperCorner && EQUAL(psLowerCorner->pszValue,"lowerCorner") &&
3287 EQUAL(psUpperCorner->pszValue,"upperCorner"))
3288 {
3289 /*get the values*/
3290 psChild = psLowerCorner->psChild;
3291 while (psChild != NULL) {
3292 if (psChild->eType != CXT_Text)
3293 psChild = psChild->psNext;
3294 else
3295 break;
3296 }
3297 if (psChild && psChild->eType == CXT_Text)
3298 pszLowerCorner = psChild->pszValue;
3299
3300 psChild = psUpperCorner->psChild;
3301 while (psChild != NULL) {
3302 if (psChild->eType != CXT_Text)
3303 psChild = psChild->psNext;
3304 else
3305 break;
3306 }
3307 if (psChild && psChild->eType == CXT_Text)
3308 pszUpperCorner = psChild->pszValue;
3309
3310 if (pszLowerCorner && pszUpperCorner) {
3311 tokens = msStringSplit(pszLowerCorner, ' ', &n);
3312 if (tokens && n >= 2) {

Callers 2

FLTInsertElementInNodeFunction · 0.85
msSOSGetObservationFunction · 0.85

Calls 6

msStrdupFunction · 0.85
msStringSplitFunction · 0.85
msFreeCharArrayFunction · 0.85
msInitProjectionFunction · 0.85
msAxisNormalizePointsFunction · 0.85

Tested by

no test coverage detected