将Apache Sedona SQL示例从Scala转Java:求断言代码的Java等价实现
Apache Sedona Scala转Java:SQL示例第128行等价代码
先拆解原Scala代码的逻辑:
boundary.take(1):从boundary这个Dataset/DataFrame中获取第一行数据,返回仅含一行的Dataset(0):取出这个单行Dataset中的第一个元素(即Row对象).get(0):获取该行的第一个字段值- 最后断言该字段值与
geometryFactory.createPolygon(coordinates)创建的多边形几何对象相等
对应的Java等价代码:
// 获取第一行数据,take(1)返回Row数组,取索引0的元素 Row firstRow = boundary.take(1)[0]; // 获取该行第一个字段,转换为Geometry类型(适配Sedona几何对象类型) Geometry retrievedGeometry = (Geometry) firstRow.get(0); // 创建预期的多边形 Geometry expectedPolygon = geometryFactory.createPolygon(coordinates); // 断言两个几何对象精确相等(推荐用OGC标准的equalsExact方法) assert retrievedGeometry.equalsExact(expectedPolygon); // 若项目依赖JUnit,也可以用更规范的断言方式 // org.junit.Assert.assertEquals(expectedPolygon, retrievedGeometry);
注意:Java中take(1)返回Row[]数组,需通过索引[0]直接获取第一行;几何对象的相等判断优先使用equalsExact方法,能更精准匹配OGC几何对象的定义。
内容的提问来源于stack exchange,提问作者Dennis Savio
相关产品推荐
相关产品推荐

