【问题标题】:Converting Apache Sedona SQL example to java将 Apache Sedona SQL 示例转换为 Java
【发布时间】:2022-11-24 02:54:15
【问题描述】:

我正在尝试将 Apache Sedona 示例代码从 scala 转换为 java,但我被困在 SQL 示例的第 128 行,它说:

assert(boundary.take(1)(0).get(0)==geometryFactory.createPolygon(coordinates))

我试图理解它,但我不熟悉 scala 语法。有人可以帮我获得一个 java 等效命令吗?

【问题讨论】:

    标签: java scala apache-sedona


    【解决方案1】:

    boundary.take(1) 从 Spark DataFrame 中获取行数组。

    以下代码对我有用:

    GeometryFactory geomFactory = new GeometryFactory();
    Point expectedGeom = geomFactory.createPoint(new Coordinate(-88.331492, 32.324142));
    Geometry actualGeom = spatialDf.javaRDD().take(1).get(0).<Geometry>getAs(0);
    assert(actualGeom.equals(expectedGeom));
    

    请注意,您不能使用 == 将多边形与几何图形进行比较,尽管您认为它们是相同的多边形。这是因为它们在技术上具有不同的类型 Polygon 和 Geometry。请使用equals方法进行比较。

    【讨论】:

    • 我以前试过。 IDE提示错误“表达式的类型必须是数组类型但它解析为对象”。我也尝试过使用 (((Row[])boundary.take(1))[0].get(0) == geometryFactory.createPolygon(coordinates))) 进行转换。代码运行,但断言返回 false,所以我认为它没有返回预期的结果。
    • @DennisSavio 请查看更新后的答案。它应该能够解决你的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多