আমি qgis:clip
কনসোল থেকে অ্যালগরিদম চালানোর চেষ্টা করছি , তবে ওভারলে প্যারামিটার হিসাবে ইন-মেমোরি স্তরটি ব্যবহার করার সময় একটি ত্রুটি পাচ্ছি। এটি কি প্রত্যাশিত হবে, বা আমি কিছু ভুল করছি?
কোড:
mem_layer = QgsVectorLayer("Polygon?crs=epsg:4326", "temp_layer", "memory")
if not mem_layer.isValid(): raise Exception("Failed to create memory layer")
mem_layer_provider = mem_layer.dataProvider()
clip_polygon = QgsFeature()
clip_polygon.setGeometry(QgsGeometry.fromRect(
QgsRectangle(
self.output_layer.extent().xMinimum() + 10,
self.output_layer.extent().yMinimum() + 10,
self.output_layer.extent().xMaximum() - 10,
self.output_layer.extent().yMaximum() - 10
)
))
mem_layer_provider.addFeatures([clip_polygon])
mem_layer.updateExtents()
output = self.output_layer_path + "2"
processing.runalg("qgis:clip", layer, mem_layer, output) # Fails
উপরের কোডে self.output_layer
এবং layer
ভেক্টর স্তর অবজেক্টগুলি রয়েছে (কিউজেসভেেক্টর লাইয়ার - যথাযথগুলি, ডিস্কে শেপফাইল থেকে লোড করা), self.output_layer_path
একটি পাথ সহ পাইথন স্ট্রিং অবজেক্ট।
আমি যে ত্রুটিটি পাচ্ছি তা এখানে:
"C:/OSGEO4~1/apps/qgis/./python/plugins\processing\core\GeoAlgorithm.py", line 150, in
execute self.processAlgorithm(progress)
File "C:/OSGEO4~1/apps/qgis/./python/plugins\processing\algs\ftools\Clip.py", line 72,
in processAlgorithm index = utils.createSpatialIndex(layerB)
File "C:/OSGEO4~1/apps/qgis/./python/plugins\processing\algs\ftools\FToolsUtils.py",
line 31, in createSpatialIndex features = QGisLayers.features(layer)
File "C:/OSGEO4~1/apps/qgis/./python/plugins\processing\core\QGisLayers.py", line 211,
in features return Features(layer)
File "C:/OSGEO4~1/apps/qgis/./python/plugins\processing\core\QGisLayers.py", line 218,
in __init__ self.iter = layer.getFeatures()
AttributeError: 'NoneType' object has no attribute 'getFeatures'
আমি যদি আমার প্রসেসিং কলটিকে নিম্নলিখিতটিতে পরিবর্তন করি তবে এটি ত্রুটি ছাড়াই চলে:
processing.runalg("qgis:clip", layer, self.output_layer, output) # Runs fine
এছাড়াও, যদি কোনও সহায়তা করে তবে প্রসেসিং_কিগিস.লগ-এ লগড হওয়ায় এটি ব্যর্থ অ্যালগরিদম:
processing.runalg("qgis:clip","C:/path/to/shapefile.shp|layerid=0|subset=CONTINENT =
'Europe'","Polygon?crs=epsg:4326","C:/path/to/output")
import tempfile
এবংtempfile.gettempdir
)) এভাবেই qgis প্রক্রিয়াকরণ যাহাই হউক না কেন কাজ করে