1332
1345
psTmpNode = xmlAddChild(psNode, msOWSCommonOperationsMetadataDomainType(ows_version, psNsOws,"Parameter", "service", "SOS"));
1333
1346
psTmpNode = xmlAddChild(psNode, msOWSCommonOperationsMetadataDomainType(ows_version, psNsOws,"Parameter", "version", (char *)pszSOSVersion));
1335
psNode = xmlAddChild(psMainNode, msOWSCommonOperationsMetadataOperation(psNsOws,psNsXLink,"DescribeSensor", OWS_METHOD_GETPOST, (char *) script_url));
1336
psTmpNode = xmlAddChild(psNode, msOWSCommonOperationsMetadataDomainType(ows_version, psNsOws,"Parameter", "service", "SOS"));
1337
psTmpNode = xmlAddChild(psNode, msOWSCommonOperationsMetadataDomainType(ows_version, psNsOws,"Parameter", "version", (char *)pszSOSVersion));
1338
psTmpNode = xmlAddChild(psNode, msOWSCommonOperationsMetadataDomainType(ows_version, psNsOws,"Parameter", "sensorid", "urn:ogc:object:procedure"));
1339
psTmpNode = xmlAddChild(psNode, msOWSCommonOperationsMetadataDomainType(ows_version, psNsOws,"Parameter", "outputFormat", (char *)pszSOSDescribeSensorMimeType));
1341
psNode = xmlAddChild(psMainNode, msOWSCommonOperationsMetadataOperation(psNsOws,psNsXLink,"GetObservation", OWS_METHOD_GETPOST, (char *) script_url));
1342
psTmpNode = xmlAddChild(psNode, msOWSCommonOperationsMetadataDomainType(ows_version, psNsOws,"Parameter", "service", "SOS"));
1343
psTmpNode = xmlAddChild(psNode, msOWSCommonOperationsMetadataDomainType(ows_version, psNsOws,"Parameter", "version", (char *)pszSOSVersion));
1344
psTmpNode = xmlAddChild(psNode, msOWSCommonOperationsMetadataDomainType(ows_version, psNsOws,"Parameter", "offering", "urn:ogc:object:offering"));
1345
psTmpNode = xmlAddChild(psNode, msOWSCommonOperationsMetadataDomainType(ows_version, psNsOws,"Parameter", "observedproperty", "urn:ogc:object:observedproperty"));
1346
psTmpNode = xmlAddChild(psNode, msOWSCommonOperationsMetadataDomainType(ows_version, psNsOws,"Parameter", "eventtime", "sos:time"));
1347
psTmpNode = xmlAddChild(psNode, msOWSCommonOperationsMetadataDomainType(ows_version, psNsOws,"Parameter", "procedure", "urn:ogc:object:sensor"));
1348
psTmpNode = xmlAddChild(psNode, msOWSCommonOperationsMetadataDomainType(ows_version, psNsOws,"Parameter", "featureofinterest", "gml:location"));
1349
psTmpNode = xmlAddChild(psNode, msOWSCommonOperationsMetadataDomainType(ows_version, psNsOws,"Parameter", "result", "ogc:Filter"));
1350
psTmpNode = xmlAddChild(psNode, msOWSCommonOperationsMetadataDomainType(ows_version, psNsOws,"Parameter", "responseFormat", (char *)pszSOSGetObservationMimeType));
1351
psTmpNode = xmlAddChild(psNode, msOWSCommonOperationsMetadataDomainType(ows_version, psNsOws,"Parameter", "resultModel", "Observation,Measurement"));
1348
if (msOWSRequestIsEnabled(map, NULL, "S", "DescribeSensor", MS_TRUE))
1350
psNode = xmlAddChild(psMainNode, msOWSCommonOperationsMetadataOperation(psNsOws,psNsXLink,"DescribeSensor", OWS_METHOD_GETPOST, (char *) script_url));
1351
psTmpNode = xmlAddChild(psNode, msOWSCommonOperationsMetadataDomainType(ows_version, psNsOws,"Parameter", "service", "SOS"));
1352
psTmpNode = xmlAddChild(psNode, msOWSCommonOperationsMetadataDomainType(ows_version, psNsOws,"Parameter", "version", (char *)pszSOSVersion));
1353
psTmpNode = xmlAddChild(psNode, msOWSCommonOperationsMetadataDomainType(ows_version, psNsOws,"Parameter", "sensorid", "urn:ogc:object:procedure"));
1354
psTmpNode = xmlAddChild(psNode, msOWSCommonOperationsMetadataDomainType(ows_version, psNsOws,"Parameter", "outputFormat", (char *)pszSOSDescribeSensorMimeType));
1357
if (msOWSRequestIsEnabled(map, NULL, "S", "DescribeObservationType", MS_TRUE))
1359
psNode = xmlAddChild(psMainNode, msOWSCommonOperationsMetadataOperation(psNsOws,psNsXLink,"DescribeObservationType", OWS_METHOD_GETPOST, (char *) script_url));
1360
psTmpNode = xmlAddChild(psNode, msOWSCommonOperationsMetadataDomainType(ows_version, psNsOws,"Parameter", "service", "SOS"));
1361
psTmpNode = xmlAddChild(psNode, msOWSCommonOperationsMetadataDomainType(ows_version, psNsOws,"Parameter", "version", (char *)pszSOSVersion));
1362
psTmpNode = xmlAddChild(psNode, msOWSCommonOperationsMetadataDomainType(ows_version, psNsOws,"Parameter", "observedproperty", "urn:ogc:object:observedproperty"));
1365
if (msOWSRequestIsEnabled(map, NULL, "S", "GetObservation", MS_TRUE))
1367
psNode = xmlAddChild(psMainNode, msOWSCommonOperationsMetadataOperation(psNsOws,psNsXLink,"GetObservation", OWS_METHOD_GETPOST, (char *) script_url));
1368
psTmpNode = xmlAddChild(psNode, msOWSCommonOperationsMetadataDomainType(ows_version, psNsOws,"Parameter", "service", "SOS"));
1369
psTmpNode = xmlAddChild(psNode, msOWSCommonOperationsMetadataDomainType(ows_version, psNsOws,"Parameter", "version", (char *)pszSOSVersion));
1370
psTmpNode = xmlAddChild(psNode, msOWSCommonOperationsMetadataDomainType(ows_version, psNsOws,"Parameter", "offering", "urn:ogc:object:offering"));
1371
psTmpNode = xmlAddChild(psNode, msOWSCommonOperationsMetadataDomainType(ows_version, psNsOws,"Parameter", "observedproperty", "urn:ogc:object:observedproperty"));
1372
psTmpNode = xmlAddChild(psNode, msOWSCommonOperationsMetadataDomainType(ows_version, psNsOws,"Parameter", "eventtime", "sos:time"));
1373
psTmpNode = xmlAddChild(psNode, msOWSCommonOperationsMetadataDomainType(ows_version, psNsOws,"Parameter", "procedure", "urn:ogc:object:sensor"));
1374
psTmpNode = xmlAddChild(psNode, msOWSCommonOperationsMetadataDomainType(ows_version, psNsOws,"Parameter", "featureofinterest", "gml:location"));
1375
psTmpNode = xmlAddChild(psNode, msOWSCommonOperationsMetadataDomainType(ows_version, psNsOws,"Parameter", "result", "ogc:Filter"));
1376
psTmpNode = xmlAddChild(psNode, msOWSCommonOperationsMetadataDomainType(ows_version, psNsOws,"Parameter", "responseFormat", (char *)pszSOSGetObservationMimeType));
1377
psTmpNode = xmlAddChild(psNode, msOWSCommonOperationsMetadataDomainType(ows_version, psNsOws,"Parameter", "resultModel", "Observation,Measurement"));
1353
1380
value = msOWSLookupMetadata(&(map->web.metadata), "SO", "maxfeatures");
2713
2739
if (lp->resultcache && lp->resultcache->numresults > 0) {
2714
2740
for(j=0; j<lp->resultcache->numresults; j++) {
2715
2741
msInitShape(&sShape);
2716
status = msLayerResultsGetShape(lp, &sShape, lp->resultcache->results[j].tileindex, lp->resultcache->results[j].shapeindex);
2742
status = msLayerGetShape(lp, &sShape, &(lp->resultcache->results[j]));
2717
2743
if(status != MS_SUCCESS)
2720
2746
if (sShape.values[iItemPosition]) {
2721
pszProcedureURI = strdup("urn:ogc:def:procedure:");
2747
pszProcedureURI = msStrdup("urn:ogc:def:procedure:");
2722
2748
pszProcedureURI = msStringConcatenate(pszProcedureURI, sShape.values[iItemPosition]);
2723
2749
if (strcasecmp(pszProcedureURI, sosparams->pszProcedure) == 0) {
2724
2750
pszUrl = msOWSLookupMetadata(&(lp->metadata), "S", "describesensor_url");
2725
pszProcedureId = strdup(sShape.values[iItemPosition]);
2751
pszProcedureId = msStrdup(sShape.values[iItemPosition]);
2727
pszTmp = strdup(pszUrl);
2753
pszTmp = msStrdup(pszUrl);
2729
2755
/* %procedure% is the hardcoded variable names to use
2730
2756
within sos_describesensor_url */
2731
2757
tmpstr = (char *)malloc(sizeof(char)*strlen("procedure") + 3);
2732
2758
sprintf(tmpstr,"%%%s%%", "procedure");
2733
if (msCaseFindSubstring(pszUrl, tmpstr) != NULL)
2759
if (strcasestr(pszUrl, tmpstr) != NULL)
2734
2760
pszTmp = msCaseReplaceSubstring(pszTmp, tmpstr, pszProcedureId);
2735
2761
msFree(tmpstr);
2908
2948
if (request->NumParams) { /* this is a GET request */
2909
2949
for(i=0; i<request->NumParams; i++) {
2910
2950
if (strcasecmp(request->ParamNames[i], "SERVICE") == 0)
2911
sosparams->pszService = strdup(request->ParamValues[i]);
2951
sosparams->pszService = msStrdup(request->ParamValues[i]);
2912
2952
else if (strcasecmp(request->ParamNames[i], "VERSION") == 0)
2913
sosparams->pszVersion = strdup(request->ParamValues[i]);
2953
sosparams->pszVersion = msStrdup(request->ParamValues[i]);
2914
2954
else if (strcasecmp(request->ParamNames[i], "ACCEPTVERSIONS") == 0)
2915
sosparams->pszAcceptVersions = strdup(request->ParamValues[i]);
2955
sosparams->pszAcceptVersions = msStrdup(request->ParamValues[i]);
2916
2956
else if (strcasecmp(request->ParamNames[i], "REQUEST") == 0)
2917
sosparams->pszRequest = strdup(request->ParamValues[i]);
2957
sosparams->pszRequest = msStrdup(request->ParamValues[i]);
2918
2958
else if (strcasecmp(request->ParamNames[i], "UPDATESEQUENCE") == 0)
2919
sosparams->pszUpdateSequence = strdup(request->ParamValues[i]);
2959
sosparams->pszUpdateSequence = msStrdup(request->ParamValues[i]);
2920
2960
else if (strcasecmp(request->ParamNames[i], "SENSORID") == 0)
2921
sosparams->pszSensorId = strdup(request->ParamValues[i]);
2961
sosparams->pszSensorId = msStrdup(request->ParamValues[i]);
2922
2962
else if (strcasecmp(request->ParamNames[i], "PROCEDURE") == 0)
2923
sosparams->pszProcedure = strdup(request->ParamValues[i]);
2963
sosparams->pszProcedure = msStrdup(request->ParamValues[i]);
2924
2964
else if (strcasecmp(request->ParamNames[i], "OUTPUTFORMAT") == 0)
2925
sosparams->pszOutputFormat = strdup(request->ParamValues[i]);
2965
sosparams->pszOutputFormat = msStrdup(request->ParamValues[i]);
2926
2966
else if (strcasecmp(request->ParamNames[i], "OFFERING") == 0)
2927
sosparams->pszOffering = strdup(request->ParamValues[i]);
2967
sosparams->pszOffering = msStrdup(request->ParamValues[i]);
2928
2968
else if (strcasecmp(request->ParamNames[i], "OBSERVEDPROPERTY") == 0)
2929
sosparams->pszObservedProperty = strdup(request->ParamValues[i]);
2969
sosparams->pszObservedProperty = msStrdup(request->ParamValues[i]);
2930
2970
else if (strcasecmp(request->ParamNames[i], "EVENTTIME") == 0)
2931
sosparams->pszEventTime = strdup(request->ParamValues[i]);
2971
sosparams->pszEventTime = msStrdup(request->ParamValues[i]);
2932
2972
else if (strcasecmp(request->ParamNames[i], "RESULT") == 0)
2933
sosparams->pszResult = strdup(request->ParamValues[i]);
2973
sosparams->pszResult = msStrdup(request->ParamValues[i]);
2934
2974
else if (strcasecmp(request->ParamNames[i], "RESULTMODEL") == 0)
2935
sosparams->pszResultModel = strdup(request->ParamValues[i]);
2975
sosparams->pszResultModel = msStrdup(request->ParamValues[i]);
2936
2976
else if (strcasecmp(request->ParamNames[i], "RESPONSEFORMAT") == 0)
2937
sosparams->pszResponseFormat = strdup(request->ParamValues[i]);
2977
sosparams->pszResponseFormat = msStrdup(request->ParamValues[i]);
2938
2978
else if (strcasecmp(request->ParamNames[i], "RESPONSEMODE") == 0)
2939
sosparams->pszResponseMode = strdup(request->ParamValues[i]);
2979
sosparams->pszResponseMode = msStrdup(request->ParamValues[i]);
2940
2980
else if (strcasecmp(request->ParamNames[i], "BBOX") == 0)
2941
sosparams->pszBBox = strdup(request->ParamValues[i]);
2981
sosparams->pszBBox = msStrdup(request->ParamValues[i]);
2942
2982
else if (strcasecmp(request->ParamNames[i], "SRSNAME") == 0)
2943
sosparams->pszSrsName = strdup(request->ParamValues[i]);
2983
sosparams->pszSrsName = msStrdup(request->ParamValues[i]);
2944
2984
else if (strcasecmp(request->ParamNames[i], "FEATUREOFINTEREST") == 0)
2945
sosparams->pszFeatureOfInterest = strdup(request->ParamValues[i]);
2985
sosparams->pszFeatureOfInterest = msStrdup(request->ParamValues[i]);