【问题标题】:geopandas sjoin returning empty rowsgeopandas sjoin 返回空行
【发布时间】:2020-08-26 16:35:53
【问题描述】:

我有一个包含所有英国输出区域的多边形表,其结构如下:

newpoly


        OBJECTID    OA11CD  LAD11CD Shape__Are  Shape__Len  TCITY15NM   geometry
67519   67520   E00069658   E06000018   3.396296e+04    1006.464423 Nottingham  POLYGON ((456069.067 340766.874, 456057.000 34...
67520   67521   E00069659   E06000018   1.014138e+05    1404.327776 Nottingham  POLYGON ((456691.549 340778.104, 456557.864 34...
67521   67522   E00069660   E06000018   1.812783e+04    731.882609  Nottingham  POLYGON ((456945.994 340821.233, 456969.220 34...
67522   67523   E00069661   E06000018   2.765546e+04    1112.317587 Nottingham  POLYGON ((456527.178 340669.119, 456484.993 34...
67523   67524   E00069662   E06000018   3.647822e+04    964.989153  Nottingham  POLYGON ((456301.845 340419.759, 456244.357 34...

还有一个结构如下的点表:

restaurants

    name    latitude    longitude   geometry
0   Restaurant Sat Bains with rooms 52.925050   -1.167712   POINT (-1.16771 52.92505)
1   Revolution Hockley  52.954090   -1.144025   POINT (-1.14403 52.95409)
2   Revolution Cornerhouse  52.955517   -1.150088   POINT (-1.15009 52.95552)

但是当我这样做时:

spatial_join = gpd.sjoin(restaurants, newpoly, op = 'contains')
spatial_join

0 行匹配。

餐厅的几何列是通过以下方式制作的:

restaurants = pd.read_csv('Restaurants_clean.csv')
restaurants = gpd.GeoDataFrame(
    restaurants, geometry=gpd.points_from_xy(restaurants.longitude, restaurants.latitude))

我尝试了不同的“操作”参数,但出现了同样的问题。我确信必须有一个连接,因为所有 UK 输出区域都存在于表中。

我错过了什么吗?

【问题讨论】:

    标签: python geopandas


    【解决方案1】:

    您正在使用不同的投影。我相信 GeoPandas sjoin 实际上会警告你。按以下方式创建点图层:

    restaurants = pd.read_csv('Restaurants_clean.csv')
    restaurants = gpd.GeoDataFrame(
        restaurants, 
        geometry=gpd.points_from_xy(restaurants.longitude, restaurants.latitude),
        crs=4326)
    restaurants = restaurants.to_crs(newpoly.crs) 
    

    我首先指定输入的 CRS(作为 4326,这是 WS84 的 EPSG 代码,即 lon/lat 坐标),然后我将数据重新投影到相同的 CRS newpoly 具有(我假设 27700) .

    【讨论】:

    • 是的,这个问题解决了。我没有收到警告,但这可能是因为我正在使用 vscode
    • 是的,出于某种原因,VSCode 默认禁止警告。
    猜你喜欢
    • 2020-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 2021-01-24
    • 1970-01-01
    • 1970-01-01
    • 2022-07-25
    相关资源
    最近更新 更多