タグ付けされた質問 「memory」

3
ArcObjectsのIFeatureClass.Search(直接接続を使用するSDEのみ)のメモリリークに対処しますか?
ESRIサポートは、問題を再現し、バグレポート(NIM070156)を開いたと言います。 .NET / C#ArcMapアドインのツールが空間クエリ(クエリフィルターでICursorfrom IFeatureClass.Searchを返す)を実行するときに発生するメモリリーク(アンマネージヒープメモリ)があると判断しましたISpatialFilter。すべてのCOMオブジェクトは、必要がなくなるとすぐに解放されます(を使用Marshal.FinalReleaseCOMObject)。 これを判断するには、まず、ArcMap.exeのプライベートバイト、仮想バイト、ワーキングセットのカウンターを使用してPerfMonセッションを設定し、クエリを実行するツールを使用するたびに3つすべてが着実に増加(反復ごとに約500 KB)することに注意しました。重要なのは、直接接続(ST_Geometryストレージ、Oracle 11gクライアントおよびサーバー)を使用してSDEのフィーチャクラスに対して実行された場合のみです。ファイルジオデータベースを使用する場合、およびアプリケーション接続を使用する古いSDEインスタンスに接続する場合、カウンターは一定のままでした。 その後、LeakDiagとLDGrapherを使用し(このブログ投稿からのいくつかのガイダンスを使用)、Windowsヒープアロケーターを3回ログに記録しました。さらに数十回。 LDGrapherのデフォルトビュー(合計サイズ)に表示される結果は次のとおりです。 赤い線の呼び出し履歴は次のとおりです。 ご覧のとおりSgsShapeFindRelation2、sg.dll の関数がメモリリークの原因となっているようです。 私が理解しているように、sg.dllはArcObjectsで使用されるコアジオメトリライブラリSgsShapeFindRelation2であり、おそらく空間フィルターが適用される場所です。 他のことをする前に、他の誰かがこの問題(または同様の問題)に遭遇したかどうか、そしてそれについて何ができるかを確認したかっただけです。また、直接接続でのみこれが発生する理由は何ですか?これは、ArcObjectsのバグ、構成の問題、またはプログラミングの問題のように聞こえますか? この動作を生成するメソッドの最小動作バージョンは次のとおりです。 private string GetValueAtPoint(IPoint pPoint, IFeatureClass pFeatureClass, string pFieldName) { string results = ""; ISpatialFilter pSpatialFilter = null; ICursor pCursor = null; IRow pRow = null; try { pSpatialFilter = new SpatialFilterClass(); pSpatialFilter.Geometry = pPoint; …

