CADデータを読み取ってポリゴンの範囲を見つけるPythonスクリプト


8

Civil 3D 2012とArcGIS for AutoCAD 300を使用しています。図面内のポリゴンの範囲を読みたいのですが。A4A300のフィーチャクラス=境界。CADレイヤーはPROP-BNDYであり、サイトの境界であるため、そのレイヤーにはポリゴンが1つしかありません。ポリゴンを一時的なシェープファイルに変換し、読み取ってから削除する必要がありますか?ラスターイメージをクリップするために、境界範囲と全方向の定数を使用します。このプロセスには、ユーザー入力は必要ありません。ループするディレクトリは30個あり、各ディレクトリに図面ファイルがあり、各図面にポリゴンがあります。* map.dwgファイルが含まれているディレクトリのリストを作成するためのpythonルーチンがあり、ラスターのクリッピングに精通していますが、dwgファイルでポリゴンの範囲を読み取る方法がわかりません。あなたの助けは大歓迎です!!


私が最初に思ったのは、あなたが説明したこと(変換、読み取り、削除)を実行することでした。AutoCADスクリプトを作成できることはわかっていますが、そのスクリプト環境でやりたいことができるかどうかはわかりません。多分ここにその質問を投稿してください
dchaboya

ポリゴン機能はPostgres、MSSQL、Oracleなどにありますか?
tudorbarascu 2013年

ご入力いただきありがとうございます。周りに仕事を見つけることができましたが、私はモンスターを作成していることがわかりました!私はMrSIDファイルをクリッピングしていましたが、巨大なファイルを作成しないクリッピングされたファイルを保存するためのフォーマットがありませんでした。私は非常に大きな画像(4インチのピクセルでクリップされたバージョンの約100エーカーをカバー)で作業しており、手に負えないほどのtifまたはjpgファイルができました。だから私はこのプロセスをやるという考えを捨てました。

回答:


2

CADポリゴンフィーチャをGISフィーチャクラスまたはフィーチャレイヤーに変換する必要があることをお勧めしたので、arcpyを使用してジオメトリの範囲を取得できます。

最初に、temp / in-memoryレイヤーを作成するには、Make Feature Layer関数を使用できます。以下のサンプルコードを参照してください。

polyCAD = "C:\\Temp\\xyz.dwg\\Polygon"
lyr = "Polygon_Layer"

# Process: Make Feature Layer using a expression
arcpy.MakeFeatureLayer_management(polyCAD, lyr, "\"Layer\" = 'PROP-BNDY'")

代替、一時レイヤーを実際の一時ファイルに変換する場合は、フィーチャクラスをフィーチャクラスに使用できます。

どちらの場合も、getExtent()メソッドを使用してレイヤーの範囲を取得できます。

lyr.getExtent()

getExtentメソッドを使用した後、エラーが発生しました!lyr.getExtent()AttributeError: 'str' object has no attribute 'getExtent' Thanks、Geog
Dror Har Gil

質問の編集としてコードを投稿できますか?
アートワーク21

1

以下のコードを使用して、DWGファイルをフィーチャクラスに変換し、ポリゴンの範囲を取得できます。

arcpy.CADToGeodatabase_conversion(path_dwg, output_gdb, "fc" , 200)
extent = arcpy.da.SearchCursor( "fc" , ["SHAPE@"   ] , "\"Layer\" = 'PROP-BNDY'").next()[0].extent
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.