簡體   English   中英

GeoPandas:裁剪 shapefile 后繪制錯誤

[英]GeoPandas: Error plotting after clipping shapefile

我對繪制哥德堡市(瑞典哥德堡英語)的數據感興趣。 我從瑞典的 shapefiles 開始,然后剪輯它們以集中我在哥德堡的學習。

# Extracting Göteborg boundary
boundary = adm_2.loc[(adm_2["NAME_2"] == "Göteborg")].copy()

boundary
>>
    ID_0    ISO NAME_0  ID_1    NAME_1  ID_2    NAME_2  TYPE_2  ENGTYPE_2   NL_NAME_2   VARNAME_2   geometry
246 222 SWE Sweden  21  Västra Götaland 247 Göteborg    Kommuner    Municipality    None    None    MULTIPOLYGON (((12.09368 57.67838, 12.09466 57...


# Clipping the shapefiles
roads = geopandas.clip(roads_sweden, boundary)
buildings = geopandas.clip(buildings_sweden, boundary)

#roads.shape #(9747, 7)
#roads_sweden.shape #(148403, 7)

#buildings.shape #(1163, 4)
#buildings_sweden.shape #(15253, 4)

如果我繪制所有道路,即roads_sweden。 我有所有瑞典的行圖。 但是,當試圖僅繪制哥德堡的道路時,出現錯誤:

IndexError:數組的索引太多:數組是一維的,但有 2 個被索引

我不明白為什么他們看起來一樣。 我什至嘗試重置索引,但這似乎無關。

對於我正在使用的情節:

fig, ax = plt.subplots(figsize=(12, 10), facecolor='white', edgecolor='k')
boundary.plot(ax=ax, facecolor= "white", edgecolor="black", linewidth=.5)
roads.plot(ax=ax)
buildings.plot(ax=ax)

即使單獨完成,即roads.plot(),我也會收到錯誤消息。 Roads_sweden.plot() 總是工作正常。

這是數據的一些預覽

roads_sweden.head()

>>
osm_id  name    ref type    oneway  maxspeed    geometry
0   1240    Klensmedsvägen None    unclassified    0   0   LINESTRING (17.99027 59.29686, 17.99182 59.296...
1   1241    Hyvelvägen None    residential 0   0   LINESTRING (17.99273 59.29666, 17.99212 59.295...
2   1242    Spikvägen  None    residential 0   0   LINESTRING (17.99353 59.29640, 17.99299 59.295...
3   1243    Bultvägen  None    residential 0   0   LINESTRING (17.99439 59.29617, 17.99385 59.295...
4   1245    Tångvägen None    residential 0   0   LINESTRING (17.99691 59.29512, 17.99637 59.294...

roads.head()

>>
osm_id  name    ref type    oneway  maxspeed    geometry
0   3846609 None    None    motorway_link   1   0   LINESTRING (12.09100 57.67369, 12.09090 57.673...
1   4040303 E6  None    motorway    0   0   LINESTRING (12.00496 57.84283, 12.00525 57.841...
2   4040436 None    None    motorway_link   1   0   LINESTRING (12.00643 57.79800, 12.00560 57.796...
3   4040439 None    E 20    motorway    1   0   LINESTRING (11.99463 57.71530, 11.99492 57.715...
4   4040441 None    E 20    motorway    1   0   LINESTRING (11.99520 57.71580, 11.99434 57.71536)


數據源

行政區域(見區域 2): https : //www.diva-gis.org/datadown

道路和建築物: https : //mapcruzin.com/free-sweden-arcgis-maps-shapefiles.htm

我將問題追溯到索引為125779的道路,它具有以下坐標: [(11.8892841, 57.6579022), (11.8892841, 57.6579022)] ,所以它基本上是一個點。 剪裁時,此幾何圖形將轉換為“LINESTRING EMPTY”。 也許它應該將此空行轉換為相應的 Point,但無論如何我想應該在 geopandas 的繪圖中進行修復以忽略這些空行,而不是引發如此不清楚的錯誤(請隨時提交問題https://github .com/geopandas/geopandas/issues )。

同時,您可以通過僅選擇非空幾何圖形來繪制數據:

roads.loc[~roads.geometry.is_empty].plot(ax=ax)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM