void msAxisDenormalizePoints( projectionObj *proj, int count, double *x, double *y ) { /* For how this is essentially identical to normalizing */ msAxisNormalizePoints( proj, count, x, y ); }
xmlNodePtr msOWSCommonBoundingBox(xmlNsPtr psNsOws, const char *crs, int dimensions, double minx, double miny, double maxx, double maxy) { char LowerCorner[100]; char UpperCorner[100]; char dim_string[100]; xmlNodePtr psRootNode = NULL; /* Do we need to reorient tuple axes? */ if(crs && strstr(crs, "imageCRS") == NULL) { projectionObj proj; msInitProjection( &proj ); if( msLoadProjectionString( &proj, (char *) crs ) == 0 ) { msAxisNormalizePoints( &proj, 1, &minx, &miny ); msAxisNormalizePoints( &proj, 1, &maxx, &maxy ); } msFreeProjection( &proj ); } if (_validateNamespace(psNsOws) == MS_FAILURE) psNsOws = xmlNewNs(psRootNode, BAD_CAST MS_OWSCOMMON_OWS_NAMESPACE_URI, BAD_CAST MS_OWSCOMMON_OWS_NAMESPACE_PREFIX); /* create element name */ psRootNode = xmlNewNode(psNsOws, BAD_CAST "BoundingBox"); /* add attributes to the root element */ xmlNewProp(psRootNode, BAD_CAST "crs", BAD_CAST crs); snprintf( dim_string, sizeof(dim_string), "%d", dimensions ); xmlNewProp(psRootNode, BAD_CAST "dimensions", BAD_CAST dim_string); snprintf(LowerCorner, sizeof(LowerCorner), "%.15g %.15g", minx, miny); snprintf(UpperCorner, sizeof(UpperCorner), "%.15g %.15g", maxx, maxy); /* add child elements */ xmlNewChild(psRootNode, psNsOws,BAD_CAST "LowerCorner",BAD_CAST LowerCorner); xmlNewChild(psRootNode, psNsOws,BAD_CAST "UpperCorner",BAD_CAST UpperCorner); return psRootNode; }