問題があり、頭を動かせないようです。2つのポリゴンレイヤーがあります。
- ポリゴンA-同じフィールドを持つポリゴンBのサブセットであり、ポリゴンBと同じポリゴンがあります
- ポリゴンB-ポリゴンAにしたい属性データがあります
これをどのように行うことができますか?QGISツール「位置による属性の結合」を試しましたが、一部のポリゴンは他のポリゴン内にあるため、最初に見つかった交差点(外側のポリゴン)にリンクする傾向があります。
問題があり、頭を動かせないようです。2つのポリゴンレイヤーがあります。
これをどのように行うことができますか?QGISツール「位置による属性の結合」を試しましたが、一部のポリゴンは他のポリゴン内にあるため、最初に見つかった交差点(外側のポリゴン)にリンクする傾向があります。
回答:
@Danoは、完全な返信で対処するのが最適な問題を正しく提起します。
@Celeniusがすでに指摘している難点の1つは、BとAの結合(どちらの方向でも)がすべてのフィールドを複製することです。これを修正するのは面倒です。私はコメントで、明らかな簡単な方法(スプレッドシートへのエクスポート)がデータの整合性の問題を引き起こすことを提案しました。 Celeniusの提案ですでに対処されているもう1つの難点は、AとBの両方のキーとして機能する属性の組み合わせがない場合、この問題を解決することです。空間結合はその問題を回避します。
それでは、良い解決策は何ですか? 1つのアプローチでは、Aを使用して、目的のデータを含むBの対応するレコードを識別します。ポリゴンの構成に関する前提に応じて(重なり合うか、他のポリゴンを含むことができるかなど)、これはさまざまな方法で実行できます:1つのレイヤーを使用して他のレイヤーのオブジェクトを選択するか、結合を使用します。ここでのポイントは、この段階でやりたいことは、Aに対応するBのサブセットを選択することだけです。
その選択を達成したら、選択をエクスポートして、A。Doneを置き換え ます。
このソリューションでは、BのすべてのフィールドがAの対応するフィールドを置き換えることを想定しています。そうでない場合は、B(ソース)からA(宛先)への1-1結合を実行する必要があります。 識別子に基づいた結合が最適ですが、IDが使用できず、AとBの対応するポリゴン形状がわずかに異なる可能性がない場合、ポリゴンID(Celenius)での結合は正常に機能します。(これは微妙なポイントであり、潜在的なエラーの潜在的な原因です。これは、GISが「スナップ」または「トポロジを維持」している場合、Aに対応しないポリゴンに対するBの以前の編集がBの他のポリゴンを目に見えないように変更する可能性があるためですまたは、ローカルの編集中に自動的にグローバルな変更を行います。)
この時点で、すべてのフィールドのコピーが2つあります。[Foo]がAとBに共通のフィールドである場合、結合にはA. [Foo]とB. [Foo]が含まれます。 フィールド計算を使用して、 B。[Foo]をA. [Foo]にコピーします。必要なすべてのフィールドについて繰り返します。これが完了したら、結合を削除します。
多くのフィールドが関係する場合、この手順は少し面倒ですが、そのメリットは次のとおりです。
この提案に含まれる指針のいくつかは次のとおりです。
多くの場合、同じ結果を得るためのより高速で簡単な方法があることに反対する人がいるかもしれません。はい、存在する可能性があり、効果的である可能性があり、通常、注意して実行すると機能します。ただし、データを危険にさらすソリューションは、汎用の回答として推奨および防御することは困難です。それらは、データの破損がすぐに明らかになり、そのようなミスの結果が重要でない小さなデータセットを使用する1回限りの状況で最もよく使用されます。
シェープファイル「B」のテーブルをExcelにエクスポートし、冗長な列と、不要な情報を含む列を削除します。必ず共有識別子の列を保持し、適切なフォルダーに保存してください。ArcMapに移動し、テーブルを追加してから、シェープファイル「A」を右クリックして、テーブル結合を実行します。リンクは、これを行う方法に関するビデオにつながるはずです。
@ whuber-アプローチ全体が健全であり、データの整合性を保証します。この答えに異議を唱えることができる唯一のことは、特定の状況/プロジェクトでは、アプローチでこの系統的であるための時間や予算を私たちに与える余裕がないということです。
実物の例:
ジュニアマイニングカンパニーは、資源を「証明」する能力に基づいて数百万ドルの現金を注入している主要な鉱体に座っています。出版物と地質図/データのデスクトップレビューは、非常にターゲットを絞った非常にコストのかかるドリルプログラムにつながります。アッセイが最初の実行から戻ってくると、これらの値はテーブル結合を介してそれぞれのポイント位置にタグ付けされ、データがDataMineにインポートするために苦労して準備されたExcel形式でポンプアウトされます(3D鉱体補間用)
私の経験では、プロジェクトの地質学者は、このデータをExcelで準備し、すべての書式ルール/慣例に従って(スペース、特殊文字などなし)、DataMineインポートファイルが.csv形式で配信されることを要求しました(とにかく当時)。これにより、ターゲットを絞った掘削により多くの投資が行われ、何度も何度もプロセスを再訪することになります。このすべては、通常、非常に厳しく重要なタイムラインで発生しました。
私たちはそれぞれ独自のストーリーと、物事を行う方法へのアプローチに組み込んだ独自の経験を持っています。そうは言っても、私の経験ではExcelは絶対的な必要性であり、ワークフローの重要なツールであると考えています。それは私が知っていることです。このデータの準備では、すべてのQA / QC予防措置を講じました。皆さんがExcelを嫌がる場合、それを使用する以外に選択肢がありませんでした。
1990年代後半に、55のNTSマップシートと記憶されていない数千の機能を含む、すべての水域と水路の大規模な更新を受け取りました。古い水文学の付加価値属性(湖の名前、表面標高など)を維持し、ジオメトリを置き換える必要がありました。古いものと新しいもののジオメトリは十分に近く、各ポリゴンの重心が新しいポリゴンの境界によって制限されることを保証できます。これは重要なポイントです。この基本的な確実性がなければ、以下のアプローチはお勧めできません。
この特定の場合の解決策は、属性をジオメトリに持ち込む代わりに、ジオメトリを属性に持ち込むことでした。したがって、概念的には:
arcinfo-worksationの詳細な説明とレシピについては、こちらをご覧ください。現代のArcgisまたはQgisで、属性レコードを同時に削除せずにジオメトリを削除することさえ可能かどうかはわかりませんが、念のため、ここにアイデアがあります。
確かではありませんが、おそらくいくつかのDBMSはSQL(?)のShapeフィールドで等値演算を実行します。2つのジオメトリが同一の場合、SQL =
演算子はtrue(WHERE A.Shape = B.Shape
)を返すはずです。
これが使用しているデータベースに当てはまる場合、非空間結合の場合と同じ構文を使用して空間結合を実行できるはずです。
これには、ST_Equalsメソッド(OGC標準)を使用できます。
いつものように、whuberは正しい。あなたのプロセスについて徹底的に考える必要があります。特に、これらが大きなデータセットであり、この操作が何度も行われる場合、またはデータがミッションクリティカルである場合。
データと責任を考慮してください。
あなたは何をした?
何してるの?
何をするつもりですか?
そして常に尋ねる:なぜ?
ここで、質問に直接照準を合わせた簡単な回答が1つあります。物事を行うには常に少なくとも5つの方法がありますが、通常は1つの最良の方法しかありません。
フルセットには、サブセットに入れたいすべての属性があり、サブセットには、古い情報を除いて、まだフルセットにないものはないと仮定します。
サブセットトポロジがフルセット(Origin / ProjectionおよびXY Toleranceを含む)と一致すると推測します。
1)[内部]チェックボックスをオンにしてポイントするフィーチャを使用し、サブセットからポイントフィーチャクラスまたはシェープファイルを作成します。
2)空間結合による選択を使用して、新しく作成されたポイントフィーチャクラスまたはシェープファイルに基づいたサブセットに対応するフルセット内のすべてのポリゴンを検索します。
3)フルセットから選択範囲をエクスポートします。これが新しいサブセットになる可能性があります。