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

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

2
.NET Genericsを使用してArcObjectsを格納していますか?
.NETでジェネリック型を使用して、ILayer、IFieldなどのArcObjectsを格納することにはどのような影響がありますか? これらの種類の値を使用すると、コンパイラは警告をスローします public class Foo { private List<ILayer> fooLayers; public List<ILayer> FooLayers { get { ... } set { ... } } } ここに警告があります: 警告15タイプライブラリエクスポーターの警告処理 'ArcMemorialCore.Topography.IMemorialDocument.set_ProfessionalsEnvolved(value)、ArcMemorialCore'。警告:タイプライブラリエクスポーターは、シグネチャでジェネリックタイプインスタンスを検出しました。汎用コードはCOMにエクスポートできません。ArcMemorialCore 私の懸念は、警告の存在だけでなく、優れた設計プラクティス、パフォーマンスなどにもあります。
11 arcobjects  .net 

2
10.2でArcGIS 10.1アプリケーションを実行する
ArcGIS 10.1がインストールされているPCでコンパイルされた.NETアプリケーションをサポートしています。アプリケーションは、ユーザーインターフェイスとArcGISデスクトップエクステンションに加えて、インストール時にデスクトップエクステンションを登録するためにWindowsインストーラーによって呼び出されるインストーラーアセンブリで構成されます。 私が抱えている問題は、10.1 ESRIアセンブリが見つからないためクラッシュするため、ArcGIS 10.2がインストールされたPCでアプリケーションが実行されないことです。v9.3以降、ESRIは、実行時にプログラムを最新バージョンにリダイレクトするためのパブリッシャーポリシーファイルを提供しなくなったようです。 アプリケーションの.exe.configにランタイムアセンブリバインディングを追加することにより、プログラムをリダイレクトして10.2アセンブリをロードすることができました。ただし、これはデスクトップ拡張をリダイレクトせず、アプリケーションのインストール時に10.1ライブラリを探すインストーラーの問題を解決しません。 ESRIのソリューションは、新しいバージョンのArcGISがリリースされるたびにアプリケーションを再コンパイルすることです。ただし、これは、エンドユーザーが使用しているすべてのリリースのArcGISのコピーが必要になることを意味します。そして、再コンパイルするためにアプリケーションコードを変更する必要があるたびに、異なるバージョンをアンインストールして再インストールする必要があります。 誰か提案はありますか?特定のバージョンを探すのを避けるために、実行時にライブラリを動的にロードできますか?他の解決策はありますか?



1
ArcMap定義クエリでNaNまたは±∞(特別な浮動小数点値)を参照していますか?
ArcMapが特別な浮動小数点値をユーザーに表示する方法を偶然発見しました。 +∞(正の無限大)は、 1.#INF –∞(負の無限大)は次のように表示されます-1.#INF—これは確認していません。 NaN(数値ではない)は右揃えで表示されます—左揃え<Null>と混同しないでください<Null>。これはNULL(欠損値)を示します。 (ところで、フィールド計算機で一意の値を取得すると、NaNはまったく表示されません。) しかし、これらの特別な値に基づいて行を選択するためのレイヤー定義クエリを作成する方法を発見していません。 ColumnName IS NULL 通常のNULL値のみが選択され、NaNは選択されません。 ColumnName = 1.#INF 構文が無効であるため拒否されます。 誰でもこれを行う方法を知っていますか? 1.#INF値をテーブルフィールドに保存するためのC#ArcObjectsコードスニペット(基本的な概念): 要求通り。私はもう仕事をしていないので、以下は私が使用した実際のコードではなく、現在テストすることはできませんが、上のスクリーンショットに示す効果が得られるはずです。 ITable table = …; int doubleFieldIndex = table.FindField(…); IRow row = table.CreateRow(); row.Value[doubleFieldIndex] = double.PositiveInfinity; row.Store();

