在网上找了一些Geotools读取tiff的文章,从官方也下载的geotools-21.1的程序包,可是运行以下代码出错
import java.io.File; import org.geotools.coverage.grid.GridCoverage2D; import org.geotools.gce.geotiff.GeoTiffReader; import org.geotools.geometry.Envelope2D; import org.opengis.referencing.crs.CoordinateReferenceSystem; public class ImageExt { public static void main(String[] args) { GetImageExt("E:\\database\\overview\\\\J46\\J46D001001.tif"); } public static String GetImageExt(String strImageUrl){ String strExtent = ""; try { String ImageUrl=strImageUrl.replace("\\", "\\\\");; File ImageFile=new File(ImageUrl); GeoTiffReader reader=new GeoTiffReader(ImageFile); GridCoverage2D coverage = reader.read(null); CoordinateReferenceSystem crs = coverage.getCoordinateReferenceSystem2D(); Envelope2D coverageEnvelope = coverage.getEnvelope2D(); double coverageMinX = coverageEnvelope.getBounds().getMinX(); double coverageMaxX = coverageEnvelope.getBounds().getMaxX(); double coverageMinY = coverageEnvelope.getBounds().getMinY(); double coverageMaxY = coverageEnvelope.getBounds().getMaxY(); } catch (Exception e) { // TODO: handle exception } System.out.println(coverageMinX); return strExtent; } }
报错出如下
Exception in thread "main" java.lang.NoClassDefFoundError:
javax/media/jai/ImageLayout at
zy3dms.ImageExt.GetImageExt(ImageExt.java:18) at
zy3dms.ImageExt.main(ImageExt.java:11) Caused by:
java.lang.ClassNotFoundException: javax.media.jai.ImageLayout at
java.net.URLClassLoader.findClass(URLClassLoader.java:381) at
java.lang.ClassLoader.loadClass(ClassLoader.java:424) at
sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at
java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 2 more
网上也找了一些个解决办法,不尽人意。
经过分析是缺少底层的依赖包,
解决办法最后找到,直接使用maven把依赖下载出来,此处把pom文件贴出来:
<properties>
<geotools.version>21.1</geotools.version>
</properties><dependencies>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-shapefile</artifactId>
<version>${geotools.version}</version>
</dependency>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-swing</artifactId>
<version>${geotools.version}</version>
</dependency>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-epsg-hsql</artifactId>
<version>${geotools.version}</version>
</dependency>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-geotiff</artifactId>
<version>${geotools.version}</version>
</dependency>
</dependencies>
geotools下载的mvn服务器如下
<repositories>
<repository>
<id>alimaven</id>
<name>Maven Aliyun Mirror</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>maven2-repository.dev.java.net</id>
<name>Java.net repository</name>
<url>http://download.java.net/maven/2</url>
</repository>
<repository>
<id>osgeo</id>
<name>Open Source Geospatial Foundation Repository</name>
<url>http://download.osgeo.org/webdav/geotools/</url>
</repository>
<repository>
<snapshots>
<enabled>true</enabled>
</snapshots>
<id>boundless</id>
<name>Boundless Maven Repository</name>
<url>http://repo.boundlessgeo.com/main</url>
</repository>
</repositories>
好了,问题就这样解决了,希望对大家有帮助