如何优雅地构造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')

在这里插入图片描述

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fff2zrx

谢谢老板

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值