python学习——csv文件转换为shp(Python实现)_csv点数据怎么转成点shp-程序员宅基地

技术标签: python应用  

python——csv文件转换为shp

转载自https://blog.csdn.net/qq_23926575/article/details/82316965

学地信的经常会有这样的需求,即将csv格式的文件转换为shapefile格式加载到arcMap中进行显示与分析,arcMap本身提供了这样的功能,即

文件->添加数据->添加XY数据:选择文件路径,指定X字段(longitude)、Y字段(latitude)即可,默认坐标系为WGS84坐标系。

arcMap的这个功能非常方便,但因为我的数据量较大,有接近100万条数据,故通过代码进行格式转换效率更高点。
下面的代码参考如下链接:Using pyshp to convert .csv file to .shp?
需要用到pyshp模块、csv模块、codecs模块,pip install 安装即可。
下面贴上代码:
目前只能转换point类型数据

#-*-coding:utf-8-*-
import shapefile as shp
import csv
import codecs
import os

def trans_point(folder, fn, idlng, idlat, delimiter=','):
    # create a point shapefile
    output_shp = shp.Writer(shp.POINT)
    # for every record there must be a corresponding geometry.
    output_shp.autoBalance = 1
    # create the field names and data type for each.you can omit fields here
    # output_shp.field('id','N') # number    
    output_shp.field('longitude', 'F', 10, 8) # float
    output_shp.field('latitude', 'F', 10, 8) # float
    output_shp.field('locname','C',100) # string, max-length
    # access the CSV file
    with codecs.open(folder + fn, 'rb', 'utf-8') as csvfile:
        reader = csv.reader(csvfile, delimiter=delimiter)
        # skip the header
        next(reader, None)
        #loop through each of the rows and assign the attributes to variables
        for row in reader:
            # idx = row[0]
            locname= row[1]
            lng= float(row[idlng])
            lat = float(row[idlat])
            print lng, lat
            # create the point geometry
            output_shp.point(lng, lat)
            # add attribute data
            output_shp.record(lng, lat, locname)
    output_shp.save(folder + "%s.shp"%fn.split('.')[0]) # save the Shapefile

if __name__ == '__main__':
    folder = 'C:\Users\MaMQ\Desktop' + os.sep
    fn = 'test.csv'
    trans_point(folder, fn, 2, 3)


示例数据

id locname x y
1 Haryana, Haryana, India 76.9806 29.6161
2 Mumbai, Maharashtra, India 72.8258 18.975

结果
这里写图片描述


参考资料
[1] Using pyshp to convert .csv file to .shp?

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/knkn123/article/details/85601607

智能推荐

【车载以太网测试从入门到精通】——数据链路层测试_车载以太网数据链路层测试-程序员宅基地

文章浏览阅读1.3k次,点赞3次,收藏6次。根据IEEE的定义,以太网数据链路层分为2个子层:媒体访问控制子层(MAC层)和逻辑链路控制层(LLC层)。分为2个子层的原因是:数据链路层实际是与物理层直接相关的,针对不同的物理层需要有与之相配合的数据链路层,例如针对以太网、令牌环需要不同的数据链路层,而这时不符合分层原则的。为此,通过划分MAC层和LLC层,尽量提高链路层的独立性,便于技术实现。_车载以太网数据链路层测试

阈值分割-程序员宅基地

文章浏览阅读3.9k次。文章目录1..直方图阈值法2.自动阈值法3.分水岭分割法4.迭代法阈值分割法是一种基于区域的图像分割技术。图像阈值化分割因其简单实现、计算量小、性能较稳定而成为图像分割中最基本和应用最广泛的分割技术。图像阈值化的目的是按照灰度级,对像素集合进行一个划分,得到的每个子集形成一个与现实景物相对应的区域,各个区域内部具有一致的属性,而相邻区域布局有这种一致属性。这样的划分可以通过从灰度级出发选取一个或..._阈值分割

Kotlin快速入门(三)函数进阶、异常处理、从键盘获取字符串、递归_kotlin toint()异常处理-程序员宅基地

文章浏览阅读282次。前言:作为一个安卓开发的老鸟,一步步从eclipse到AS开发安卓app,再到NDK开发,不断的更新,不断的学习,现如今Google把安卓的第一开发语言换成了Kotlin,所以我们也要紧跟Google步伐,转战kotlin,接下来我会带领大家快速入门kotlin开发。1.1函数进阶(求圆和矩形的面积)val pi = 3.141592f //val表示对象是常量,不能更改//fun ..._kotlin toint()异常处理