1
Pythonは.mxdのファイルサイズを増やします
次を実行するジオプロセシングスクリプトがあります。 arcpy.AddMessage("TEST...") はい、たった1行のコードです。 スクリプトを実行してファイルサイズの増加分を保存すると、空の.mxdが391kbから始まります。 391 kb 431 kb 451 kb 471 kb and so on... ジオプロセシングPythonスクリプトは、ファイルサイズを毎回20〜30 kb増加させるようです。 私は実際に何かをするスクリプトでこのテストを実行し、ファイルサイズを40〜60 kb増やします... また、空のスクリプトを実行しましたが、それは絶対に実行するだけで、ファイルサイズは20〜30 KB増加します... ESRI Techを見つけることができたものから ファイルサイズの増加は、ArcCatalogのArcToolboxの[結果]タブに格納されている大量のジオプロセシング結果が原因である可能性があります。 記事の手順に従って、新しい.mxdに保存することで、ファイルサイズを589 kbから293 kbに減らすことができました。 あなたの考え、これでの経験は?誰かがPythonスクリプトから結果タブを自動削除する方法を見つけたので、毎回新しい.mxdを保存する必要はありませんか? 更新: @AHIGH AHIGHが示唆するジオプロセシングオプションをいろいろ試してみました。ファイルサイズの増加を止めるようには見えません。 @ artwork21ジオプロセシング>結果に移動して結果を削除すると、ファイルサイズが小さくなります。とにかくこのプロセスを自動化して、スクリプトの実行後に結果が自動削除されるようにしますか? ESRI:ジオプロセシングオプションを使用してツールの実行を制御する 一時的な結果の設定に関係なく、ArcMapのコンテンツウィンドウに残っているツールの結果はすべてディスクに保存されます。これは、ジオプロセシングでは、マップドキュメントを保存することにより、ArcMapのコンテンツウィンドウ内のすべてを保存することを前提としているためです。 ファイルサイズが肥大化する結果を除いて、すべてを保存したい... マップドキュメントを保存したくないが、個々のレイヤーにデータを保存する場合は、レイヤーを右クリックし、[データ]> [永続的な設定]をクリックします。 実際には実用的な解決策ではありません... 10.1には、問題を修正できる新しい機能があります。推測して、できるだけ早く10.1にアップグレードするように会社をプッシュする必要があります。 Pythonツール 回避策: [ジオプロセシング]> [ジオプロセシングオプション]> [結果管理]> [結果を次よりも古い状態に保つ]> [保存しない]に設定します。 これにより、ファイルサイズの増加が止まります。 または、Arcmapから独立して実行するようにスクリプトを記述してみることもできます(つまり、Arcmapを開かずに)。 より効率的なコードを記述して、より速く実行できます。一度に複数のmxdを実行するスクリプトのように。
14 python  arcmap  memory 

1
RasterLayerの@ data @ valuesスロットには、実際の値ではなくlogical(0)のみが含まれているのはなぜですか?
NDVIのラスターを読み取ると、手動で設定するまで@ data @ valuesスロットに実際の値が含まれないのは、理由の一番下に到達しようとしています。例えば: NDVI <- raster("./filename.tif", crs="+proj=longlat +datum=WGS84") NDVI@data@values ## returns: logical(0) これは、同じ方法で読み込んだ他のラスターでは発生しなかったため、混乱しています。もっと具体的になりたいのですが、以前と違うことをしたことは覚えていません。以下を使用して、値を手動で取得するのは簡単です。 NDVI1@data@values <- getValues(NDVI19east) しかし、すべてのファイルに対してこれを行う必要があるのは、まだ苦痛です。したがって、2つの部分から成る質問: そもそもなぜこれが起こったのですか?ラスターファイルの格納方法(つまり、メモリにあるかどうか)に関係があることは理解していますが、データにアクセスするために使用するメソッドがどのように変更されるかを本当に理解することはできません... ファイルをRasterLayersとして読み取り、それらのファイルの値にアクセスするために、このプロセスを自動化する方法はありますか(おそらくlapplyに似た方法を使用して)?私の現在のプロジェクトでは、NDVI、Rainfall、およびその他の環境変数の6〜10個のファイルを一度に読み取り、それらを組み合わせていくつかの加重オーバーレイを実行します。データをインポートするプロセスを自動化すると役立ちます。
12 raster  r  memory 

3
QGIS処理からメモリ出力を読み込む方法は?
多くの処理アルゴリズムには、出力をメモリとして保存するオプションがあります。ツールボックスから実行した場合、[アルゴリズム実行後に出力ファイルを開く]チェックボックスをオンにできるため、これは正常に機能します。 QGISのソースコードを見ると、メモリレイヤーをロードするためのコードが関数で定義されているようPostprocessing.handleAlgorithmResultsです。この関数はalg.outputsリストへのアクセスを使用して、次のことを行います。 for out in alg.outputs: progress.setPercentage(100 * i / float(len(alg.outputs))) if out.hidden or not out.open: continue if isinstance(out, (OutputRaster, OutputVector, OutputTable)): try: if out.value.startswith('memory:'): layer = out.memoryLayer # NOTE!! QgsMapLayerRegistry.instance().addMapLayers([layer]) # NOTE!! else: # ... コンソールから処理アルゴリズムを実行するときに、このオブジェクトにアクセスせずにレイヤーをロードする方法はありますか?走れる processing.runalg("qgis:intersection", layer1, layer2, "memory:") あるいは processing.runalg("qgis:intersection", layer1, layer2, "memory:myLayerName") しかし、結果の出力を取得する方法が見つかりません。

