ArcGIS Desktopを使用してポリゴンでポイントを分割する方法を教えてください。


8

郡のポリゴンフィーチャクラスによってポイントを分割する方法を探しています。添付の画像は、2つのフィーチャクラスを示しています。1つはポイントで構成され、もう1つは郡のポリゴンフィーチャクラスです。スプリットそれはポイントを許可されている場合ツールが理想的です。ポイント属性に追加フィールドを追加せずに、きれいな出力を望みます。さらに、新しいポイントフィーチャクラスを定義するポリゴンフィーチャクラス(Kiowa、Clark、Comancheなど)から郡名を取得したいと思います。解決策やアドバイスはありがたいです。

この例では、最終的な製品は、「Kiowa」、「Clark」、および「Comanche」という名前の3つのポイントフィーチャクラスであり、1つの大きなポイントフィーチャクラスから生成されます。自動化されたソリューションが理想的です。私が数十の郡にまたがって(多くの場合、KSの状態にまたがって)結合する多数のFCがあるからです。

ここに画像の説明を入力してください


3
この操作は、空間結合としてESRIソフトウェアユーザーに知られています。gis.stackexchange.com/questions/11047およびgis.stackexchange.com/questions/23398も参照してください。
whuber

@whuber空間結合アプローチで少なくとも5つのステップを想定します。1)空間結合2)郡に基づいてポイントを選択3)選択に基づいて新しいFCを作成します。4)郡に基づいてFCの名前を変更します5)新しいフィールドを削除します(例: "Join_count ")。プロセスを自動化する方法を見つける必要があります(リンクの1つは有望です)。また、「分割」がポリゴンフィーチャクラスに対して実行するものと同様の、より簡単なアプローチを見落としていることも期待していました。カーソルルートに行かなければならないかもしれません。
アーロン

Puis-je avoir le lien en languefrançaise?

アーロン、あなたのコメントはあなたの質問と完全には一致しません。この質問は、郡ごとに1つの出力FCが必要であることを示すものではありません。他の手順は不要です。一度に、唯一の属性が郡名である郡FCのコピーを作成します。ポイントへの空間結合により作業が完了します。最初にすべてのポイントデータセットをマージした場合(これは一般にスマートデータベース設計です)、プロジェクト全体を2つの手順で完了することができます:(1)空間結合(2)出力を郡名で分割:blah238の回答を参照してください。
whuber

@KhalilouWAGUEル先取特権・デ・ラ・jointure空間EN FR help.arcgis.com/fr/arcgisdesktop/10.0/help/index.html#//...
geogeek

回答:


4

空間結合または交差を使用して郡名属性を各ポイントに取得した後、ジオプロセシングモデルおよびスクリプトツールギャラリーで利用できるDan Pattersonの[ 属性によるレイヤー分割]ツールを使用してみてください。

または、ModelBuilderを使用して、場所によるレイヤーの選択(画像全体のサムネイルをクリック)を含む別のアプローチを使用してこれを自動化することもできます。

ここに画像の説明を入力してください

ESRIフォーラムのこのスレッドから解除:場所によるバッチ選択とシェープファイルのエクスポート


3

intersectコマンドを使用する方がはるかに簡単です。
不要なフィールドをオフにします。
1.新しい出力と交差します。
2.出力を元のOIDと結合します。
3. cnty名で新しいフィールドを計算します。

空間結合と位置による分割の拡張バージョンについては、ettoolsチェックしてください


2

私が読んだ内容から、郡ポリゴンデータセットを使用して、ポイントのオーバーレイ(ArcToolbox分析ツール-オーバーレイ-およびIdentity、Intersect、またはSpatial Join)を実行するだけです。ArcMapでは、郡レイヤーに表示されるフィールドを郡名のフィールドに制限でき、そのフィールドのみが結果に追加されます。追加したフィールドでも多すぎる場合は、ポイントテーブルの対応するフィールドに値を計算してから、追加したフィールドを削除します。


2

Pythonを使用すると、「場所でレイヤーを選択」をループして各郡に重なるポイントを取得し、それをシェープファイルとして保存できます。これは次のようなものです。

import arcgisscripting
# starts geoprocessing
gp = arcgisscripting.create()
gp.OverWriteOutput = 1

# Variable iniciation
points = u"Path for your point shape"
counties = u"Path for counties shape"
outDir = u"path for output directory"

#Load points as a layer
gp.MakeFeatureLayer(points, "points")

# Go county by county
rows = gp.searchcursor(counties)
row = rows.next()

# loop County by county overlap
while row.countyName: #adapt to your countie table of attributes
    # Make a layer from the feature class
    gp.MakeFeatureLayer(counties, "counties lyr", "[countieName]='" + row.countieName + "'")
    # Select all points that intersect the current countie polygon
    gp.SelectLayerByLocation(points, "intersect", "counties_lyr", 0, "new_selection")
    outSHP = outDir + row.counties + u".shp"
    gp.CopyFeatures_management(points, outSHP)
    print(outSHP)
    row = rows.next()
 # End of loop

 del rows, row, gp

 #END

私はそれをテストしていません、あなたはおそらくあなたのケースにそれを適応させなければなりません。

編集:@ blah238のアドバイスに従って、CopyFeatures_managementによるSelect_analysisを変更しました。


1
私はおそらくSelect_analysisをCopyFeatures_managementまたは類似のものに変更します-あなたはすでに選択を行っているので冗長です。
blah238

結果は同じですが、結果は同じですが、わかりやすくするために編集しました。
Alexandre Neto 2012

このスクリプトをありがとう。ローカルメモリの外でこれを行う方法はありますか?データセットで遭遇する問題は、750万点がレイヤーとして追加されたくないということです。
アーロン

(各郡からの)ポイントの一部のみをレイヤーとして追加します。スクリプトをArcMapの外で実行すると、スクリプトを表示する必要がないため、どのように動作するかを確認できます。しかし、別のことを試すことができます。まず、ポイントとポリゴンの間に空間(または交差)を作成します。これにより、ポイント情報と郡名を含む一時ファイルが作成されます。次に、郡をループして、Select_analysis(SpatialJoint_temp、outSHP、 "[countieName] = '" + row.countieName + "'")を使用します。それもうまくいくと思いますが、最初の解決策よりも効率が良いのかどうかわかりません。
Alexandre Neto 2012

0

現在、ArcPyカーソルを使用して属性と場所分割するというeラーニングビデオチュートリアル(無料ではありませんが、比較的安価)があり、次の方法を示しています。

Pythonスクリプトを記述して、ポリゴンフィーチャクラスを使用して1つのフィーチャクラスを、各ポリゴンの場所内にあるフィーチャごとに1つのフィーチャクラスに分割します。

これはこの質問の要件に対応していると思います。

免責事項:私はこのeラーニングビデオチュートリアルの作成者およびプレゼンターです

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