Python 创建形状文件
我想使用2个点创建一个shapefile(一条线) 我有以下脚本:Python 创建形状文件,python,ogr,Python,Ogr,我想使用2个点创建一个shapefile(一条线) 我有以下脚本: import ogr, sys, os line=ogr.Geometry(ogr.wkbLineString) line.AddPoint(10,10) line.AddPoint(20,20) driver=ogr.GetDriverByName('ESRI Shapefile') ds=driver.CreateDataSource('C:\test.shp') layer=ds.CreateLayer('test',
import ogr, sys, os
line=ogr.Geometry(ogr.wkbLineString)
line.AddPoint(10,10)
line.AddPoint(20,20)
driver=ogr.GetDriverByName('ESRI Shapefile')
ds=driver.CreateDataSource('C:\test.shp')
layer=ds.CreateLayer('test', geom_type=ogr.wkbLineString)
fieldDefn=ogr.FieldDefn('id', ogr.OFTInteger)
layer.CreateField(fildDefn)
featureDefn=layer.GetLayerDefn()
feature=ogr.Feature(featureDefn)
feature.SetGeometry(line)
feature.SetField('id',1)
layer.CreateFeature(feature)
我有两个错误
“错误1:无法创建文件.shp文件。
错误4:无法打开Shapefile“
有人知道问题是什么吗?
有人能帮我吗?
非常感谢您需要替换
\t
字符;它们表示python字符串文字中的制表符。将斜杠加倍,或者使用原始python字符串:
ds=driver.CreateDataSource('C:\\test.shp')
或
(注意字符串开头的
r
。您忘记通知大地测量系统。下面这条路行得通
import ogr, sys, os
import osgeo.osr as osr
line=ogr.Geometry(ogr.wkbLineString)
line.AddPoint(10,10)
line.AddPoint(20,20)
driver=ogr.GetDriverByName('ESRI Shapefile')
ds=driver.CreateDataSource('test.shp')
srs = osr.SpatialReference()
srs.ImportFromEPSG(4326)
layer=ds.CreateLayer('test', srs, ogr.wkbLineString)
fieldDefn_=ogr.FieldDefn('id', ogr.OFTInteger)
layer.CreateField(fieldDefn_)
featureDefn=layer.GetLayerDefn()
feature=ogr.Feature(featureDefn)
feature.SetGeometry(line)
feature.SetField('id',1)
layer.CreateFeature(feature)
如果您想知道为什么您的id字段不起作用:在创建字段时出现了一个输入错误:
layer.CreateField(fildDefn)
应该是layer.CreateField(fieldDefn)
import ogr, sys, os
import osgeo.osr as osr
line=ogr.Geometry(ogr.wkbLineString)
line.AddPoint(10,10)
line.AddPoint(20,20)
driver=ogr.GetDriverByName('ESRI Shapefile')
ds=driver.CreateDataSource('test.shp')
srs = osr.SpatialReference()
srs.ImportFromEPSG(4326)
layer=ds.CreateLayer('test', srs, ogr.wkbLineString)
fieldDefn_=ogr.FieldDefn('id', ogr.OFTInteger)
layer.CreateField(fieldDefn_)
featureDefn=layer.GetLayerDefn()
feature=ogr.Feature(featureDefn)
feature.SetGeometry(line)
feature.SetField('id',1)
layer.CreateFeature(feature)