gpt4 book ai didi

python - 在 Python 中使用 OGR CreateField() 时出现段错误 (segfault)

转载 作者:太空狗 更新时间:2023-10-30 02:50:11 26 4
gpt4 key购买 nike

在 Ubuntu 中运行这个非常短的脚本时收到段错误。

from osgeo import ogr, osr

shpfile = 'Census_County_TIGER00_IN.shp'

def cust_field(field):
'''cust_field(shpfile, field) creates a field definition, which, by calling cust_field(), can be used to create a field using the CreateField() function.
cust_field() DOES NOT create a field -- it simply creates a "model" for a field, that can then be called later. It's weird, but that's GDAL/OGR, as far as I can tell.'''
fieldDefn = ogr.FieldDefn(field, ogr.OFTInteger)
fieldDefn.SetWidth(14)
fieldDefn.SetPrecision(6)
return fieldDefn

ds = ogr.Open(shpfile, 1)
lyr = ds.GetLayerByIndex(0)
field = cust_field("Test")
lyr.CreateField(field)

直到最后一行,iPython、普通 shell Python 和 IDLE 命令行都转储为段错误时,一切都运行顺利。这是我的错误还是我没有正确解决的底层 C 问题?

最佳答案

Is this an error on my end or an issue with the underlying C that I'm not addressing properly?

可能两者兼而有之。当 objects go out of scope and are garbage collected 时,GDAL/OGR 的绑定(bind)确实偶尔会出现段错误。 .虽然这是一个已知错误,但不太可能很快得到修复。

您很可能会找到解决此问题的方法。我无法在 Windows XP 和以下版本的 GDAL/OGR 上使用另一个 shapefile 重现此段错误:

 >>> gdal.VersionInfo('') 
'GDAL 1.6.0, released 2008/12/04'

您可以暂时尝试将 cust_field 函数重构到脚本主体中,如下所示:

from osgeo import ogr, osr

shpfile = 'Census_County_TIGER00_IN.shp'

ds = ogr.Open(shpfile, 1)
lyr = ds.GetLayerByIndex(0)
fieldDefn = ogr.FieldDefn("Test", ogr.OFTInteger)
fieldDefn.SetWidth(14)
fieldDefn.SetPrecision(6)

lyr.CreateField(fieldDefn)

如果这能解决您的问题,请告诉我。

关于python - 在 Python 中使用 OGR CreateField() 时出现段错误 (segfault),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4262411/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com