离散点转换点shapefile
1.导入库
使用有python自带的os, sys, csv,以及GDAL库。
GDAL的安装请参考另一篇博文:http://www.cnblogs.com/tianjg/p/8145629.html
import os import sys import csv try: from osgeo import gdal, ogr, osr except ImportError: import gdal, ogr, osr
2. 解析txt或csv文件
读取txt点要素的经纬度信息和对应的数字,组织形式如下:
108,34,349.0
108,35,55.8
....
3.利用python+gdal将包含离散点的文本转成点矢量
代码如下:
# 新建输出的点shapefile
1 shp_driver = ogr.GetDriverByName("ESRI Shapefile") 2 if os.path.exists(out_shp): 3 shp_driver.DeleteDataSource(out_shp) 4 out_dataset = shp_driver.CreateDataSource(out_shp) 5 # 定义输出矢量的空间参考和属性 6 out_srs = osr.SpatialReference() 7 out_srs.ImportFromEPSG(4326) 8 layer_name = os.path.splitext(os.path.basename(out_shp))[0] 9 out_layer = out_dataset.CreateLayer(layer_name, 10 geom_type=ogr.wkbPoint, srs=out_srs) 11 12 # 创建shaple的表结构 13 field_type = ogr.OFTReal 14 lon_field = ogr.FieldDefn('lon', field_type) 15 lat_field = ogr.FieldDefn('lat', field_type) 16 value = ogr.FieldDefn('aqi', field_type) 17 out_layer.CreateField(lon_field) 18 out_layer.CreateField(lat_field) 19 out_layer.CreateField(value) 20 21 for data in txt_data: 22 23 data = str(data).split(',') 24 25 # 创建点Geometry 26 point = ogr.Geometry(ogr.wkbPoint) 27 point.AddPoint(float(data[lon_ind]), float(data[lat_ind])) 28 29 # 创建要素和数字 30 featureDefn = out_layer.GetLayerDefn() 31 out_feature = ogr.Feature(featureDefn) 32 out_feature.SetGeometry(point) 33 out_feature.SetField('lon', float(data[lon_ind])) 34 out_feature.SetField('lat', float(data[lat_ind])) 35 36 out_feature.SetField('aqi', float(data[aqi_ind])) 37 out_layer.CreateFeature(out_feature) 38 39 out_feature = None 40 # 关闭 41 out_layer = None 42 out_dataset = None
作者:tianjg
QQ: 348552745
Email: jango.tian@gmail.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.

浙公网安备 33010602011771号