本文介绍一个从excel中读取数据,从而构建点状矢量文件的方法(当然构建面状,线状也是类似的,如有需要可以留言),使用的python+gdal库+xlrd。当然本程序不一定是最简化的,各位读者可以自行优化。本文并不是附上所有的程序而是针对重要的代码段进行讲解。
first:
import xlrd ###读取excel文件,比较简单,读取出每个点的
##信息比如经纬度,还有其他的属性。
file_path = r'C:\Users\Administrator\Desktop\AQ.xls'
data = xlrd.open_workbook(file_path)
table = data.sheet_by_name('Sheet1')
nrows = table.nrows
ncols = table.ncols
rowvalue = table.row_values(1)
col_values = table.col_values(1)
lon = table.cell(1,4).value
lat = table.cell(1,5).value
second:
import osgeo.ogr as ogr
import osgeo.osr as osr
##导入相应的gdal库然后设置好矢量驱动,矢量坐标系等一系列信息
driver = ogr.GetDriverByName("ESRI Shapefile")
data_source = driver.CreateDataSource("d:/test/shp/yanmu.shp")
srs = osr.SpatialReference()
srs.ImportFromEPSG(4326)
layer = data_source.CreateLayer("yanmu", srs, ogr.wkbPoint)
third:
##这一部分就是建立字段,并向字段内添加信息
layer.CreateField(ogr.FieldDefn("Latitude", ogr.OFTReal))
layer.CreateField(ogr.FieldDefn("Longitude", ogr.OFTReal))
feature.SetField("Latitude", lat)
feature.SetField("Longitude", lon)
注意在建立字段是设置的字段的类型,下图反映了字段类型常量和ogr类型之间的对应关系。
four:
##第四部分就是收尾,输入坐标,然后关闭图层和数据集
wkt = "POINT(%f %f)" % (float(lon) , float(lat))
point = ogr.CreateGeometryFromWkt(wkt)
feature.SetGeometry(point)
layer.CreateFeature(feature)
feature = None
data_source = None
以上便是总结,如有疑问,欢迎留言。