如何在Scala中将字符串作为多边形读取(在Databricks上)

问题描述 投票:0回答:1

我有一个包含2列的数据集:一列是位置名称,另一列是多边形,坐标勾勒出相应的位置。此数据集来自我使用Scala加载到Databricks的csv文件。使用这个,我需要在为每个位置指定的多边形内放置另一个包含纬度/长点的数据集(可能使用Magellan库),但是当第二列需要作为一个字符串转换时,文件中的两个列都被读取为字符串。多边形以某种方式让麦哲伦的行动起作用。

我已经尝试过铸造多边形/形状,但到目前为止还没有任何工作。数据集的格式如下:

+-------------+--------------------+
|     location|             outline|
+-------------+--------------------+
|   Location A|POLYGON ((-111.11...|
|   Location B|POLYGON ((-99.111...|
|   Location C|POLYGON ((-99.111...|
|   Location D|POLYGON ((-99.111...|
|   Location E|POLYGON ((-99.111...|
|   Location F|POLYGON ((-111.11...|
|   Location G|POLYGON ((-99.111...|
|   Location H|POLYGON ((-99.111...|
|   Location I|POLYGON ((-111.11...|
|   Location J|POLYGON ((-111.11...|
|   Location K|POLYGON ((-99.111...|
|   Location L|POLYGON ((-99.111...|
|   Location M|POLYGON ((-99.111...|
|   Location N|POLYGON ((-99.111...|
|   Location O|POLYGON ((-111.11...|
|   Location P|POLYGON ((-99.111...|
|   Location Q|POLYGON ((-99.111...|
|   Location R|POLYGON ((-99.111...|
|   Location S|POLYGON ((-111.11...|
+-------------+--------------------+

所以我只需要将第二列从字符串转换为实际的多边形。

我需要第二列(轮廓)是一个实际的多边形(而不是一个字符串),这样我就可以在多边形内部放置点。

scala location coordinates polygon databricks
1个回答
1
投票

你是否已经尝试过magellan.Polygon?这是一个将Polygon转换为DF的例子:

import magellan.Polygon

case class PolygonExample(polygon: Polygon)

val ring = Array(Point(1.0, 1.0), Point(1.0, -1.0),
      Point(-1.0, -1.0), Point(-1.0, 1.0), Point(1.0, 1.0))
val polygon = Polygon(Array(0), ring)

val polygons = sc.parallelize(Seq(
      PolygonExample(Polygon(Array(0), ring))
    )).toDF()

结果:

polygons.show()
+--------------------+
|             polygon|
+--------------------+
|magellan.Polygon@...|
+--------------------+
© www.soinside.com 2019 - 2024. All rights reserved.