Excel/CSV转GIS:一键WKT转gdf、Shapefile等图层

Python数据处理:如何将Excel/CSV中的WKT文本转换为Shapefile/GeoJSON——tablegis库df_to_gdf详解

前言

在地理数据处理中,我们经常遇到一种尴尬的情况:
从数据库(PostGIS, MySQL, ClickHouse)导出的数据,或者别人发来的CSV/Excel文件,里面有一列长得像这样:

  • POINT (116.40 39.90)
  • POLYGON ((116.3 39.9, 116.4 39.9, ...))

这叫做WKT (Well-Known Text)格式。虽然它描述了地理形状,但对Python的普通DataFrame来说,它就是一串纯文本字符串,无法直接进行地图可视化或空间计算(如求面积、缓冲区)。

通常我们需要手动调用shapely.wkt.loads并配合geopandas进行转换,步骤繁琐且容易出错(比如坐标系问题)。

今天介绍tablegis库中的df_to_gdf方法,一行代码将包含WKT文本的普通表格转换为标准的 GeoDataFrame,方便导出为 Shapefile、GeoJSON 等格式。

1. 场景痛点

场景一:数据库导出数据
后端工程师丢给你一个 CSV,里面全是POINT(...),你需要把它转换成shp文件给规划师画图。

场景二:数据可视化
你想用 Python 做地图分析,但pandas读取的数据无法直接 plot,必须转成geopandas对象。

2. 核心方法:df_to_gdf

这个方法专门用于“文本转几何对象”。

安装

pipinstalltablegis

函数签名

