ArcGIS for Desktopを使用してポイントフィーチャの周囲に正方形のバッファーを作成しますか?

ポイントフィーチャから正方形のバッファを作成したいのですが、そこに含まれるコードがわかりません。

forums.esri Webサイトで同様の質問がありましたが、それは10年以上前であり、コードを試したときに機能しませんでした。

正方形を作成するにはどうすればよいですか。ポイント機能からのバッファ?

コメント

  • gis.stackexchange.com/questions/12479 / … は本質的に重複しています(この質問の一般化に対応しているため)が、ここには正方形のバッファーに固有の適切な回答がすでにあるため、最善のようです。両方のスレッドをマージするのではなく、開いたままにして分離します。しかし、さらに多くの解決策が必要な場合は、他のスレッドも読んでください!
  • OK、whuberに感謝します。昨日このウェブサイトを見つけましたが、'まだ慣れています。 '今後の投稿/質問でそれを試みます。 'このサイトはArcGISフォーラムよりもずっと気に入っています。
  • 私は'そのコメントを意味していません何らかの批判として、キンボール:2つのスレッドのマージを防ぐためにありました。'すべてです。私たちのコミュニティへようこそ! (そして、私たちについて、特にArcGISフォーラムの友達に教えてください。:-)
  • そうです。 'そういう意味ではなかったと思います。私はこのコミュニティをとても楽しんでおり、すでにこの新しいフォーラムについて他の人に話し始めています。
  • 多大なシェアをありがとうございます。ポイントフィーチャのフィールドデータのセットを使用して、座標を手動で入力せずに、指定したスクリプトを使用して長方形のバッファーを作成するにはどうすればよいか疑問に思っています。ありがとう

回答

ArcMap10で次の手順を試してください。

  1. バッファポイント機能(ArcToolbox>分析ツール>近接>バッファ)。 [線形単位]ボックスで正しい距離を選択してください。
  2. 新しく作成したバッファをポリゴンへのフィーチャエンベロープツールに入力します(データ管理ツール>機能>ポリゴンへの機能エンベロープ)。複数のポイントがある場合は、必ず[マルチパーツ機能の作成]ボックスを選択してください。

Pythonソリューションの場合:

SearchCursorとInsertCursorを使用して正方形のバッファを作成する

ここに画像の説明を入力します

コメント

  • +1ソリューションが機能することを示す返信が最適です。

回答

考えられる解決策は、標準のESRIバッファーツールを使用して、任意の半径で「通常の」ラウンドバッファーを作成し、その結果得られたバッファーのフィーチャクラスでFeature Envelope ToPolygonを実行することです。これにより、各フィーチャの範囲の周りに正方形のエンベロープフィーチャが作成されます。 Feature Envelope to Polygonは、Data Management> Features内にあります。モデルビルダーモデルは次のようになります。

ここに画像の説明を入力

コメント

  • 優れたソリューション!また、バッファの出力をin_memoryレイヤー(in_memory \ tmpBuffer)として作成することで、不要なデータをディスクに書き込むことを回避し、プロセスを大幅に高速化できます。

回答

