Python gdal 在使用 ogr Within、Contains 或其他时停止工作
Python gdal stopped working when using ogr Within, Contains or other
更新: 通过进一步调查,我发现它一定是由某种损坏的几何图形引起的。但即使我 运行:
if drillhole[1].IsValid():
它导致了崩溃。所以不确定如何检查它。
我正在尝试测试线是否在多边形内。使用 shapely 它对我非常有用,除了速度 - 我有数万条线,多边形也一样。我只是想测试 ogr 是否可以更快地做到这一点,但运气不好。
import ogr
#Load cells as polygons with slight buffer
data_source = ogr.Open(file_path_cells)
source_layer = data_source.GetLayer()
source_layer.ResetReading()
cells = []
for source_feature in source_layer:
feature_id = source_feature.GetFieldAsInteger(0)
feature_geometry = source_feature.geometry()
feature_geometry = feature_geometry.Buffer(0.1, quadsecs = 3)
cells.append((feature_id,feature_geometry))
#Load drillholes as lines wihtin cells
data_source = ogr.Open(file_path_drillholes)
source_layer = data_source.GetLayer()
source_layer.ResetReading()
drillholes = []
for source_feature in source_layer:
feature_elev = source_feature.GetFieldAsInteger("elev")
feature_geometry = source_feature.geometry()
drillholes.append((feature_elev,feature_geometry))
for cell in cells:
for drillhole in drillholes:
if cell[1].Contains(drillhole[1]):
print("yes")
else:
print("no")
知道这条线有什么问题吗?:
if cell[1].Contains(drillhole[1]):
在我的 Windows 7 台机器上,我总是 python.exe 停止工作...
问题签名:
Problem Event Name: APPCRASH
Application Name: python.exe
Application Version: 0.0.0.0
Application Timestamp: 5193f3af
Fault Module Name: gdal111.dll
Fault Module Version: 1.11.2.0
Fault Module Timestamp: 54e65215
Exception Code: c0000005
Exception Offset: 00000000005e5fb3
OS Version: 6.1.7601.2.1.0.768.3
或者是否有其他更快的方法或方法如何提高使用 shapely 的速度?
更新: 通过进一步调查,我发现它一定是由某种损坏的几何图形引起的。但即使我 运行:
if drillhole[1].IsValid():
它导致了崩溃。所以不确定如何检查它。
我正在尝试测试线是否在多边形内。使用 shapely 它对我非常有用,除了速度 - 我有数万条线,多边形也一样。我只是想测试 ogr 是否可以更快地做到这一点,但运气不好。
import ogr
#Load cells as polygons with slight buffer
data_source = ogr.Open(file_path_cells)
source_layer = data_source.GetLayer()
source_layer.ResetReading()
cells = []
for source_feature in source_layer:
feature_id = source_feature.GetFieldAsInteger(0)
feature_geometry = source_feature.geometry()
feature_geometry = feature_geometry.Buffer(0.1, quadsecs = 3)
cells.append((feature_id,feature_geometry))
#Load drillholes as lines wihtin cells
data_source = ogr.Open(file_path_drillholes)
source_layer = data_source.GetLayer()
source_layer.ResetReading()
drillholes = []
for source_feature in source_layer:
feature_elev = source_feature.GetFieldAsInteger("elev")
feature_geometry = source_feature.geometry()
drillholes.append((feature_elev,feature_geometry))
for cell in cells:
for drillhole in drillholes:
if cell[1].Contains(drillhole[1]):
print("yes")
else:
print("no")
知道这条线有什么问题吗?:
if cell[1].Contains(drillhole[1]):
在我的 Windows 7 台机器上,我总是 python.exe 停止工作... 问题签名:
Problem Event Name: APPCRASH
Application Name: python.exe
Application Version: 0.0.0.0
Application Timestamp: 5193f3af
Fault Module Name: gdal111.dll
Fault Module Version: 1.11.2.0
Fault Module Timestamp: 54e65215
Exception Code: c0000005
Exception Offset: 00000000005e5fb3
OS Version: 6.1.7601.2.1.0.768.3
或者是否有其他更快的方法或方法如何提高使用 shapely 的速度?