importtablegisastg gdf=tg.df_to_gdf(df,# 你的普通DataFramegeometry='geometry',# 包含WKT文本的那一列的列名crs='epsg:4326'# 坐标系,默认为 WGS84 (EPSG:4326))

它的作用:

  1. 自动解析指定列的 WKT 字符串。
  2. 将其转换为真实的 Shapely 几何对象。
  3. 自动设置坐标系(CRS)。
  4. 智能重命名:无论你原来的列名叫wkt_geom还是shape,转换后都会统一规范为geometry,方便后续兼容。

3. 实战案例

案例一:CSV 转 Shapefile (最常见需求)

假设你有一个data.csv

idnamewkt_shape
1A区POLYGON ((…))
2B区POLYGON ((…))

代码实现:

importpandasaspdimporttablegisastg# 1. 读取 CSVdf=pd.read_csv('data.csv')# 2. 一行转换!# 指定 'wkt_shape' 是存几何文本的列gdf=tg.df_to_gdf(df,geometry='wkt_shape')# 现在 gdf 已经是 GeoDataFrame 了,可以直接操作print(gdf.crs)# 输出: EPSG:4326print(type(gdf.geometry.iloc[0]))# 输出: <class 'shapely.geometry.polygon.Polygon'># 3. 导出为 Shapefilegdf.to_file('output_shapefile.shp',encoding='utf-8')# 或者导出为 GeoJSONgdf.to_file('output.geojson',driver='GeoJSON')

案例二:处理自定义坐标系

如果你的 WKT 数据不是经纬度(WGS84),而是投影坐标(比如 Web Mercator 3857 或 UTM),你可以通过crs参数指定。

# 假设数据是 Web Mercator 投影gdf=tg.df_to_gdf(df,geometry='geom',crs='epsg:3857')# 转换后直接进行重投影到经纬度gdf_wgs84=gdf.to_crs('epsg:4326')

案例三:结合 match_layer 使用

通常df_to_gdf是数据处理的第一步。转换成功后,你就可以用它来做空间分析了,比如上面介绍的match_layer

# 1. 加载含 WKT 的 CSVdf_raw=pd.read_csv('zones.csv')# 2. 转为 GeoDataFrame (面数据)gdf_zones=tg.df_to_gdf(df_raw,geometry='the_geom')# 3. 此时它就可以作为 match_layer 的 layer 参数输入了# result = tg.match_layer(df_points, gdf_zones, ...)

4. 参数详解

参数类型默认值说明
dfDataFrame必填包含 WKT 文本列的 pandas DataFrame。
geometrystr‘geometry’关键:指定哪一列包含 WKT 文本。转换后该列会被解析并重命名为geometry
crsstr‘epsg:4326’指定结果的坐标参考系统。通常经纬度数据用 4326,高德/百度坐标可能需要先转码(tablegis也提供了坐标转换工具)。

总结

df_to_gdf是打通“文本数据”与“空间数据”的桥梁。它极其简洁,解决了新手在shapelygeopandas之间转换时常遇到的格式错误和坐标系丢失问题。

一句话总结:只要看到 Excel/CSV 里有POINT(...)POLYGON(...)这种列,直接用tg.df_to_gdf(df, geometry='列名')把它变成能用的 GIS 数据!


本文基于 tablegis 库编写,欢迎在 PyPI 下载使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1137086.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前后端分离飘香水果购物网站系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程

&#x1f4a1;实话实说&#xff1a;有自己的项目库存&#xff0c;不需要找别人拿货再加价&#xff0c;所以能给到超低价格。摘要 随着电子商务的快速发展&#xff0c;消费者对线上购物体验的需求日益增长&#xff0c;尤其是生鲜水果类商品&#xff0c;因其保质期短、运输要求高…

SpringBoot+Vue 宠物咖啡馆平台平台完整项目源码+SQL脚本+接口文档【Java Web毕设】

&#x1f4a1;实话实说&#xff1a;CSDN上做毕设辅导的都是专业技术服务&#xff0c;大家都要生活&#xff0c;这个很正常。我和其他人不同的是&#xff0c;我有自己的项目库存&#xff0c;不需要找别人拿货再加价。我就是个在校研究生&#xff0c;兼职赚点饭钱贴补生活费&…

高速信号反射对USB2.0传输速度的影响:全面讲解

高速信号反射为何让USB2.0跑不满480Mbps&#xff1f;一个硬件工程师的实战复盘最近帮客户调试一款工业摄像头&#xff0c;明明用的是STM32F4的OTG高速外设&#xff0c;理论上支持USB2.0 High-Speed&#xff08;480 Mbps&#xff09;&#xff0c;结果实测传输速率只有180 Mbps出…

Walmart卖家十大必备工具:高效攻占北美市场的全链路智能化方案

Walmart作为美国零售业巨头&#xff0c;其线上市场正成为跨境电商的新蓝海。然而&#xff0c;与亚马逊的“货架逻辑”不同&#xff0c;Walmart更注重 “供应链效率” 与 “品牌可靠性” 。要在Walmart取得成功&#xff0c;卖家必须构建一套从 “全球采购优化” 到 “本土化履约…

SpringBoot+Vue 服装生产管理设计与实现管理平台源码【适合毕设/课设/学习】Java+MySQL

&#x1f4a1;实话实说&#xff1a;有自己的项目库存&#xff0c;不需要找别人拿货再加价&#xff0c;所以能给到超低价格。摘要 随着全球服装行业的快速发展&#xff0c;企业对生产管理效率和质量控制的需求日益增长。传统的服装生产管理多依赖人工操作和纸质记录&#xff0c;…

PySpark 大规模造数任务优化与实施总结文档

目录 1. 项目背景与目标 2. 核心技术演进 2.1 方案对比&#xff1a;为什么旧方案慢&#xff1f; 2.2 关键代码优化点 3. 存储策略深度解析 (HDFS Block vs Spark Partition) 3.1 核心结论 3.2 各表最佳配置 4. 最终落地代码 (极速版) 4.1 通用 Python 提交脚本 (submi…

计算机毕业设计springboot洗衣店信息管理系统 基于Spring Boot的洗衣店信息管理平台设计与实现 Spring Boot框架下的洗衣店信息化管理系统开发

计算机毕业设计springboot洗衣店信息管理系统3l7099 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。随着互联网技术的飞速发展&#xff0c;传统洗衣店的管理模式正面临着巨大的变…

SSD1306在智能穿戴设备中实现多语言字符显示的技术路径

如何让一块12864的小屏显示中文、英文甚至阿拉伯文&#xff1f;——SSD1306多语言字符渲染实战你有没有想过&#xff0c;一块只有硬币大小的OLED屏幕&#xff0c;是如何在智能手环上显示出“你好”、“Hello”&#xff0c;甚至是“مرحبا”的&#xff1f;这背后可不是简单地…

Hadoop HDFS 核心机制与设计理念浅析文档

目录 第一部分&#xff1a;HDFS 块大小&#xff08;Block Size&#xff09;机制解析 1. 默认值设定 2. 为什么是 128MB&#xff1f;&#xff08;核心原理&#xff09; A. 最小化寻址开销&#xff08;I/O 效率最大化&#xff09; B. 降低 NameNode 内存压力 C. 任务并行度…

移动端专项测试环境部署

随着智能手机的遍地使用&#xff0c;app成了人们生活中必不可少的工具之一。 也听到不少人经常抱怨app有着这样&#xff0c;那样的问题&#xff1a;时不时的崩溃&#xff0c;用久了手机很烫&#xff0c;真卡... 对于app测试人员来说&#xff0c;明明已经做了很完整的功能测试…

通过API接口获取历史数据进行分析。

在周末休市期间&#xff0c;通过API接口获取历史数据进行分析&#xff0c;是进行研究、策略回测和优化投资组合的绝佳时机。StockTv为这类需求提供了稳定可靠的数据支持。 下面这个表格汇总了周末通过API获取和分析历史数据的主要环节和常用工具&#xff0c;你可以快速了解全貌…

Java SpringBoot+Vue3+MyBatis 古典舞在线交流平台系统源码|前后端分离+MySQL数据库

&#x1f4a1;实话实说&#xff1a; 有自己的项目库存&#xff0c;不需要找别人拿货再加价&#xff0c;所以能给到超低价格。 摘要 古典舞作为中国传统文化的重要组成部分&#xff0c;具有悠久的历史和深厚的艺术价值。随着互联网技术的快速发展&#xff0c;线上文化交流平台逐…

上位机多语言支持实现策略:国际化应用指南

上位机多语言支持实战指南&#xff1a;从零构建国际化工业软件当你的上位机走向世界——一个工程师的本地化觉醒上周在调试某出口德国的自动化产线时&#xff0c;客户指着监控界面上满屏英文皱眉&#xff1a;“操作员看不懂这些单词。” 这句话让我意识到&#xff1a;再强大的功…

【每天学习一点算法 2026/01/09】3的幂

每天学习一点算法 2026/01/09 题目&#xff1a;3的幂 给定一个整数&#xff0c;写一个函数来判断它是否是 3 的幂次方。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 整数 n 是 3 的幂次方需满足&#xff1a;存在整数 x 使得 n 3x 作者&#xff1…

计算机毕业设计springboot高校心理咨询系统 基于Spring Boot框架的高校心理健康咨询平台设计与实现 高校心理辅导系统:Spring Boot技术驱动的解决方案

计算机毕业设计springboot高校心理咨询系统_y34td&#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。随着高校学生心理健康问题的日益凸显&#xff0c;传统的心理咨询模式已难以满足…

java基础-LinkedHashMap

在Java中&#xff0c;LinkedHashMap 是HashMap的一个子类&#xff0c;它维护了一个双向链表来记录插入顺序或访问顺序。LinkedHashMap的底层构成LinkedHashMap是在HashMap的基础上&#xff0c;增加了双向链表来维护顺序。1. 核心数据结构// LinkedHashMap内部类Entry继承了Hash…

核心要点:确保准确测量USB3.0传输速度的关键步骤

如何真正测出USB3.0的真实速度&#xff1f;别再被“5Gbps”忽悠了你有没有遇到过这种情况&#xff1a;买了一块标称“读取450MB/s”的USB3.0移动硬盘&#xff0c;插上电脑一测&#xff0c;CrystalDiskMark显示写入才120MB/s&#xff1f;第一反应可能是“商家虚标”&#xff0c;…

嵌入式RS485驱动开发:完整指南与代码实现

嵌入式RS485驱动开发&#xff1a;从硬件到代码的实战指南在工业现场&#xff0c;你有没有遇到过这样的场景&#xff1f;一条长长的电缆穿过多台设备&#xff0c;连接着温湿度传感器、电表、PLC控制器——它们共享同一组信号线&#xff0c;却能互不干扰地通信。即使环境嘈杂、距…

Nat Commun新作:基于逆向设计的超紧凑铌酸锂多模光子集成系统

01前沿摘要近日&#xff0c;国际顶级期刊《Nature Communications》发表了一项光子集成领域的突破性研究(https://doi.org/10.1038/s41467-025-67927-7)。科学家们成功在薄膜铌酸锂平台上&#xff0c;利用“逆向设计”方法&#xff0c;实现了光子器件尺寸的数量级缩小与集成密度…

大学生就业招聘系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】

&#x1f4a1;实话实说&#xff1a;有自己的项目库存&#xff0c;不需要找别人拿货再加价&#xff0c;所以能给到超低价格。摘要 随着高校毕业生人数的逐年增加&#xff0c;就业市场竞争日益激烈&#xff0c;传统的线下招聘模式已无法满足高效、精准的求职需求。大学生就业信息…