получите ограничительную рамку geodjango объекта мультиполигона

Вам необходимо .flatMap()

Аналогично map, но каждый элемент ввода может быть сопоставлен с 0 или более элементами вывода (поэтому func должен возвращать Seq, а не один элемент).

blockquote>
val data = (spark.createDataset(Seq(
    (1, "15:00:01", 3),
    (1, "17:04:02", 2)
  )).toDF("ID", "TIMESTAMP_STR", "VALUE")
  .withColumn("TIMESTAMP", $"TIMESTAMP_STR".cast("timestamp").as("TIMESTAMP"))
  .drop("TIMESTAMP_STR")
  .select("ID", "TIMESTAMP", "VALUE")
)

data.as[(Long, java.sql.Timestamp, Long)].flatMap(r => {
  if(r._3 == 2) {
    Seq(
      (r._1, new java.sql.Timestamp(r._2.getTime() - 1000L), r._3),
      (r._1, r._2, r._3)
    )
  } else {
    Some(r._1, r._2, r._3)
  }
}).toDF("ID", "TIMESTAMP", "VALUE").show()

Что приводит к:

+---+-------------------+-----+
| ID|           TIMESTAMP|VALUE|
+---+-------------------+-----+
|  1|2019-03-04 15:00:01|    3|
|  1|2019-03-04 17:04:01|    2|
|  1|2019-03-04 17:04:02|    2|
+---+-------------------+-----+

5
задан Jack Ha 27 April 2009 в 12:19
поделиться

1 ответ

Используйте свойство экстента .

Возвращает 4-кортеж, содержащий нижнюю левую и верхнюю правую координаты соответственно.

Вы также можете использовать свойство envelope , если требуется представление объекта Polygon ограничивающего прямоугольника.

10
ответ дан 13 December 2019 в 22:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: