python中几何体和时间的空间连接(geopandas)



我正在尝试合并两个地理数据帧。(比方说"df_a"one_answers"df_b")我想通过时间和几何加入这两个dfs

在"df_a"的情况下,它的几何是"多极子"。

时间 功能1 几何体
'2017-01-01' 10 多边((-35.12334 3.12648,-35.123342…
'2020-12-31' 4 多边

执行sjoin():后可以过滤行

gpd.sjoin(df_a, df_b, how="left", predicate="intersects").loc[
lambda d: d["time_left"].eq(d["time_right"])
]

生成数据集的MWE

import geopandas as gpd
import pandas as pd
# synthesize some geodataframes matching structure in question
df_a = (
pd.merge(
pd.Series(pd.date_range("1-jan-2017", "31-dec-2020", freq="15D"), name="time"),
gpd.read_file(gpd.datasets.get_path("naturalearth_cities"))
.reset_index()
.rename(columns={"index": "feature 1"})
.drop(columns=["name"]),
how="cross",
)
.sample(100)
.sort_values(["time", "feature 1"])
)
df_a = gpd.GeoDataFrame(df_a)
df_b = (
pd.merge(
pd.Series(pd.date_range("1-jan-2017", "31-dec-2020", freq="15D"), name="time"),
gpd.read_file(gpd.datasets.get_path("naturalearth_lowres"))
.reset_index()
.rename(columns={"index": "feature 2"})
.drop(columns=["name", "pop_est", "continent", "gdp_md_est"]),
how="cross",
)
# .sample(50)
.sort_values(["time", "feature 2"])
)
df_b = gpd.GeoDataFrame(df_b)

输出

功能1功能2iso_a31052017-01-01 00:00:00105OINT 39BLZ1202017-01-01 00:00:00BIH283217-01-16 00:00:00SLV5272017-01-31 00:00:00-996002017-01-31 00:00:00196OINT(-748.528981377441 4.598369421147822="text align=left;">COL8612017-03-02 00:00:00NIC10012017-03-02 00:00:00193POINT(116.38633982565943 39.93083808990906 td style="text align=left;">CHN11612017-03-17 00:00:00151OINT style="text-align:left;">DOM14512017-04-16 00:00:0037OINT(10.179678099212026 36.80277813623144)>td style="text-align:right;">1320>2017-04-16 0:0:0081style="text align=left;">TUN15892017-04-16 00:00:00DEU

最新更新