将Windows Server 2016 打造成工作站(20161030更新)-程序员宅基地

文章浏览阅读2.6k次。将Windows Server 2016 打造成工作站(20161030更新)一、基础设置1.1、关闭自动弹窗:「开始菜单」 - 「服务器管理器」 - 「仪表板」(或 Win + R或CMD,「ServerManager」), 「管理」 - 「服务器管理器属性」,勾选「在登录时不自动启动服务器管理器」。1.2、设置CPU性能Win + R或CMD..._service2016 找不到 关机事件追踪

从费舍尔信息矩阵(Fisher Information Matrix, FIM)到自然梯度法_fisher信息矩阵-程序员宅基地

文章浏览阅读1.1k次,点赞11次,收藏15次。本文以自然梯度法的推导为脉络,贯穿黎曼空间、黎曼流形、黎曼度量、费舍尔信息矩阵、KL 散度和自然梯度法等概念。这是 TRPO 算法理论的重要基础_fisher信息矩阵

浏览器控制台报错 Uncaught TypeError: Cannot set properties of undefined (setting ‘onclick‘) at-程序员宅基地

文章浏览阅读7.5k次。项目场景:点击切换浏览器壁纸的代码问题描述浏览器控制台报错Uncaught TypeError: Cannot set properties of undefined (setting ‘onclick’)at <body> <div class="bigbox"> <img src="../素材/箴言1副本.jpg" alt="" /> <img src="../素材/箴言2副本.jpg" alt="" />_uncaught typeerror: cannot set properties of undefined (setting 'onclick')

随便推点

js逆向-vscode与vm2无环境联调_jsvm2-程序员宅基地

文章浏览阅读986次。转载自大佬:十一姐链接: js逆向补环境-调试工具vscode与nodejs使用之无环境联调1、Node.js是一个开源、跨平台的JavaScript运行环境,可以在服务器端运行JavaScript代码。它基于Chrome的JS-V8引擎,使得JavaScript的运行速度非常快,并且提供了一系列的模块,使得开发者可以方便地进行后端开发2、nodejs下载 ,下载node-v18.16.1-x64.msi,除安装路径可以修改,其它一路next即可3、然后双击下载好的msi程序包,然后一路next,只需_jsvm2

查看H2数据库的数据_h2数据库怎么看表-程序员宅基地

文章浏览阅读4.9k次。运行程序,在浏览器中打开:http://localhost:8080/h2-console/注意:JDBC URL:jdbc:h2:mem:testdb_h2数据库怎么看表

c语言实例100_pic单片机,PIC单片机C语言编程实例-程序员宅基地

文章浏览阅读268次。PIC单片机C语言编程实例F877的外围功能模块第1章PIC16PIC16F1.1.2简单应用实例该例用于令与PORTD口相连的8个发光二极管前4个点亮,后4个熄灭。在调试程序前,应使与PORTD口相连的8位拔码开关拔向相应的位置。1例1.1.1PORTD输出#includemain(){TRISD=0X00;while(1);{PORTD=0XF0;}}/*向PORTD送数据,点亮LED(由实验..._pic c语言 实例

log4j配置说明-程序员宅基地

文章浏览阅读54次。og4j配置详解log4j详解 根据网络资料整理 >>>>1. 概述<<<<  1.1. 背景    在应用程序中添加日志记录总的来说基于三个目的:监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作;跟踪代码运行时轨迹,作为日后审计的依据;担当集成开发环境中的调试器的作用,向文件或控制台打印...

花生棒内网穿透(移动设备最简单的内网穿透方式)_花生棒配置-程序员宅基地

文章浏览阅读677次。花生棒是一款专做内网穿透的硬件,能够解决移动设备没有公网IP无法直接访问的问题。配置成功可以实现移动设备 SSH连接、VNC实现对远程设备的直接桌面控制。主要解决无法安装向日葵等第三方软件的设备,比如基于ARM64内核的设备。本文是对官方教程的补充。_花生棒配置

个人博客系统(SSM版 前端+后端)-程序员宅基地

文章浏览阅读1.9k次,点赞12次,收藏28次。SSM 版博客系统_个人博客系统