Java GeoTools Maven问题-导入混乱
我正在遵循一个发布的解决方案,它使用Java将平方度转换为平方米。我对maven导入有问题 具体地说,在GeoTools Maven快速启动之后,我仍然发现Java GeoTools Maven问题-导入混乱,java,maven,geotools,opengis,Java,Maven,Geotools,Opengis,我正在遵循一个发布的解决方案,它使用Java将平方度转换为平方米。我对maven导入有问题 具体地说,在GeoTools Maven快速启动之后,我仍然发现无法解决org.GeoTools.measure.measure.valueOf()和org.opengis.geometry.coordination.Polygon.getCentroid()的方法错误。奇怪的是,对于前者,我发现它使用了javax.measure.measure,但这两种方法我都没有用 IDE视图: 这是我的档案: p
无法解决org.GeoTools.measure.measure.valueOf()和org.opengis.geometry.coordination.Polygon.getCentroid()的方法错误。奇怪的是,对于前者,我发现它使用了javax.measure.measure
,但这两种方法我都没有用
IDE视图:
这是我的档案:
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.myapp.me</groupId>
<artifactId>my-app</artifactId>
<packaging>war</packaging>
<version>1.0.0</version>
<name>my app code</name>
<parent>
<groupId>com.myapp.me</groupId>
<artifactId>my-app-root</artifactId>
<version>1.0.0</version>
</parent>
<prerequisites>
<maven>3</maven>
</prerequisites>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<geotools.version>21.0</geotools.version>
</properties>
<organization>
<name>my-org</name>
<url>myurl</url>
</organization>
<repositories>
<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>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<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>
</dependencies>
</project>
4.0.0
com.myapp.me
如果您正在查看用于较旧版本GeoTools的代码,您可以随时查看,以了解使用较新版本的库需要进行哪些更改
您需要此依赖项:
<dependency>
<groupId>systems.uom</groupId>
<artifactId>systems-common-java8</artifactId>
<version>0.7.2</version>
</dependency>
系统单位
systems-common-java8
0.7.2
包名称已更改,导致在升级时进行一些常见搜索和替换:
搜索javax.measure.unit.unit替换javax.measure.unit
搜索转换异常替换不可通约异常
这是一个选中的异常,在GeoTools库中发现该异常的区域中,我们现在返回一个IllegalArgument异常
搜索转换器==UnitConverter.IDENTITY替换转换器.isIdentity()
搜索javax.measure.unit.NonSI替换导入si.uom.NonSI
搜索javax.measure.unit.SI替换导入SI.uom.SI
搜索SI.METER替换SI.METER
搜索javax.measure.converter.UnitConverter替换javax.measure.UnitConverter
搜索javax.measure.unit.UnitFormat替换导入javax.measure.format.UnitFormat
搜索单元.1替换抽象单元.1
搜索无量纲.UNIT替换AbstractUnit.ONE
搜索单位.valueOf(unitString)替换单位.parseUnit(unitString)
以及使用Quanties:
使用单位
如果以前使用了代码中的单位,则
单位转换或简单地保持单位平直。你可能有
代码如下:
Measure<Double, Length> dist = Measure.valueOf(distance, SI.METER);
System.out.println(dist.doubleValue(SI.KILOMETER) + " Km");
System.out.println(dist.doubleValue(NonSI.MILE) + " miles");
Measure dist=Measure.valueOf(距离,SI.METER);
系统输出打印LN(距离双值(SI.千米)+“千米”);
系统输出打印LN(距离双值(非西英里)+“英里”);
您将发现它不再编译。应将其转换为使用
数量等级
import javax.measure.Quantity;
import javax.measure.quantity.Length;
import si.uom.SI;
import systems.uom.common.USCustomary;
import tec.uom.se.quantity.Quantities;
import tec.uom.se.unit.MetricPrefix;
Quantity<Length> dist = Quantities.getQuantity(distance, SI.METRE);
System.out.println(dist.to(MetricPrefix.KILO(SI.METRE)).getValue() + " Km");
System.out.println(dist.to(USCustomary.MILE) + " miles");
import javax.measure.Quantity;
导入javax.measure.quantity.Length;
输入si.uom.si;
导入systems.uom.common.USCustomary;
进口tec.uom.se.quantity.quantity;
导入tec.uom.se.unit.MetricPrefix;
数量距离=数量。获取数量(距离,SI.米);
System.out.println(dist.to(MetricPrefix.KILO(SI.meter)).getValue()+“Km”);
系统输出打印LN(距离到(USCustomary.MILE)+“miles”);
如果您查看的代码是针对较旧版本的GeoTools的,您可以随时查看,以查看使用较新版本的库需要进行哪些更改
您需要此依赖项:
<dependency>
<groupId>systems.uom</groupId>
<artifactId>systems-common-java8</artifactId>
<version>0.7.2</version>
</dependency>
系统单位
systems-common-java8
0.7.2
包名称已更改,导致在升级时进行一些常见搜索和替换:
搜索javax.measure.unit.unit替换javax.measure.unit
搜索转换异常替换不可通约异常
这是一个选中的异常,在GeoTools库中发现该异常的区域中,我们现在返回一个IllegalArgument异常
搜索转换器==UnitConverter.IDENTITY替换转换器.isIdentity()
搜索javax.measure.unit.NonSI替换导入si.uom.NonSI
搜索javax.measure.unit.SI替换导入SI.uom.SI
搜索SI.METER替换SI.METER
搜索javax.measure.converter.UnitConverter替换javax.measure.UnitConverter
搜索javax.measure.unit.UnitFormat替换导入javax.measure.format.UnitFormat
搜索单元.1替换抽象单元.1
搜索无量纲.UNIT替换AbstractUnit.ONE
搜索单位.valueOf(unitString)替换单位.parseUnit(unitString)
以及使用Quanties:
使用单位
如果以前使用了代码中的单位,则
单位转换或简单地保持单位平直。你可能有
代码如下:
Measure<Double, Length> dist = Measure.valueOf(distance, SI.METER);
System.out.println(dist.doubleValue(SI.KILOMETER) + " Km");
System.out.println(dist.doubleValue(NonSI.MILE) + " miles");
Measure dist=Measure.valueOf(距离,SI.METER);
系统输出打印LN(距离双值(SI.千米)+“千米”);
系统输出打印LN(距离双值(非西英里)+“英里”);
您将发现它不再编译。应将其转换为使用
数量等级
import javax.measure.Quantity;
import javax.measure.quantity.Length;
import si.uom.SI;
import systems.uom.common.USCustomary;
import tec.uom.se.quantity.Quantities;
import tec.uom.se.unit.MetricPrefix;
Quantity<Length> dist = Quantities.getQuantity(distance, SI.METRE);
System.out.println(dist.to(MetricPrefix.KILO(SI.METRE)).getValue() + " Km");
System.out.println(dist.to(USCustomary.MILE) + " miles");
import javax.measure.Quantity;
导入javax.measure.quantity.Length;
输入si.uom.si;
导入systems.uom.common.USCustomary;
进口tec.uom.se.quantity.quantity;
导入tec.uom.se.unit.MetricPrefix;
数量距离=数量。获取数量(距离,SI.米);
System.out.println(dist.to(MetricPrefix.KILO(SI.meter)).getValue()+“Km”);
系统输出打印LN(距离到(USCustomary.MILE)+“miles”);
您提到的答案说它依赖于javax
。您为javax.measure
链接的导入说明有一个更新的版本。你检查过了吗?请查看我答案的底部以获取更新。由于某种原因,它找不到javax
Measure依赖关系。@realponsust我可能已经用Quantity
解决了它。我在文件里漏掉了。我会回来的,谢谢!是的,任何感兴趣的人都可以使用Quantity类。查看geotools升级常见问题解答,了解版本21的类更改。您提到的答案说它依赖于javax
。您为javax.measure
链接的导入说明有一个更新的版本。你检查过了吗?请查看我答案的底部以获取更新。由于某种原因,它找不到javax
Measure依赖项