1
プログラムでArcGIS Layer(* .lyr)ファイルのバージョンを決定する
IStorage、Microsoft Compound File Spec、ArcObjectsの逆シリアル化などを実行して、.lyrファイルのバージョンを検出しようとしました。 ArcObjectsを使用して、レイヤープロパティ、データソース、範囲などを取得できますが、LayerFileClassのdocumentVersionプロパティは、9.3レイヤーファイルの「esriArcGISVersion10」を常に報告します。 ILayerFile l = new LayerFileClass(); l.Open(fileName); LayerFileClass t = (LayerFileClass)l; string version = t.DocumentVersion.ToString(); どんな助けでもありがたいです。 2007年からのこの無愛想なフォーラム投稿に注意してください。

1
PythonのArcobject:フィーチャ(形状)ジオメトリを持つオブジェクトにインターフェイスを割り当てます
PythonでArcObjectを使用しようとしています。ジオメトリデータを持つオブジェクトにインターフェイス(IZ.InterpolateZsBetween)を割り当てることに問題があります。コードは次のとおりです。 from Comtypes.client import CreateObject, GetModule import arcgisscripting gp = arcgisscripting.create(9.3) gp.setproduct("ArcInfo") esriSystem = GetModule("C:/Program Files (x86)/ArcGIS/com/esriSystem.olb") esriGeometry = GetModule("C:/Program Files (x86)/ArcGIS/com/esriGeometry.olb") esriDataSourcesGDB = GetModule("C:/Program Files (x86)/ArcGIS/com/esriDataSourcesGDB.olb") esriGeoDatabase = GetModule("C:/Program Files (x86)/ArcGIS/com/esriGeoDatabase.olb") sPath ="c:/temp/test.gdb" pWSF = CreateObject(esriDataSourcesGDB.FileGDBWorkspaceFactory,\ interface=esriGeoDatabase.IWorkspaceFactory) pWS = pWSF.OpenFromFile(sPath, 0) pFWS = pWS.QueryInterface(esriGeoDatabase.IFeatureWorkspace) pFClass = pFWS.OpenFeatureClass("test_z") pFCursor = …

4
arcpyを使用して、ファイルGDBでリレーションシップクラスを検出するにはどうすればよいですか(またはできません)?
ファイルGDBで関係クラスを検出できるようにしたいと思います。スクリプトのユーザーはArcViewレベルのライセンスしか持っていない可能性があるため、リレーションシップクラスのあるワークスペースにあるフィーチャクラスのスキーマを操作する(特にフィールドを追加する)ことはできません。 関係クラスの存在を検出して、それらを文書化し、プログラムで回避し、スクリプトを続行できるようにするにはどうすればよいですか?

4
SHAPE_Lengthは標高値を考慮しますか?
ないShape_Length属性は、標高を考慮に入れますか?例えば、私は3ポイントを持っている場合:A、B、およびC A.X = 10 A.Y = 10 A.Z = 10 B.X = 10 B.Y = 10 B.Z = 50 C.X = 0 C.Y = 0 C.Z = 10 次にL1、との2つの行を作成しますL2。 L1.fromPoint = A L1.toPoint = C L2.fromPoint = B L2.toPoint = C 結果で観察しているのは、SHAPE_Length属性がとの両方L1で同じであることL2です。すべてのポイントとすべてのポリラインがZAwareであることを確認しました。 では、SHAPE_Length属性が形状のZを考慮していると仮定するのは間違っていますか? Z値の保存や操作は問題ありません。IPolylineを使用しています。 私が聞いたことから、SHAPE_Lengthは2Dのみであり、編集できません。

2
ArcGIS 10アドイン:トップレベルの例外処理
私が取り組んでいるArcGIS 10アドインは非常にシンプルです。ツールコントロールとドッキング可能なウィンドウだけです。ソースで発生すると予想される特定の例外を処理し、他のすべてをスローしますが、アドインフレームワークでこれらの予期しない例外を処理するためのベストプラクティスは何ですか? 私は現在、を実行して、catch (System.Exception ex)それを処理できる上位レベルのメソッドを持たないすべてのメソッドのMessageBoxに表示していますが、これはベストプラクティスのようには見えません(もちろん、FxCopはひねりを加えています)それについて)。 ArcGIS 10アドインフレームワークには、最上位の例外ハンドラーをイベントApplication.ThreadExceptionやAppDomain.UnhandledExceptionイベントなどに接続するための機能はありますか? アドインは単なるクラスライブラリであり、基盤となるアプリケーションの起動コードにアクセスできないアプリケーション(私が収集したものから、これらのイベントは起動プロセスの非常に早い段階でフックする必要がある)ではないように見えるので、私の推測はそうではありませんが、アドインで「予期しない」例外を処理する方法について、専門家の意見があれば教えてください。

