关于java使用geotools中的GeoTiffReader读取tif图像时报错

在网上找了一些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>

好了,问题就这样解决了,希望对大家有帮助

 

 

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
GeoTools 是一个开源的 Java 库,用于处理地理空间数据和地图的创建、分析和渲染。它提供了一系列的工具和 API,可以轻松地读取、写入和转换各种格式的地理数据。以下是使用 GeoTools 进行基本操作的步骤: 1. 导入 GeoTools 库和相关依赖。 ```java import org.geotools.data.FileDataStore; import org.geotools.data.FileDataStoreFinder; import org.geotools.data.simple.SimpleFeatureCollection; import org.geotools.data.simple.SimpleFeatureIterator; import org.geotools.feature.FeatureIterator; import org.geotools.geometry.jts.JTSFactoryFinder; import org.opengis.feature.simple.SimpleFeature; import org.opengis.geometry.Geometry; ``` 2. 读取地理数据文件。 ```java File file = new File("path/to/data/file.shp"); FileDataStore store = FileDataStoreFinder.getDataStore(file); SimpleFeatureCollection collection = store.getFeatureSource().getFeatures(); ``` 3. 遍历地理数据集合。 ```java SimpleFeatureIterator iterator = collection.features(); try { while (iterator.hasNext()) { SimpleFeature feature = iterator.next(); Geometry geometry = (Geometry) feature.getDefaultGeometry(); // do something with the geometry } } finally { iterator.close(); } ``` 4. 创建新的地理数据。 ```java // create a new point GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(); Point point = geometryFactory.createPoint(new Coordinate(10.0, 20.0)); // create a new feature SimpleFeatureType featureType = DataUtilities.createType("Location", "geometry:Point,name:String"); SimpleFeatureBuilder featureBuilder = new SimpleFeatureBuilder(featureType); featureBuilder.add(point); featureBuilder.add("New Location"); SimpleFeature feature = featureBuilder.buildFeature(null); ``` 这些步骤只是 GeoTools 可以完成的操作的一部分。GeoTools 还提供了许多其他的功能,例如地图渲染、地理分析和地理空间数据库的访问。如需了解更多信息,请访问 GeoTools 的官方网站。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值