如何构造geodataframe
1 通过经纬度构造
1.1 geopandas.points_from_xy
import pandas as pd
df = pd.DataFrame(
{'City': ['Buenos Aires', 'Brasilia', 'Santiago', 'Bogota', 'Caracas'],
'Country': ['Argentina', 'Brazil', 'Chile', 'Colombia', 'Venezuela'],
'Latitude': [-34.58, -15.78, -33.45, 4.60, 10.48],
'Longitude': [-58.66, -47.91, -70.66, -74.08, -66.86]})
df

import geopandas
gdf = geopandas.GeoDataFrame(
df, geometry=geopandas.points_from_xy(df.Longitude, df.Latitude))
gdf


1.2 利用apply,shapely构造(更通用)
from shapely import geometry
df['geometry']=df.apply(lambda x: geometry.Point(x.Longitude,x.Latitude),axis=1)
gdf=geopandas.GeoDataFrame(df,geometry='geometry')
gdf

shapely.geometry.Point(x, y)用于创建单个 点对象
shapely.geometry.MultiPoint([(x1, y1), (x2, y2), …])用于创建 多点集合
shapely.geometry.LineString([(x1, y1), (x2, y2), …])用于创建多点按顺序连接的 线
shapely.geometry.MultiLineString([LineString1, LineString2])用于创建多条 线段的集合
shapely.geometry.Polygon([(x1, y1), (x2,y2),…])用于创建 无孔面
2 通过wkt文本构造
from shapely import wkt
diffs=pd.read_csv(r"C:\Users\fff507\Desktop\南北高架100_diff.csv")
diffs=diffs[pd.notna(diffs['geometry_y'])]
diffs['geometry_y']=diffs['geometry_y'].apply(wkt.loads)
diffs=gpd.GeoDataFrame(diffs,crs="EPSG:32651",geometry='geometry_y')
diffs[‘geometry_y’]=diffs[‘geometry_y’].apply(wkt.loads)
这一句是关键,wkt.loads函数可以解析wkt文本到geometry对象
wkt是一种表达几何图形和空间索引系统的简单文本格式,可以通过shapely.wkt.loads()将wkt格式文本载入为几何图形,而几何图形也可以通过自己的wkt属性将自己转换为原来的wkt格式。
diffs.loc[0,'geometry_y'].wkt

import matplotlib as mpl
import matplotlib.pyplot as plt
import plot_map
import seaborn as sns
fig = plt.figure(1,(8,8),dpi = 100)
ax = plt.subplot(111)
cmap = mpl.cm.get_cmap('Set3')
norm = mpl.colors.Normalize(min(diffs['nums_diff']), max(diffs['nums_diff']))
fcb = fig.colorbar(mpl.cm.ScalarMappable(norm=norm, cmap=cmap),ax=ax)
diffs.plot(ax=ax,column='nums_diff',cmap=cmap)
plt.axis('off')

Original: https://blog.csdn.net/qq_38412868/article/details/112950465
Author: fff2zrx
Title: 如何优雅地构造geodataframe
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/755418/
转载文章受原作者版权保护。转载请注明原作者出处!