python读取google earth导出的kml文件内的经纬度信息

 首先利用google earth,描出河段中心线,并导出kml文件

 提取kml内的经纬度信息

import kml2geojson as k2g
import geopandas as gpd
import fiona
import os
import pandas as pd
import numpy as np


file_name = 'F:/CADfiles/river/river.kml' # google earth的kml文件路径
geoname = os.path.splitext(file_name)[0]+'.geojson' # 改变kml文件后缀名,转换为geopandas能够识别的json文件
file_outpath = 'F:/CADfiles/river/xy.xls' # 经纬度坐标输出的xls文件路径

fiona.drvsupport.supported_drivers['LIBKML'] = 'rw' #指明drivers,否则会报错

k2g.convert(file_name, geoname) # 利用kml2geojson程序库,将kml转为json文件

gdf = gpd.read_file(file_name, encoding='gbk')

x_array = gdf['geometry'].apply(lambda geo: np.array([coord[0] for coord in geo.coords]))[0] #经度
y_array = gdf['geometry'].apply(lambda geo: np.array([coord[1] for coord in geo.coords]))[0] #纬度
z_array = gdf['geometry'].apply(lambda geo: np.array([coord[2] for coord in geo.coords]))[0] #高程值(大概

length = x_array.shape[0]
xy = {
    "lon": pd.Series(x_array, index = np.arange(length)),
    "lat": pd.Series(y_array, index = np.arange(length)),
}
xy_df = pd.DataFrame(xy)
xy_df.to_excel(file_outpath, sheet_name="Sheet1",index=False) #将经纬度输出到xls文件
print(xy_df)

将python生成的xls文件导入arcmap,并查看属性信息

python读取google earth导出的kml文件内的经纬度信息_第1张图片

 python读取google earth导出的kml文件内的经纬度信息_第2张图片

 提取成功!

你可能感兴趣的:(python)