| 506 | */ |
| 507 | |
| 508 | xmlNodePtr msOWSCommonBoundingBox(xmlNsPtr psNsOws, const char *crs, int dimensions, double minx, double miny, double maxx, double maxy) { |
| 509 | char LowerCorner[100]; |
| 510 | char UpperCorner[100]; |
| 511 | char dim_string[100]; |
| 512 | xmlNodePtr psRootNode = NULL; |
| 513 | |
| 514 | /* Do we need to reorient tuple axes? */ |
| 515 | { |
| 516 | projectionObj proj; |
| 517 | |
| 518 | msInitProjection( &proj ); |
| 519 | if( msLoadProjectionString( &proj, (char *) crs ) == 0 ) |
| 520 | { |
| 521 | msAxisNormalizePoints( &proj, 1, &minx, &miny ); |
| 522 | msAxisNormalizePoints( &proj, 1, &maxx, &maxy ); |
| 523 | } |
| 524 | msFreeProjection( &proj ); |
| 525 | } |
| 526 | |
| 527 | |
| 528 | if (_validateNamespace(psNsOws) == MS_FAILURE) |
| 529 | psNsOws = xmlNewNs(psRootNode, BAD_CAST MS_OWSCOMMON_OWS_NAMESPACE_URI, BAD_CAST MS_OWSCOMMON_OWS_NAMESPACE_PREFIX); |
| 530 | |
| 531 | /* create element name */ |
| 532 | psRootNode = xmlNewNode(psNsOws, BAD_CAST "BoundingBox"); |
| 533 | |
| 534 | /* add attributes to the root element */ |
| 535 | xmlNewProp(psRootNode, BAD_CAST "crs", BAD_CAST crs); |
| 536 | |
| 537 | snprintf( dim_string, sizeof(dim_string), "%d", dimensions ); |
| 538 | xmlNewProp(psRootNode, BAD_CAST "dimensions", BAD_CAST dim_string); |
| 539 | |
| 540 | snprintf(LowerCorner, sizeof(LowerCorner), "%.15g %.15g", minx, miny); |
| 541 | snprintf(UpperCorner, sizeof(UpperCorner), "%.15g %.15g", maxx, maxy); |
| 542 | |
| 543 | /* add child elements */ |
| 544 | xmlNewChild(psRootNode, psNsOws,BAD_CAST "LowerCorner",BAD_CAST LowerCorner); |
| 545 | xmlNewChild(psRootNode, psNsOws,BAD_CAST "UpperCorner",BAD_CAST UpperCorner); |
| 546 | |
| 547 | return psRootNode; |
| 548 | } |
| 549 | |
| 550 | /** |
| 551 | * msOWSCommonWGS84BoundingBox() |
no test coverage detected