प्रारंभ नहीं किया जा सका मैंने हाल ही में जियोटूल के साथ अपना पहला कार्यक्रम शुरू किया जिसमें मैं जेडी-जावा उन्नत इमेजिंग 1_1_2_01 का उपयोग जेडीके 1_7 के साथ भी कर रहा था। यह ठीक काम करता है जब तक कि मैंने जियोटीफ जार जोड़ा। मैं निम्नलिखित त्रुटि पाईjava.lang.NoClassDefFoundError: क्लास javax.media.jai.JAI
Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class javax.media.jai.JAI at org.geotools.gce.geotiff.GeoTiffReader.read(GeoTiffReader.java:607) at com.rgb.PixelExtractor.extract(PixelExtractor.java:55) at com.rgb.RGBSpliter.main(RGBSpliter.java:136)
कोड
public void extract(File f, String name, String date) throws Exception {
ParameterValue<OverviewPolicy> policy = AbstractGridFormat.OVERVIEW_POLICY
.createValue();
policy.setValue(OverviewPolicy.IGNORE);
// this will basically read 4 tiles worth of data at once from the disk...
ParameterValue<String> gridsize = AbstractGridFormat.SUGGESTED_TILE_SIZE.createValue();
//gridsize.setValue(512 * 4 + "," + 512);
// Setting read type: use JAI ImageRead (true) or ImageReaders read methods (false)
ParameterValue<Boolean> useJaiRead = AbstractGridFormat.USE_JAI_IMAGEREAD.createValue();
useJaiRead.setValue(true);
//reader.read(new GeneralParameterValue[] { policy, gridsize, useJaiRead });
// The line that throws error
GridCoverage2D image
= new GeoTiffReader(f).read(new GeneralParameterValue[]{policy, gridsize, useJaiRead});
Rectangle2D bounds2D = image.getEnvelope2D().getBounds2D();
bounds2D.getCenterX();
// calculate zoom level for the image
GridGeometry2D geometry = image.getGridGeometry();
BufferedImage img = ImageIO.read(f);
// ColorModel colorModel = img.getColorModel(
WritableRaster raster = img.getRaster();
int numBands = raster.getNumBands();
int w = img.getWidth();
int h = img.getHeight();
outer:
for (int i = 0; i < w; i++) {//width...
for (int j = 0; j < h; j++) {
double[] latlon = geo(geometry, i, j);
double lat = latlon[0];
double lon = latlon[1];
Double s = 0d;
String originalBands = "";
for (int k = 0; k < numBands; k++) {
double d = raster.getSampleDouble(i, j, k);
originalBands += d + ",";
s += d;
}
originalBands = originalBands.substring(0, originalBands.length() - 1);
if (s.compareTo(0d) == 0) {
continue;
}
String geoHash = GeohashUtils.encodeLatLon(lat, lon);
//here do something with the bands, lat, long, geohash, etc....
}
}
}
private static double[] geo(GridGeometry2D geometry, int x, int y) throws Exception {
//int zoomlevel = 1;
Envelope2D pixelEnvelop = geometry.gridToWorld(new GridEnvelope2D(x, y, 1, 1));
// pixelEnvelop.getCoordinateReferenceSystem().getName().getCodeSpace();
return new double[]{pixelEnvelop.getCenterY(), pixelEnvelop.getCenterX()};
}
}
JDK जार नीचे के रूप में है
अन्य जार
मैं भी GeoTools जार के लिए classpath चर जोड़े
संपादित करें:
मेरे जय GeoTools एकता के बिना काम कर रहा है, लेकिन जब मैं gt-geotiff-14.4.jar
जोड़ने यह JAI-core-1.1.3.jar
जो विरोध करता है जोड़ने की कोशिश मेरे जेडीके 1.7 में jai-core.jar
के साथ। इसलिए मैंने JAI-core-1.1.3.jar
और संबंधित जार हटा दिए लेकिन फिर भी यह मुझे एक ही त्रुटि देता है।
क्या आप पूरा स्टैकट्र्रेस जोड़ सकते हैं? – Jens
इसे प्रश्न की शुरुआत में ऊपर कॉपी किया गया है। लेकिन मुझे जवाब मिला कि जार विवादित थे। तो अधिक उत्तरों की कोई ज़रूरत नहीं है। –