Aaronのコードの最後にリンクされているスクリプトは、正方形のバッファーにのみ使用でき、新しいarcpy.daモジュールを使用しないため、I 「長方形のバッファを作成するために使用できるスクリプトを作成しました。10kのランダムポイントデータセットでは、10秒で完了しました:

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

 import os, arcpy point_FC = arcpy.GetParameterAsText(0) w = float(arcpy.GetParameterAsText(1)) h = float(arcpy.GetParameterAsText(2)) output_FC = arcpy.GetParameterAsText(3) def rect(coord, w, h): #Given XY coordinates and rectangle dimensions, #return a polygon object of a rectangle centered about the point x,y = coord w *= 0.5 h *= 0.5 xmin,xmax = x-w, x+w ymin,ymax = y-h, y+h poly = ((xmin, ymax), (xmax, ymax), (xmax, ymin), (xmin, ymin)) return arcpy.Polygon(arcpy.Array(arcpy.Point(*p) for p in poly)) #Create output feature class. spatref = arcpy.Describe(point_FC).spatialReference folder, base = os.path.split(output_FC) arcpy.CreateFeatureclass_management(folder, base, "POLYGON", spatial_reference=spatref) #Get field object for every field in input except OID and Shape. fields = [f for f in arcpy.ListFields(point_FC) if f.type not in ("OID", "Geometry")] for field in fields: arcpy.AddField_management(output_FC, field.name, field.type, field.precision, field.scale, field.length, field.aliasName, field.isNullable, field.required, field.domain) #Get field names to be inputted to cursors. #Need SHAPE@XY token to read point coords and SHAPE@ token to write polygon coords. fnames = [f.name for f in fields] fields_in = fnames[::] fields_out = fnames[::] fields_in.append("SHAPE@XY") fields_out.append("SHAPE@") #Create buffers and write attributes to output FC, if any. count = int(arcpy.GetCount_management(point_FC)[0]) arcpy.SetProgressor("step", "Buffering...", 0, count, 1) with arcpy.da.SearchCursor(point_FC, fields_in) as Scursor, arcpy.da.InsertCursor(output_FC, fields_out) as Icursor: for i,row_in in enumerate(Scursor): #"Convert" point to rectangle arcpy.SetProgressorPosition(i) feature = list(row_in) feature[-1] = rect(feature[-1], w, h) Icursor.insertRow(feature)  

回答

ArcObjectsを使用していると仮定すると(タグを使用して、使用している言語とAPIを指定してください)、 次の例のように、ポイントのエンベロープから正方形のバッファを作成します。 GeoFeaのポイント検索からすべての機能を取得tureLayerスニペット

 ESRI.ArcGIS.Geometry.IEnvelope envelope = point.Envelope; envelope.Expand(searchTolerance, searchTolerance, false);  

回答

アーロンの回答の代わりに、アドバンストライセンスをお持ちでない場合は、最小境界ジオメトリツールを使用してください。以下の手順(Aaronから変更):

  1. ポイント機能をバッファリングします(ArcToolbox>分析ツール>近接>バッファ)。 [線形単位]ボックスで正しい距離を選択してください。
  2. 新しく作成したバッファを最小境界ジオメトリツールに入力します([データ管理ツール]> [機能]> [最小境界ジオメトリ])。 「RECTANGLE_BY_AREA」または「RECTANGLE_BY_WIDTH」を使用します。他のオプションは、アドバンストライセンスでのみ使用できます。

EDIT :このオプションでは、「ENVELOPE」オプション(高度なライセンスが必要)を使用せずに、結果の正方形バッファの方向を制御することはできません。「出力に属性としてジオメトリ特性を追加する」にチェックマークを付けることにより(オプション) “オプション-結果のオフセットは、出力フィーチャクラスに” MBG_Orientation “として記録されます。これを使用して、必要に応じてフィーチャを中央に戻すことができます-回転を参照してください。それに対する潜在的な解決策については、ArcPyを使用した属性テーブルからの値によるポリゴン?

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

コメント

  • 私の特定のフィーチャクラスでは、このワークフローを使用して正方形をさまざまな方向に回転させることになります。おそらく私が持っているので重複するバッファサークル。わからない。 Esriに同じフィーチャクラスで上記のAaron 'のメソッドを使用させましたが、バッファリングされた円は回転しませんでした。
  • @Andrew、そうです'正解です。これは、高度なライセンスがない場合のツールの制限です。 ENVELOPEオプションを使用すると、上記のAaron 'のメソッドと同じ結果が返されますが、高度なライセンスも必要です。考えられる回避策は、'属性としてジオメトリ特性を追加する'オプションにチェックマークを付け、それらが傾斜している量を確認することです(一貫している必要があります) )次に、編集セッションで、結果の正方形のバッファをその量だけ回転させます。まだ'これを試していません。

回答

これサイトでは、geographiclib JavaScriptとjs2shapefileを使用してcsvを正方形、長方形、または円のバッファに変換する方法について説明しています。

解決するかどうかを確認できますあなたの問題。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です