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

ArcObjectsは、Esri Inc.のCOMベースのAPIのセットであり、ArcGIS Desktop、ArcGIS Engine、ArcGIS Serverなどの製品で使用されています。


10
ArcObjectsを始めますか?
開発者でなく、開発者になることを目指していない場合、ArcObjectsを始めるための最適なルートまたは場所は何ですか? 私は長い間、ほぼ20年にわたってgiをプロフェッショナルに使用してきましたが、そのほとんどはarcinfo / arcgisです。元気してるよ。私はソフトウェア開発を学んでおり、公開プロジェクトで使用されている小さなpythonアプリケーションもある程度成功しています。私は良くない!本格的なソフトウェア開発者になりたくはありませんが、プログラミングなしではできないことを実行し続けます(例)。arcgisの世界では、これは私をpythonキャンプにかなりまっすぐに連れて行ってくれます。私はpythonが好きなので、これで問題ありませんが、pythonはArcObjectsに直接アクセスできません。(PythonとArcObjects は可能ですが、サポートされていないルートです。この質問は、beatられたパスをたどることに関するものです。) 始める必要がありますが、どこで?Arcgisは、ESRI Developer Networkを使い始めるように言っていますが、1500ドル/年は間違いなく私の予算には含まれておらず、スレッジハンマーを使用して蚊を叩くように聞こえます。そして、.NET、Visual Basic、またはVisual C ++のどの言語ですか? 更新:すばらしい回答をありがとうございました。それらに照らして、「ArcObjects」が進むべき方向であると前提として、質問の範囲を不必要に狭めたことに気付きました。よりオープンエンドの定式化は、次のようなものです。 私はarcgisとpythonだけでは解決できない問題に直面し続けています。Xのような問題を解決するために他に何を学べますか?ソフトウェア開発者になることに興味も意図もありません。arcgis pythonモジュールに公開されていないことをいくつか行う必要があります。

3
OpenSource ArcObjectsプロジェクトはありますか?
オープンソースライブラリに基づくGISアプリケーションを開発する主な利点の1つは、多くのプロジェクトがオープンソースのライブラリの上に生まれることです。 うまく設計されたオープンソースプロジェクトは、以下を見るのに最適です。 使用するコーディングパターン どのコーディングスタイルに従うべきか より大きなプロジェクトを構成する方法 含める単体テスト 自動ドキュメント作成ツールと手順 ソース管理ワークフロー ArcObjectsのコードギャラリーは見て最適な場所と思われるが、私は見てきたほとんどの例は、機能や、単一のツールの非常に小さな部分ではなく、完全なアプリケーションです。 SharpGISのプロジェクトが従うべき素敵な.NETの例であるが、任意のArcObjectsの具体的なプロジェクトがあるのですか? 例で更新: http://eagl.codeplex.com/ Easy ArcGIS Libraryは、ArcObjectsの一般的な機能をラップするC#.netクラスのセットです。これにより、ArcGIS開発者は多くの一般的な機能を短時間で直接行うことができます。 そして、同じ開発者から: http://arcgisslcontrols.codeplex.com/ ArcGISSLControlsは、ArcGIS Silverlight SDKの上に構築された一連のArcGIS Silverlightコントロールであり、C#プログラミング言語で開発されています。

3
ポリラインの変曲点を見つけるアルゴリズム
私は変曲点、つまり線の曲線が開始および終了する点を見つけようとしています。画像を見ると、緑の線は道路または小川であり、黒の点は曲線の開始点と終了点です。 これらのポイントの生成を自動化するための高レベルのステップは何ですか?ArcGISデスクトップを使用しており、ArcObjectsを使用すると非常に便利です。


2
重み付きティーセンポリゴンを作成しますか?
ポイントシェープファイルがあり、次のスクリプト構文を使用してプログラムでティーセン(ボロノイ)ポリゴンを作成します。 CreateThiessenPolygons_analysis (in_features, out_feature_class, fields_to_copy) ただし、各ポイントはエリア(つまり、各ポリゴンの推奨サイズ)に関連付けられているため、このフィールドに基づいてティーセンポリゴンに重みを付ける必要があります。 それは可能ですか? VBAに関連するコードはありますか?

