45 JSONObject axes=covjson.getJSONObject(
"domain").getJSONObject(
"axes");
46 Integer minX=Integer.MAX_VALUE;
48 Integer minY=Integer.MAX_VALUE;
50 Integer minZ=Integer.MAX_VALUE;
52 Integer minT=Integer.MAX_VALUE;
54 List<DimensionNameType> axestypes=
new LinkedList<DimensionNameType>();
55 List<Long> mins=
new LinkedList<Long>();
56 List<Long> maxs=
new LinkedList<Long>();
57 if(axes.getJSONObject(
"x").has(
"values")) {
58 JSONArray xvalues=axes.getJSONObject(
"x").getJSONArray(
"values");
59 for(
int i=0;i<xvalues.length();i++) {
61 if(xvalues.getInt(i)<minX) {
62 minX=xvalues.getInt(i);
64 if(xvalues.getInt(i)>maxX) {
65 maxX=xvalues.getInt(i);
68 System.out.println(minX+
" - "+Long.valueOf(minX));
69 mins.add(Long.valueOf(minX));
70 maxs.add(Long.valueOf(maxX));
71 axestypes.add(DimensionNameType.COLUMN);
72 }
else if(axes.getJSONObject(
"x").has(
"start") && axes.getJSONObject(
"x").has(
"stop")
73 && axes.getJSONObject(
"x").has(
"num")) {
74 mins.add(axes.getJSONObject(
"x").getLong(
"start"));
75 maxs.add(axes.getJSONObject(
"x").getLong(
"stop"));
76 axestypes.add(DimensionNameType.COLUMN);
78 System.out.println(mins);
79 System.out.println(maxs);
80 if(axes.getJSONObject(
"y").has(
"values")) {
81 JSONArray yvalues=axes.getJSONObject(
"y").getJSONArray(
"values");
82 for(
int i=0;i<yvalues.length();i++) {
83 if(yvalues.getInt(i)<minY) {
84 minY=yvalues.getInt(i);
86 if(yvalues.getInt(i)>maxY) {
87 maxY=yvalues.getInt(i);
90 mins.add(Long.valueOf(minY).longValue());
91 maxs.add(Long.valueOf(maxY).longValue());
92 axestypes.add(DimensionNameType.ROW);
93 }
else if(axes.getJSONObject(
"y").has(
"start") && axes.getJSONObject(
"y").has(
"stop")
94 && axes.getJSONObject(
"y").has(
"num")) {
95 mins.add(axes.getJSONObject(
"y").getLong(
"start"));
96 maxs.add(axes.getJSONObject(
"y").getLong(
"stop"));
97 axestypes.add(DimensionNameType.ROW);
99 System.out.println(mins);
100 System.out.println(maxs);
102 if(axes.getJSONObject(
"z").has(
"values")) {
103 JSONArray zvalues=axes.getJSONObject(
"z").getJSONArray(
"values");
104 for(
int i=0;i<zvalues.length();i++) {
105 if(zvalues.getInt(i)<minZ) {
106 minZ=zvalues.getInt(i);
108 if(zvalues.getInt(i)>maxZ) {
109 maxZ=zvalues.getInt(i);
112 mins.add(Long.valueOf(minZ).longValue());
113 maxs.add(Long.valueOf(maxZ).longValue());
114 axestypes.add(DimensionNameType.VERTICAL);
115 }
else if(axes.getJSONObject(
"z").has(
"start") && axes.getJSONObject(
"z").has(
"stop")
116 && axes.getJSONObject(
"z").has(
"num")) {
117 mins.add(axes.getJSONObject(
"z").getLong(
"start"));
118 maxs.add(axes.getJSONObject(
"z").getLong(
"stop"));
119 axestypes.add(DimensionNameType.VERTICAL);
122 System.out.println(mins);
123 System.out.println(maxs);
151 CoordinateReferenceSystem sys=
null;
152 MathTransform transform;
153 if(covjson.getJSONObject(
"domain").has(
"referencing")) {
154 JSONArray refs=covjson.getJSONObject(
"domain").getJSONArray(
"referencing");
155 for(
int i=0;i<refs.length();i++) {
156 JSONObject ref=refs.getJSONObject(i);
157 if(ref.getJSONObject(
"system").getString(
"type").equals(
"GeographicCRS")) {
158 epsg=ref.getJSONObject(
"system").getString(
"id").substring(ref.getJSONObject(
"system").getString(
"id").lastIndexOf(
'/')+1);
175 System.out.println(mins);
176 System.out.println(maxs);
177 System.out.println(
"DimensionNameType: "+axestypes);
178 System.out.println(
"Mins: "+mins);
179 System.out.println(
"Maxs: "+maxs);
180 GridExtent extent=
new GridExtent(axestypes.toArray(
new DimensionNameType[0]),
181 ArrayUtils.toPrimitive(mins.toArray(
new Long[0])),
182 ArrayUtils.toPrimitive(maxs.toArray(
new Long[0])),
true);
183 Envelope2D gridenv=
new Envelope2D();
184 GridGeometry gridgeom=
null;
186 gridgeom=
new GridGeometry(extent,
null,
null,sys);
188 gridgeom=
new GridGeometry(extent, gridenv);
191 Map<String,List<Category>> categories=
new TreeMap<>();
192 for(String key:covjson.getJSONObject(
"ranges").keySet()) {
193 if(!categories.containsKey(key)) {
194 categories.put(key,
new LinkedList<Category>());
196 if(
"NdArray".equals(covjson.getJSONObject(
"ranges").getJSONObject(key).getString(
"type"))) {
197 JSONArray values=covjson.getJSONObject(
"ranges").getJSONObject(key).getJSONArray(
"values");
198 Integer[] intrange=
new Integer[values.length()];
199 for (
int i = 0; i < values.length(); i++) {
200 intrange[i] = values.optInt(i);
202 org.apache.sis.measure.NumberRange<?> range;
203 SampleDimension dimension;
230 List<SampleDimension> dimensions=
new LinkedList<SampleDimension>();
231 for(String key:covjson.getJSONObject(
"parameters").keySet()) {
232 GenericName name=Names.createGenericName(
"http://www.semgis.de/geodata#",
"#",
new String[] {key});
233 if(categories.containsKey(key)) {
234 dimensions.add(
new SampleDimension(name, Integer.valueOf(
"0"), categories.get(key)));
236 dimensions.add(
new SampleDimension(name, 0,
new LinkedList<Category>()));
239 System.out.println(dimensions);
245 BufferedGridCoverage coverage =
new BufferedGridCoverage(gridgeom,
246 dimensions, DataBuffer.TYPE_INT);
247 System.out.println(coverage);
248 ImageRenderer renderer=
new ImageRenderer(coverage,extent);