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

智能推荐

unity3d 实现简单水墨画效果_unity3d shader 水墨动画-程序员宅基地

文章浏览阅读6.6k次,点赞2次,收藏8次。水墨效果,素材简陋:文章参考http://gad.qq.com/article/detail/18724,原理可以看这位大佬的文章,我就贴上自己工程源码:https://download.csdn.net/my_unity3d shader 水墨动画

(Java毕业设计)招聘信息管理系统(基于java+springboot)附源码_java人力资源管理系统招聘管理-程序员宅基地

文章浏览阅读1.1k次,点赞2次,收藏17次。在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括招聘信息管理系统的网络应用,在外国招聘信息管理系统已经是很普遍的方式,不过国内的线上管理系统可能还处于起步阶段。招聘信息管理系统具有招聘信息管理功能的选择。_java人力资源管理系统招聘管理

冯诺依曼、哈佛、RISC、CISC_冯诺依曼曼指令和数据区分-程序员宅基地

文章浏览阅读1.3w次,点赞5次,收藏20次。几个基础材料(源:http://jwc.seu.edu.cn/zq/signal/new/importent/zhang5_6/feng.htmhttp://jwc.seu.edu.cn/zq/signal/new/importent/zhang5_6/harvard.htmhttp://dingjun.net/dingjun/html/14/84FB43402106C575.html_冯诺依曼曼指令和数据区分

Netty——深入解析心跳检测机制_netty 服务端心跳检测-程序员宅基地

文章浏览阅读428次。客户端定时每X秒(推荐小于60秒)向服务端发送特定数据(任意数据都可),服务端设定为X秒没有收到客户端心跳则认为客户端掉线,并关闭连接触发onClose回调。当需要服务端定时给客户端发送心跳数据时, $gateway->pingData设置为服务端要发送的心跳请求数据,心跳数据是任意的,只要客户端能识别即可。当设置为服务端主动发送心跳时,如果客户端最近有发来数据,那么证明客户端存活,服务端会省略一个心跳,下个心跳大约1.5*$gateway->pingInterval秒后发送。心跳检测时间间隔 单位:秒。_netty 服务端心跳检测

linux内核SPI总线驱动分析(一)_linux spi驱动总线分析-程序员宅基地

文章浏览阅读535次。下面有两个大的模块:一个是SPI总线驱动的分析 (研究了具体实现的过程)另一个是SPI总线驱动的编写(不用研究具体的实现过程)SPI总线驱动分析 1 SPI概述 SPI是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口,是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应_linux spi驱动总线分析

Nginx,nginx-rtmp-module-master搭建直播平台-程序员宅基地

文章浏览阅读511次。Nginx,nginx-rtmp-module-master搭建直播平台_nginx-rtmp-module-master

随便推点

出行大数据,滴滴发布400城数据可视化分析_滴滴出行数据-程序员宅基地

文章浏览阅读2.1w次,点赞2次,收藏35次。转 一:出行大数据,滴滴发布400城数据可视化分析 2018年01月04日 00:00:00https://blog.csdn.net/zw0Pi8G5C1x/article/details..._滴滴出行数据

智能算法综述_为什么智能算法不会出现两次快速下降-程序员宅基地

文章浏览阅读1.1k次。 智能算法综述1 什么是智能算法 智能计算也有人称之为“软计算”,是人们受自然(生物界)规律的启迪,根据其原理,模仿求解问题的算法。从自然界得到启迪,模仿其结构进行发明创造,这就是仿生学。这是我们向自然界学习的一个方面。另一方面,我们还可以利用仿生原理进行设计(包括设计算法),这就是智能计算的思想。这方面的内容很多,如人工神经网络技术、遗传算法、模拟退火算法、模拟退火技术和群集智能技术_为什么智能算法不会出现两次快速下降

Open3d学习计划——高级篇 12(交互式可视化)–最终章-程序员宅基地

文章浏览阅读4.4k次,点赞4次,收藏27次。Open3d学习计划——高级篇 12(交互式可视化)本篇教程介绍了Open3d的可视化窗口的交互功能。# examples/Python/Advanced/interactive_visualization.pyimport numpy as npimport copyimport open3d as o3ddef demo_crop_geometry(): print("Demo for manual geometry cropping") print( _open3d学习计划

springboot2.x The character [_] is never valid in a domain name_springboot the character [_] is never valid in a d-程序员宅基地

文章浏览阅读1k次。访问springcloud工程, springboot版本为2.1.15 ,使用域名访问接口报400但是直接用ip不报错。发现是集成的tomcat版本不支持域名下划线。大约是8.5.31以后的版本不支持带下划线的域名,但是也没办法降低版本了,会有很多冲突。先搁置。..._springboot the character [_] is never valid in a domain name.

QEMU 运行 RISC-V 64 位 Linux_qemu启动riscv环境-程序员宅基地

文章浏览阅读420次。QEMU 运行 RISC-V 64 位 Linux_qemu启动riscv环境

一年对于程序员来说有多长?_程序员 一年多少秒-程序员宅基地

文章浏览阅读4.3k次。聊这个话题,我表示又蛋疼了!你想看么?还没写过这么有争议的话题,有点小小的不安!一年有多长?让我来掐指算一算:1年=365天(今年是366天)=多少小时呢?前方高能,等我去写个程序算一下!还用写程序吗?早有人写好了!有多少分有多少秒,又有多少毫秒呢?我们只需要选择一下单位就好了,结果是:1年(yr)=31536000000毫秒(ms)为什么聊这个话题?蛋当然不可能说疼就疼了!水是有源的,树是有根的_程序员 一年多少秒