6
ArcObjectsを使用してEsri GeometryとWKTを変換しますか?
ArcGIS ArcObjects APIには、ArcObjectsジオメトリをWell-Known Text表現に変換する(およびその逆)手段がないようです。私が見つけた唯一のことは、WKBへの変換(IWkbインターフェイス)です。 ジオメトリオブジェクトとWKT間の変換を実行する方法はありますか、それとも自分で実装する必要がありますか?私は主に、多くの外部依存関係のない.NET実装を目指しています。

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
ArcPy Cost Path AnalysisツールがArcObjectsよりも高速である理由を理解できますか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 閉じた3年前。 Pythonを使用してジオプロセシングスクリプト/サービスを作成しましたが、ArcObjectsを使用して同等の操作を実行するとパフォーマンスが向上するという印象を受けました。 私が投稿したのArcGIS ServerのGPサービス- RasterIO.dllクラッシュのArcSOC.exeをし、ArcGISのジオプロセシングスクリプトは、デスクトップに罰金を実行しますが、ジオプロセシングサービスとしてクラッシュしますか?Spatial Analystツールを使用してジオプロセシングサービスとして機能するジオプロセシングスクリプトを取得する方法について、過去数日間にわたって説明しました。私の締め切りはすぐに近づいているので、希望の機能を達成するためにSOEルートに行くことにしました。 .NET ESRI.ArcGIS.SpatialAnalyst.RasterDistanceOpClass、特にCostDistanceFull()およびCostPath()メソッドを使用すると、ArcObjectsでコストパス分析を取得するのは比較的簡単でした。 私が物事をどのように行っているかのコードスニペット: Python # Get Cost Path Origin and Destination Points inputPointsShp = 'D:/RasterStuff/test_points.shp' arcpy.MakeFeatureLayer_management(inputPointsShp,"origin",' "TYPE" = \'ORIGIN\' ') arcpy.MakeFeatureLayer_management(inputPointsShp,"destination",' "TYPE" = \'DESTINATION\' ') # Check out the ArcGIS Spatial Analyst extension license arcpy.CheckOutExtension("Spatial") # Execute CostDistance outCostDistance = CostDistance("origin",SOURCE_RASTER,"#","backlink") # ...

2
.NETからarcpy / pythonを呼び出しますか?
Pythonを.NET ArcGISアドインまたはエクステンションに統合する方法を示す利用可能な例はありますか?.NETのフォームイベント(ボタンのクリックなど)から呼び出す一連のpythonスクリプトがあります。また、.NETフォームからスクリプトに変数を設定できるようにしたいと思います。 弾丸を噛んでこれらのスクリプトを.NETで書き直す必要がありますか、それともPythonコードをラップする簡単な方法がありますか?

5
ArcMapで陰影起伏オプションを使用していますか?
これは私が使用しているラスターのきれいな写真です-エフェクトは適用されていません-カラーランプとヒストグラムを調整して、すべてのレリーフを表示します-非常に2Dですが! 陰影起伏をデフォルトとして表示したいラスターレイヤーがあります。これはコードで行うことができ、実際には、ArcMapで陰影起伏オプションを選択するのと同じです(以下を参照)。 ただし、これを行うと、期待はずれに見えます。 特に、ラスターにズームインすると、あらゆる種類のグリッドアーティファクトが表示されます。 ただし、Spatial Analystのラスターを使用して適切な陰影起伏レイヤーを作成し、85%の透明度でオーバーレイすると、かなり見栄えがよく、非常に異なって見えます!: ArcMapでこの効果を実現し、Hillshadeオプションのデフォルトの機能を無効にするにはどうすればよいでしょうか(これは不可能か、ラスターが正しく表示されないために見落とした設定があると思います)。正しい設定を上書きまたは選択できる場合-ArcObjectsで実行できますか。 オプション1が不可能な場合、Hillshadeレイヤーを作成して(Spatial Analystを使用せずに)エフェクトを作成し、それを元のラスターに効果的に融合できます。つまり、ArcMapのコンテンツウィンドウで2つのレイヤーを表示したくない。1つのレイヤーだけが必要ですが、選択/構成の既定の陰影起伏レンダリングが必要です。これもプログラムで行う必要があります。つまり、ArcObjectsです。 私が学んだことの1つは、正しい空間参照および測定ユニットにDEMを配置する必要があること、または結果の陰影が黒すぎて誇張に見えることです-詳細については、このビデオをチェックしてください-非常に良い説明です。 だから、高品質の陰影起伏を生成するために何をする必要があるかがわかったと思いますが、ArcObjectsコードを微調整する必要があると思います。自分のグラフィックレンダリングを考え出し、これをArcMapにプラグインする必要があると考えています(グリッドのビットマップをクールな方法でレンダリングするdllがあります)。これを示す良い場所は、IRasterRendererのようなものでDraw()イベントをオーバーライドし、独自の画像レンダリングを挿入することだと思います。もちろん、再投影などで少し複雑になるかもしれません。 ArcMapでこのような低レベルのグラフィックレンダリングを行った人はいますか?もしそうなら、ガイダンスや知っておくべきことを提供できますか?

