From 4c398bb98eb43c59bed807608e2bd84ec772717f Mon Sep 17 00:00:00 2001 From: "Simeon H.K. Fitch" Date: Tue, 5 Nov 2019 16:57:26 -0500 Subject: [PATCH] Added forced truncation of WKT types in Markdown/HTML rendering. --- .../rasterframes/util/DataFrameRenderers.scala | 7 +++++-- .../locationtech/rasterframes/ExtensionMethodSpec.scala | 8 ++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/core/src/main/scala/org/locationtech/rasterframes/util/DataFrameRenderers.scala b/core/src/main/scala/org/locationtech/rasterframes/util/DataFrameRenderers.scala index ae57edcf3..36872332f 100644 --- a/core/src/main/scala/org/locationtech/rasterframes/util/DataFrameRenderers.scala +++ b/core/src/main/scala/org/locationtech/rasterframes/util/DataFrameRenderers.scala @@ -24,12 +24,14 @@ package org.locationtech.rasterframes.util import geotrellis.raster.render.ColorRamps import org.apache.spark.sql.Dataset import org.apache.spark.sql.functions.{base64, concat, concat_ws, length, lit, substring, when} +import org.apache.spark.sql.jts.JTSTypes import org.apache.spark.sql.types.{StringType, StructField} import org.locationtech.rasterframes.expressions.DynamicExtractors import org.locationtech.rasterframes.{rfConfig, rf_render_png, rf_resample} +import org.apache.spark.sql.rf.WithTypeConformity /** - * DataFrame extensiosn for rendering sample content in a number of ways + * DataFrame extension for rendering sample content in a number of ways */ trait DataFrameRenderers { private val truncateWidth = rfConfig.getInt("max-truncate-row-element-length") @@ -47,8 +49,9 @@ trait DataFrameRenderers { lit("\">") ) else { + val isGeom = WithTypeConformity(c.dataType).conformsTo(JTSTypes.GeometryTypeInstance) val str = resolved.cast(StringType) - if (truncate) + if (truncate || isGeom) when(length(str) > lit(truncateWidth), concat(substring(str, 1, truncateWidth), lit("...")) ) diff --git a/core/src/test/scala/org/locationtech/rasterframes/ExtensionMethodSpec.scala b/core/src/test/scala/org/locationtech/rasterframes/ExtensionMethodSpec.scala index 4f5fe3591..bb3894162 100644 --- a/core/src/test/scala/org/locationtech/rasterframes/ExtensionMethodSpec.scala +++ b/core/src/test/scala/org/locationtech/rasterframes/ExtensionMethodSpec.scala @@ -39,7 +39,7 @@ import scala.xml.parsing.XhtmlParser class ExtensionMethodSpec extends TestEnvironment with TestData with SubdivideSupport { lazy val rf = sampleTileLayerRDD.toLayer - describe("DataFrame exention methods") { + describe("DataFrame extension methods") { it("should maintain original type") { val df = rf.withPrefixedColumnNames("_foo_") "val rf2: RasterFrameLayer = df" should compile @@ -49,7 +49,7 @@ class ExtensionMethodSpec extends TestEnvironment with TestData with SubdivideSu "val Some(col) = df.spatialKeyColumn" should compile } } - describe("RasterFrameLayer exention methods") { + describe("RasterFrameLayer extension methods") { it("should provide spatial key column") { noException should be thrownBy { rf.spatialKeyColumn @@ -124,6 +124,10 @@ class ExtensionMethodSpec extends TestEnvironment with TestData with SubdivideSu val md3 = rf.toMarkdown(truncate=true, renderTiles = false) md3 shouldNot include("