csv转shp,无坐标信息

csv转shp,无坐标信息,只有geometry:

from shapely.wkt import loads
df['lon'] = df['geometry'].apply(lambda x: loads(x).x)
df['lat'] = df['geometry'].apply(lambda x: loads(x).y)

# 将经纬度转换为点的几何信息
geometry = [Point(xy) for xy in zip(df['lon'], df['lat'])]

# 创建 GeoDataFrame 对象,并设置坐标系
gdf = gpd.GeoDataFrame(df, crs=crs, geometry=geometry)

# 设置输出文件名和路径
shp_name = f'{os.path.splitext(filename)[0]}.shp'
shp_path = os.path.join(output_dir, shp_name)

# 保存 GeoDataFrame 为 SHP 文件
gdf.to_file(shp_path)

完整代码:

# 设置输入输出文件夹路径
input_dir = './csv/'
output_dir = './shp/'

# 定义投影方式和坐标系
crs = 'EPSG:4326'

# 遍历输入文件夹中的所有 CSV 文件
import os
import pandas as pd
import geopandas as gpd
from shapely.geometry import Point
from shapely.wkt import loads

for filename in os.listdir(input_dir):
    if filename.endswith('.csv'):
        # 读取 CSV 文件中的数据
        csv_path = os.path.join(input_dir, filename)
        df = pd.read_csv(csv_path)

        #提取经纬度信息:POINT (107.20441799540733 33.1109127348231)
        df['lon'] = df['geometry'].apply(lambda x: loads(x).x)
        df['lat'] = df['geometry'].apply(lambda x: loads(x).y)

        # 将经纬度转换为点的几何信息
        geometry = [Point(xy) for xy in zip(df['lon'], df['lat'])]

        # 创建 GeoDataFrame 对象,并设置坐标系
        gdf = gpd.GeoDataFrame(df, crs=crs, geometry=geometry)

        # 设置输出文件名和路径
        shp_name = f'{os.path.splitext(filename)[0]}.shp'
        shp_path = os.path.join(output_dir, shp_name)

        # 保存 GeoDataFrame 为 SHP 文件
        gdf.to_file(shp_path)
        print(filename)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值