簡體   English   中英

Geopandas:如何讀取 csv 並轉換為帶有多邊形的 geopandas dataframe?

[英]Geopandas: how to read a csv and convert to a geopandas dataframe with polygons?

我將.csv文件讀取為 dataframe,如下所示:

import pandas as pd
df = pd.read_csv('myFile.csv')
df.head()
    BoroName    geometry
0   Brooklyn    MULTIPOLYGON (((-73.97604935657381 40.63127590...
1   Queens      MULTIPOLYGON (((-73.80379022888098 40.77561011...
2   Queens      MULTIPOLYGON (((-73.8610972440186 40.763664477...
3   Queens      MULTIPOLYGON (((-73.75725671509139 40.71813860...
4   Manhattan   MULTIPOLYGON (((-73.94607828674226 40.82126321...

我想將它轉換為 geopandas dataframe。

import geopandas as gpd
crs = {'init': 'epsg:4326'}
gdf = gpd.GeoDataFrame(df, crs=crs).set_geometry('geometry')

但我收到以下錯誤

TypeError: Input must be valid geometry objects: MULTIPOLYGON (((-73.97604935657381 40.631275905646774, -73.97716511994669 40.63074665412933,....

由於某種原因,geopandas 似乎無法從 pandas dataframe 轉換幾何列。 您可以嘗試兩種方法。

數字 2:在將 dataframe 轉換為地理數據框之前,嘗試在列上應用勻稱的wkt.loads function。

from shapely import wkt

df['geometry'] = df['geometry'].apply(wkt.loads)
gdf = gpd.GeoDataFrame(df, crs='epsg:4326')

無論哪種方式都應該有效。 祝你好運!


不要使用 - 使某些人崩潰 spyder 和 jupyter kernel

第一:嘗試直接用 geopandas 加載 csv

gdf = gpd.read_file('myFile.csv')
gdf.crs = 'epsg:4326'

你也可以試試這個:

gdf = gpd.GeoDataFrame(
    df, geometry=gpd.points_from_xy(df.longitude, df.latitude)
)

這會將那些緯度/經度列轉換為點

伙計們,原始 dataframe 中有 wkt 幾何字符串,而不是 xy 列,所以我建議閱讀: DataFrame with WKT Column to GeoPandas Geometry

如果直接加載,Geopandas 會在末尾放置一個幾何列。 通過試驗列名發現了這一點並且它有效

暫無
暫無

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

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