158 {
159 int pc = roi.PointsD.Count;
160 if (roi.PointsD.Last() != roi.PointsD.First())
161 pc = roi.PointsD.Count + 1;
162 GeoJsonPolygon g = new GeoJsonPolygon();
163 double[][][] dds = new double[1][][];
164 double[][] ds = new double[pc][];
165 for (int i = 0; i < pc; i++)
166 {
167 if (i >= roi.PointsD.Count)
168 {
169 PointD po = b.ToImageSpace(roi.PointsD[0]);
170 ds[i] = new double[2] { (int)po.X, (int)po.Y };
171 }
172 else
173 {
174 PointD po = b.ToImageSpace(roi.PointsD[i]);
175 ds[i] = new double[2] { (int)po.X, (int)po.Y };
176 }
177 }
178
179 dds[0] = ds;
180 g.coordinates = dds;
181 g.type = "Polygon";
182 g.plane = new GeoJsonPlane();
183 g.plane.z = roi.coord.Z;
184 g.plane.c = roi.coord.C;
185 g.plane.t = roi.coord.T;
186 return g;
187 }