-
Notifications
You must be signed in to change notification settings - Fork 0
/
Extensions.cs
70 lines (62 loc) · 2.65 KB
/
Extensions.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
//-----------------------------------------------------------------------
// <copyright file="Extensions.cs" company="Studio A&T s.r.l.">
// Copyright (c) Studio AT s.r.l. All rights reserved.
// </copyright>
// <author>Nicogis</author>
//-----------------------------------------------------------------------
namespace Studioat.ArcGis.Soe.Rest
{
using System.Diagnostics.CodeAnalysis;
using System.Text;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.SOESupport;
[SuppressMessage("StyleCop.CSharp.DocumentationRules", "SA1650:ElementDocumentationMustBeSpelledCorrectly", Justification = "-")]
/// <summary>
/// class for extension
/// </summary>
internal static class Extensions
{
/// <summary>
/// return the json in byte UTF8 from a object jsonObject
/// </summary>
/// <param name="jsonObject">obejct Json Object</param>
/// <returns>json in byte UTF8</returns>
internal static byte[] JsonByte(this JsonObject jsonObject)
{
string json = jsonObject.ToJson();
return Encoding.UTF8.GetBytes(json);
}
/// <summary>
/// Convert any Json geometry to its corresponding IGeometry
/// </summary>
/// <param name="jsonGeom">The Json geometry</param>
/// <returns>Converted IGeometry</returns>
internal static IGeometry ConvertAnyJsonGeom(this JsonObject jsonGeom)
{
object[] geomParts;
if (jsonGeom.TryGetArray("rings", out geomParts))
{
return Conversion.ToGeometry(jsonGeom, esriGeometryType.esriGeometryPolygon);
}
if (jsonGeom.TryGetArray("paths", out geomParts))
{
return Conversion.ToGeometry(jsonGeom, esriGeometryType.esriGeometryPolyline);
}
if (jsonGeom.TryGetArray("points", out geomParts))
{
return Conversion.ToGeometry(jsonGeom, esriGeometryType.esriGeometryMultipoint);
}
double? coordX;
if (jsonGeom.TryGetAsDouble("x", out coordX))
{
return Conversion.ToGeometry(jsonGeom, esriGeometryType.esriGeometryPoint);
}
double? minX;
if (jsonGeom.TryGetAsDouble("xmin", out minX))
{
return Conversion.ToGeometry(jsonGeom, esriGeometryType.esriGeometryEnvelope);
}
return null;
}
}
}