1
ArcMap / C#でWindowsクリップボードから選択したフィーチャ/ジオメトリを取得する方法
ArcMap 10にはカスタムツールがあります。ワークフローは次のとおりです。 「長方形でフィーチャを選択」ツールを使用してレイヤー内のフィーチャを選択します STRG + cを使用して機能をクリップボードにコピーします カスタムツールを選択します ツールはクリップボードをチェックします。クリップボードでコピーされたフィーチャーを見つける場合、ワークフローが変更されます http://kiwigis.blogspot.com/2011/07/how-to-create-drop-target-for-layers-in.htmlで、ドラッグアンドドロップを使用して同様の機能が実装されている例を見つけました。 この例に従って、適応し、STRC + cを使用してArcMapのTOC内のレイヤーをクリップボードにコピーしようとしています。 //Get the Data from the Clipboard IDataObject clipBoardDataObject = Clipboard.GetDataObject(); //The format of the object data is "ESRI Layers" (this can be checked using clipBoardDataObject.GetFormats();) MemoryStream geomStream = clipBoardDataObject.GetData("ESRI Layers") as MemoryStream; byte[] bytes = geomStream.ToArray(); IMemoryBlobStreamVariant memoryBlobStreamVariant ...

6
app.settingsのArcMapアドインがapp.configの変更を認識しないのですか?
構成ファイルが必要なArcMapアドインを開発しました。単一のApp.Configファイルから構成値を読み取ろうとすると(そして常にnullになります)しばらくすると、アドインはクラスライブラリであるため、ここから値を読み取れず、呼び出し元のアプリケーション(ArcMap)を探していると思いますキーの値を要求するときのの設定ファイル(nullのため)。 これを回避するために、アプリケーションが正常に読み取れるApp.Settingsファイルを使用しました。これを作成するとApp.Configファイルが環境に導入され、Visual Studioは開発中に2つのファイルの同期を維持するようです。 アドインが展開されたので、構成値(ログファイルの場所など)を変更できるようにする必要があります。.esriaddinファイルを開いて展開し、そこでApp.Configファイルを更新しようとしましたが、アドインはコンパイル時と同じ構成値を保持します。新しいApp.Config値は、アーカイブを閉じた後に再び表示できるため、.esriaddinファイルに保持されていることを知っています。 アドインを構成し、展開後にこの構成を更新可能にする信頼できる方法を誰かが知っていますか?これにはカスタム設定ファイルが必要なのはばかげているように思われるので、どんな提案でも大歓迎です。 App.Settingsの値はアプリケーションレベルにあり、現在App.SettingsとApp.Configの両方にビルドアクションがあります:なし/コピーしない。


2
.NETを使用したArcObjectsジオプロセシングの失敗を回避しますか?
ArcToolboxには使用できる便利な機能がいくつかありますが、何らかの理由でこれが適切に機能しません。それは私にエラーさえ投げません。 ソフトウェアはArcMap内で実行されているため、AoInitializeを再度行う必要はありませんか? public void Execute() { InitializeProduct(); try { Geoprocessor gp = new Geoprocessor(); gp.OverwriteOutput = true; FeatureToPoint featureToPoint = new FeatureToPoint(); string outputPathName = CurrentWorkspace.PathName + "\\teste_centroide"; featureToPoint.in_features = InputFeatureClass; featureToPoint.out_feature_class = outputPathName; featureToPoint.point_location = "INSIDE"; IGeoProcessorResult result = (IGeoProcessorResult)gp.Execute(featureToPoint, null); if (result == null) { for (int i ...

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.