|
9 | 9 | import com.beust.jcommander.Parameter; |
10 | 10 | import com.beust.jcommander.ParameterDescription; |
11 | 11 | import com.beust.jcommander.ParameterException; |
| 12 | +import com.google.common.collect.Iterables; |
12 | 13 | import com.google.common.collect.Iterators; |
13 | 14 | import com.google.common.collect.PeekingIterator; |
14 | 15 | import org.slf4j.Logger; |
@@ -266,26 +267,34 @@ private static int writeStationProfileFeatureCollection(FeatureDatasetPoint data |
266 | 267 | List<Variable> extraVariables = new ArrayList<>(); |
267 | 268 | List<StationFeature> flattenFeatures = new ArrayList<>(); |
268 | 269 |
|
| 270 | + int countProfiles = 0; |
| 271 | + int name_strlen = 0; |
269 | 272 | for (DsgFeatureCollection dsgFeatures : dataset.getPointFeatureCollectionList()) { |
270 | 273 | extraVariables.addAll(dsgFeatures.getExtraVariables()); |
271 | 274 | flattenFeatures.addAll(((StationProfileFeatureCollection) dsgFeatures).getStationFeatures()); |
| 275 | + for (StationProfileFeature station : (StationProfileFeatureCollection) dsgFeatures) { |
| 276 | + name_strlen = Math.max(name_strlen, station.getName().length()); |
| 277 | + for (ProfileFeature fp : station) { |
| 278 | + countProfiles += Iterables.size((station)); |
| 279 | + } |
| 280 | + } |
272 | 281 | } |
273 | 282 |
|
274 | 283 | cfWriter.setExtraVariables(extraVariables); |
275 | 284 | cfWriter.setStations(flattenFeatures); |
276 | | - cfWriter.setFeatureAuxInfo(0, 0); |
| 285 | + cfWriter.setFeatureAuxInfo(countProfiles, name_strlen); |
277 | 286 | cfWriter.writeHeader(flattenFeatures); |
278 | 287 |
|
279 | 288 | int count = 0; |
280 | 289 | for (DsgFeatureCollection featureCollection : dataset.getPointFeatureCollectionList()) { |
281 | 290 | cfWriter.resetObsIndex(); |
282 | | - for (StationFeature station : ((StationProfileFeatureCollection) featureCollection).getStationFeatures()) { |
283 | | - StationProfileFeature spf = (StationProfileFeature) station; |
| 291 | + for (StationProfileFeature station : (StationProfileFeatureCollection) featureCollection) { |
284 | 292 | cfWriter.resetProfileIndex(); |
285 | | - for (ProfileFeature pf : spf) { |
| 293 | + station.resetIteration(); |
| 294 | + for (ProfileFeature pf : station) { |
286 | 295 | if (pf.getTime() == null) |
287 | 296 | continue; // assume this means its an "incomplete multidimensional" |
288 | | - count += cfWriter.writeProfile(spf, pf); |
| 297 | + count += cfWriter.writeProfile(station, pf); |
289 | 298 | if (debug && count % 100 == 0) |
290 | 299 | logger.debug(String.format("%d ", count)); |
291 | 300 | if (debug && count % 1000 == 0) |
|
0 commit comments