1
ラスターパッケージがRで使用するメモリを制限しますか?
rasterパッケージが使用するメモリRを5GBのRAM に制限する最も簡単な方法は何ですか? 理想的には、このサイズを超えるラスターをハードドライブに書き込み、一時ファイルから分析する必要があります。 Windows 7(64ビット)とRバージョン3.0.3を使用しています。 これは、16 GBのRAMを搭載したマシンで使用していたコードですが、大きなラスターを処理しているため、次第に最大になっていきます。 require(raster) memory.limit(size = 5000) rasterOptions(format="GTiff",overwrite=TRUE,datatype="INT1S", tmpdir="C:/Research/BIN",tmptime=1.1,progress="text",chunksize=1000, maxmemory=1000) rasterTmpFile("delete_me_") r <- raster("myraster.tif") r[r==0] <- NA スクリプトのこの段階で、RAMの使用量が増加してすべての16GBが使用され、動作が停止して関数がキャンセルされます。 ここで何を変更する必要がありますか?
10 raster  r  memory 

1
QGIS処理でメモリ内ベクターレイヤーを使用する/ SEXTANTE
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) # …

1
Arc 10.1を実行するための最大メモリ使用量の上限を増やす方法は?
これが厳密にGIS関連であるのか、おそらくStackOverflowに属しているのかわからない...それはESRI ArcGIS 10.1に関するものなので、ここではそのままにします。 私は能力を処理高めるためのオプションを探しています、と私は役に立たない読んだビットと作品を ArcGISのためのメモリ使用量の上限を増やすことについて。 32ビットWindows 7、3.33 GHz Intel DuoCore、4 GB RAMコンピュータでESRI ArcGIS 10.1(すべてのライセンス)を使用しています。私は最終的に、8 GBのRAMを備えたより強力な64ビットコンピュータにアップグレードする予定です。その間、または新しいコンピュータが入手されたときに何をすべきかを知りたいのです。 ありがとう!

2
pyqgisを使用してメモリ内のレイヤーを複製しますか?
QGISにレイヤーがあり、それをプラグインを介して複製したいので、オリジナルを変更せずに、そのコピーを好きなように使用できます。 もちろんlayer2 = layer1、これは機能しません。これは、layer2で発生するすべてがlayer1でも発生するためです。 私がそれをすることがわかった唯一の方法はそのようなものです: QgsVectorFileWriter.writeAsVectorFormat(layer1,r"C:\Users\ABC\AppData\Local\Temp\NewLayer.shp","utf-8",None,"ESRI Shapefile") layer2 = QgsVectorLayer("C:\Users\ABC\AppData\Local\Temp\NewLayer.shp","New vector","ogr") #do something with layer2 新しいファイルを書き込むことなく、メモリ内のレイヤーを複製する簡単な方法はありますか?

1
arcpyでのin_memoryワークスペースの同時使用
フィーチャクラスから小さなポリゴンを削除するPythonスクリプトを使用しています。このスクリプトは、「in_memory」ワークスペースに固定(ハードコード)名を持つ一時的なフィーチャクラスを作成します。例: arcpy.CopyFeatures_management("in_fc","in_memory/item_a") これはかなり再利用可能なスクリプトなので、ジオプロセシングチェーンの多くのポイントで使用します。 異なるプロセスから(同時に)2回呼び出された同じスクリプトが、たとえば "in_memory / item_a"で競合することは危険ですか?または、「in_memory」ワークスペースはプロセスごとに分かれていますか? ArcInfo 10.0を使用しています。
8 python  arcpy  memory 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.