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