【问题标题】:How to check if polygon or point are below Y value?如何检查多边形或点是否低于 Y 值?
【发布时间】:2021-04-23 14:22:06
【问题描述】:
  • 我有一个包含 WKT 值列的 pandas 数据框。
  • 值可以是点或多边形
  • 我想过滤掉 y=32 以下的所有点和多边形。

例如:

print (df['WKT'].head(3))

mistac 给出:

    POINT (-3.8891602, 51.1724553)
    POINT (-1.5820313, 53.7162156)
    POLYGON ((-2.2521973 53.1533591, -2.3181152 52.8492299, -1.5490723 52.7695392 -2.2521973 53.1533591
    ))

我想过滤所有低于y=52 的值。 在我的示例中,我们将过滤第二行:POINT (-3.8891602, 51.1724553)

我该怎么做?

【问题讨论】:

  • 为什么head(3) 给出 4 行?另外,POINT (-3.8891602, 51.1724553) 是字符串还是类对象?您对POLYGON ((-2.2521973 53.1533591, -2.3181152, 52.8492299 -1.5490723, 52.7695392 -2.2521973, 53.1533591 )) 的预期结果是什么?
  • 修复它(复制粘贴错误)
  • 另外,POLYGON ((-2.2521973 53.1533591, -2.3181152, 52.8492299 -1.5490723, 52.7695392 -2.2521973, 53.1533591 )) 中是否缺少逗号?不可读。
  • 我更新结果
  • 您不能只通过单个 y 值过滤多边形。由于多边形是由多个 x、y 值形成的,因此您必须相应地定义您的过滤器。如果要过滤掉所有 y 坐标都低于特定值的多边形,则必须编写一个函数查找范围或 max y ,然后决定是否过滤。

标签: python python-3.x pandas


【解决方案1】:

由于您的问题充满了拼写错误,而且我真的不知道您的预期结果,所以我无法给您一个像样的答案。但是你可以试试这个:

def POINT(a, b):
    return b > 52

def POLYGON(a):
    return 0

s = pd.Series([
    'POINT(-3.8891602, 51.1724553)',
    'POINT(-1.5820313, 53.7162156)'])
>>> s.apply(lambda x: eval(x))
0    False
1     True
dtype: bool

【讨论】:

    猜你喜欢
    • 2017-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-17
    • 2022-10-07
    • 2014-04-26
    相关资源
    最近更新 更多