gpt4 book ai didi

java - 为什么在创建 CoordinateReferenceSystem 时会收到 NoSuchAuthorityCodeException?

转载 作者:行者123 更新时间:2023-12-02 01:37:36 26 4
gpt4 key购买 nike

我有一个 EPSG:3857 格式的坐标,需要将其转换为 EPSG:4326。对于转换,我使用 geotools。当查找我能找到的每个示例时,但我似乎得到了一个没有在任何地方解释的异常。

这就是我尝试做的事情。

    private CoordinateReferenceSystem sourceCRS;
private CoordinateReferenceSystem targetCRS;

private GeoCoordinate transform(GeoCoordinate geoCoordinate)
throws FactoryException,
TransformException {
CRSAuthorityFactory factory = CRS.getAuthorityFactory(true);
this.sourceCRS = factory.createCoordinateReferenceSystem("EPSG:3857");
this.targetCRS = factory.createCoordinateReferenceSystem("EPSG:4326");

// Or i try to use the CRS directly, that does not change anything

// this.targetCRS = CRS.decode("EPSG:4326");
// this.sourceCRS = CRS.decode("EPSG:3857");

MathTransform transform = CRS.findMathTransform(this.sourceCRS, this.targetCRS, false);
GeometryFactory geometryFactory = new GeometryFactory(new PrecisionModel(), 4326);
Point point =
geometryFactory.createPoint(new Coordinate(geoCoordinate.getLongitude(), geoCoordinate.getLatitude()));
Point targetPoint = (Point) JTS.transform(point, transform);
return new GeoCoordinate(targetPoint.getX(), targetPoint.getY());
}

执行此代码时,我总是遇到以下异常:

org.opengis.referencing.NoSuchAuthorityCodeException: No code "EPSG:3857" from authority "EPSG" found for object of type "EngineeringCRS".

尝试创建 sourceCRS 时抛出异常。

如果有人能告诉我我在这里做错了什么,我将非常感激。

最佳答案

来自 Oscar Fonts 的回答:http://osgeo-org.1560.x6.nabble.com/Facing-NoSuchAuthorityCodeException-problem-when-deployed-GeoTools-on-server-td4885362.html

To decode a CRS code, you need access to the EPSG database, which it 
seems it's not present.

* Make sure you add gt-epsg-hsql in your project, and its
depencencies, if any (you could use other EPSG factories as well, but
that's the most usual).
* To see what factories are available, you can iterate through
ReferencingFactoryFinder.getCRSAuthoriyFactories. See if
ThreadedEpsgHsqlFactory is there.
* Better use CRS.decode("EPSG:4326"), which will loop through all
available factories, and is a more compact code.

Hope this helps.

关于java - 为什么在创建 CoordinateReferenceSystem 时会收到 NoSuchAuthorityCodeException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54998548/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com