from sys import winver
from osgeo import ogr
import osgeo
from osgeo.osr import SpatialReference as SR
driver=ogr.GetDriverByName('ESRI Shapefile')
ds=ogr.Driver.CreateDataSource(driver,'Supermarket.shp')
sr=SR('GEOGCS["WGS 84",\
DATUM["WGS_1984",\
SPHEROID["WGS 84",6378137,298.257223563,\
AUTHORITY["EPSG","7030"]],\
AUTHORITY["EPSG","6326"]],\
PRIMEM["Greenwich",0,\
AUTHORITY["EPSG","8901"]],\
UNIT["degree",0.0174532925199433,\
AUTHORITY["EPSG","9122"]],\
AXIS["Latitude",NORTH],\
AXIS["Longitude",EAST],\
AUTHORITY["EPSG","4326"]]')
lay=ogr.DataSource.CreateLayer(ds,'Supermarket',sr,ogr.wkbPoint,['ENCODING=UTF-8'])
name=ogr.FieldDefn('name',ogr.OFTString)
ogr.FieldDefn.SetWidth(name,10)
address=ogr.FieldDefn('address',ogr.OFTString)
ogr.FieldDefn.SetWidth(address,20)
uid=ogr.FieldDefn('uid',ogr.OFTString)
ogr.FieldDefn.SetWidth(uid,30)
lat=ogr.FieldDefn('lat',ogr.OFTReal)
ogr.FieldDefn.SetPrecision(lat,6)
lng=ogr.FieldDefn('lng',ogr.OFTReal)
ogr.FieldDefn.SetPrecision(lng,6)
ogr.Layer.CreateFields(lay,[name,address,uid,lat,lng])
with open('supermarket.txt',mode='r',encoding='utf-8') as f:
row=f.readline().split('\t')
supermarket=ogr.Feature(ogr.Layer.GetLayerDefn(lay))
ogr.Feature.SetField(supermarket,'lat',row[1])
ogr.Feature.SetField(supermarket,'name',row[0])
ogr.Feature.SetField(supermarket,'lng',row[2])
ogr.Feature.SetField(supermarket,'address',row[3])
ogr.Feature.SetField(supermarket,'uid',row[4])
ogr.Feature.SetGeometry(supermarket,ogr.CreateGeometryFromWkt('POINT({} {})'.format(row[2],row[1])))
ogr.Layer.CreateFeature(lay,supermarket)
print('finished!')
GDAL OGR创建shp文件
最新推荐文章于 2023-01-10 10:56:54 发布
这段代码演示了如何使用GDAL/OGR库在Python中创建一个ESRI Shapefile,并从一个名为'supermarket.txt'的文本文件中读取数据,将数据写入Shapefile。它定义了字段如'name'、'address'、'uid'、'lat'和'lng',并创建了一个点几何类型。然后,从文本文件中读取每一行,创建特征并设置其字段值,最后将特征添加到图层中。
摘要由CSDN通过智能技术生成