1
ArcMapアドイン-プログラムによる相互運用接続の追加
現在、ArcMap-.Netフレームワークを使用するArcViewのアドインを構築しています。 ArcMapとアドインのユーザーは、WFSサービスから公開されたデータにアクセスする必要があります。 Interoperability Connectionsインターフェイスを介してWFSサービスを手動で追加できることを認識しています。 しかし、これらのWFSサービスをプログラムで追加することは可能ですか?(可能性は-私のユーザーはこれらを手動で追加するのが難しいと感じるでしょう) もしそうなら、どうすればそれができるでしょうか? この件に関する情報は見つかりません。

2
ArcMapエクステンション9.3対10
ArcMap 10で動作するようにArcMapエクステンションを更新しました。主に、参照をESRI.ArcGIS.ADFからESRI.ArcGIS.ADF.Localに変更し、すべての参照に対して 'Specific Version'プロパティの値をfalseに設定し、新しいESRIRegAsm.exeを使用して登録します。では、9.3.1と10.0の両方で機能する単一の拡張機能を構築できるのか、それとも製品ごとに個別のバイナリが必要なのでしょうか。

3
Pythonプログラムを実行するボタンをArcMapに作成しますか?
ツールバーのボタンがクリックされたときにArcMap内で実行するスクリプトがあり、これまでのところ、スクリプトをスクリプトツールにすることしかできません。ジオプロセシングツールとしてではなく、コマンドとして実行する必要があります。 これをジオプロセシングツールとして実行すると、コマンドラインウィンドウから同じコードを実行する場合よりも時間がかかります。ArcObjectsの調査を開始したばかりですが、必要な場合はそれを使い始めたいと思います。 ボタンを作成するためのサンプルコードまたはリソースがあれば、それは素晴らしいことです。

2
ArcObjectsをモッキングでユニットテストするにはどうすればよいですか?
私はユニットテストの大ファンですが、それでもFGDBを利用して、ArcObjectsフレームワークの使用時にユニットテストを実行するための機能を取得します。 IFeature、IGeometry、IWorkspaceなどのモックに対してうまくモックを使用している人はいますか。そうであれば、それを行う方法の例をいくつか見てみたいと思います。私はあなたがどのようなモックフレームワークを使用するかについては特に気にかけていません。 私が見ている問題は、同じオブジェクトの非常に多くのインターフェース間でスライスしてダイスを作成しなければならないことです。そのため、代表的なモックオブジェクトを作成するオーバーヘッドが非常に大きくなります。

3
ArcGISは、非等間隔投影で2つのポイント間の距離をどのように計算しますか?
これは、私の前の質問に対するフォローアップの質問です。座標系の投影法について、よく書かれた紹介文を提案できますか? 私がCH1903マップ投影で作業していると仮定しましょう。これは、私が知っていることはすべて共形ですが、等距離ではありません。つまり、角度(形状)は保持されていますが、面積、距離、スケールは保持されていません。(少なくともこれらは正確に保存されていません)。ここまでは順調ですね。 2点間の距離を計算するときに、ArcGISがどのような計算を実行するのか疑問に思っています。ArcObjectsでは、次のようにIProximityOperatorインターフェイスを使用できます。 IPoint a = ..., b = ...; double distance = ((IProximityOperator)a).ReturnDistance(b); 質問:距離を正確に保持しないリファレンスシステムを使用している場合、(上記のように)2点間の距離をクエリするときにArcGISは何をしますか? それは単に距離を取得するためにいくつかのピタゴラスの数学(a 2 + b 2 = c 2)を実行しますか?つまり、返される距離は投影が許す限り正確になりますか? または、より正確な距離を取得するために、何らかの形の再投影など、より複雑なことを行いますか? (同じ質問ですが、より一般的には、そのジオメトリが投影された後、ArcGISはすべての計算をユークリッド空間で単純に実行しますか、それとも、使用されたマップ投影は、距離、角度、面積などの計算に影響しますか?)

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