public async Task <ArcGISAreaLengthResponse> CalculateAreasAndLengths(string token, string sr, EsriGeometryCalcType calculationType, EsriAreaUnit areaUnit, PolygonGeometry geometry, string lengthUnit = "") { string queryUrl = $"{getRestServiceEndpoint()}/areasAndLengths"; var areaUnitParam = new ArcGISCalculateAreasAndLengthAreaParam(areaUnit); PolygonGeometry[] polygonPayload = { geometry }; var encodedContent = new ArcGISEncodedContent { { "f", responseFormat }, { "token", token }, { "sr", sr }, { "lengthUnit", lengthUnit }, { "calculationType", calculationType.ToString() }, { "areaUnit", JsonConvert.SerializeObject(areaUnitParam).TrimJsonRequest() }, { "polygons", JsonConvert.SerializeObject(polygonPayload).TrimJsonRequest() } }; var resp = await ArcGISHttpClient.PostAsync(queryUrl, encodedContent.ToStringUrlEncodedContent()); var respStr = await resp.Content.ReadAsStringAsync(); if (resp.StatusCode != HttpStatusCode.OK) { throw new ArcGISInvalidResponseException($"Unsuccessfull. \n" + $"Response Code: {resp.StatusCode}\n" + $"Response: {respStr}" + $"Query String: {queryUrl}"); } var model = JsonConvert.DeserializeObject <ArcGISCalculateAreasAndLengthsResponse>(respStr); if (model.areas.Count > 1 || model.lengths.Count > 1) { throw new ArcGISUnexpectedResponseException("Returned response count greater than 1 or equal to 0"); } return(new ArcGISAreaLengthResponse(model.areas.FirstOrDefault(), model.lengths.FirstOrDefault())); }
public ArcGISCalculateAreasAndLengthAreaParam(EsriAreaUnit areaUnit) { this.areaUnit = areaUnit.ToString(); }