【问题标题】:GeoTools: Converting from LAT/LNG to AlbersGeoTools:从 LAT/LNG 转换为 Albers
【发布时间】: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


    【解决方案1】:

    看看:http://docs.geotools.org/latest/userguide/library/referencing/crs.html

    在“寻找数学变换”部分中,有一个涉及 Albers_Conic_Equal_Area 投影的示例。

    您可以使用外部工具的另一个输出来检查您的计算是否正确。这是您可以通过移动地图在线使用的一个: http://spatialreference.org/ref/epsg/nad83-bc-albers/

    【讨论】:

    • 感谢您的回复!我得到了转换,但不知道它是否正确。我更新了我的帖子。
    • 根据另一个工具的输出,您的计算似乎是正确的。我更新了我的答案,以便您接受。
    猜你喜欢
    • 1970-01-01
    • 2023-04-07
    • 2010-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    • 1970-01-01
    相关资源
    最近更新 更多