【发布时间】:2015-01-16 22:06:10
【问题描述】:
我需要将 GPS 坐标(纬度和经度)转换为阿尔伯斯等面积投影。有人可以帮助我使用 GeoTools Java 库进行此转换吗?
我找不到任何示例或文档来帮助我做到这一点。我正在尝试做类似的事情:
// set a global hint to force GeoTools to use x/y order (longitute first)
System.setProperty("org.geotools.referencing.forceXY", "true");
double lat = 43.96499314;
double lng = 2.33656753;
// FACTORIES
Hints hints = new Hints(Hints.CRS, DefaultGeographicCRS.WGS84);
PositionFactory positionFactory = GeometryFactoryFinder.getPositionFactory(hints);
GeometryFactory geometryFactory = GeometryFactoryFinder.getGeometryFactory(hints);
PrimitiveFactory primitiveFactory = GeometryFactoryFinder.getPrimitiveFactory(hints);
AggregateFactory aggregateFactory = GeometryFactoryFinder.getAggregateFactory(hints);
// POINTS
WKTParser parser = new WKTParser(geometryFactory, primitiveFactory, positionFactory, aggregateFactory);
Point point = (Point) parser.parse("POINT(" + lng + " " + lat + ")");
CRSAuthorityFactory factory = CRS.getAuthorityFactory(true);
CoordinateReferenceSystem latLngCRS = DefaultGeographicCRS.WGS84;
CoordinateReferenceSystem albersCRS = factory.createCoordinateReferenceSystem("EPSG:3005");
MathTransform transform = CRS.findMathTransform(latLngCRS, albersCRS, false);
DirectPosition latLngDirectPosition = point.getDirectPosition();
DirectPosition albersDirectPosition = transform.transform(latLngDirectPosition, null);
System.out.println("latLngDirectPosition: " + Arrays.toString(latLngDirectPosition.getCoordinate()));
System.out.println("albersDirectPosition: " + Arrays.toString(albersDirectPosition.getCoordinate()));
我得到了转换,但不知道它是否正确。
得到的值为: Lng/Lat [-124.453125, 54.140625] => 阿尔伯斯 [1100811.6154403698, 1016407.2018336256]
谁能帮帮我? 谢谢!
【问题讨论】:
标签: java coordinate-systems geotools