我有一个包含 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...|
+-------------+--------------------+
所以我只需要将第二列从字符串转换为实际多边形。
我需要第二列(轮廓(是实际的多边形(而不是字符串(,以便我可以在多边形内放置点。
你已经尝试过麦哲伦图书馆了吗?多边形?,这是将多边形转换为 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@...|
+--------------------+