我在gis stack exchange上问过这个问题,但没有得到很多视图和回复;所以我在这里尝试(如果这是不允许的,请让我知道)。
我有两个geopandas geodataframes,我想将它们导出到具有嵌套文件夹结构的kmz文件中。下面是创建geodataframes的独立代码,以及我希望kmz结构的外观截图。
我想在没有arcgis或qgis的情况下完成这项工作。使用Python3.7。
###############################################
### load libraries
###############################################
import matplotlib.pyplot as plt
%matplotlib inline
import pandas as pd
import geopandas as gpd
from shapely.geometry import Point
from shapely.geometry import LineString
###############################################
### Build Stand-Alone Geodataframes
### 'p' is a points-type gdf
### 'pl' is a polyline-type gdf
###############################################
pname = ['Project1'] * 5
id1 = [1, 2, 3, 4, 5]
lat = [36.42, 36.4, 36.32, 36.28, 36.08]
long = [-118.11, -118.12, -118.07, -117.95, -117.95]
cat = ['X', 'X', 'X', 'Y', 'Y']
id2 = ['A', 'A', 'B', 'B', 'B']
df = pd.DataFrame(list(zip(pname, id1, lat, long, cat, id2)),
columns =['pname', 'id1', 'lat', 'long', 'cat', 'id2'])
df.reset_index(drop=True, inplace=True)
p = gpd.GeoDataFrame(df, geometry=gpd.points_from_xy(df['long'], df['lat']))
p = p.set_crs(epsg=4326)
display(p.style)
pl = p.groupby(['pname', 'id2'])['geometry'].apply(lambda x: LineString(x.tolist()))
pl = gpd.GeoDataFrame(pl, geometry='geometry').reset_index()
pl = pl.set_crs(epsg=4326)
display(pl.style)
fig, (ax1, ax2) = plt.subplots(1, 2, sharex=True, sharey=True)
p.plot(ax=ax1)
pl.plot(ax=ax2)
ax1.set_aspect('equal')
所需的文件夹结构
暂无答案!
目前还没有任何答案,快来回答吧!