Script Python para ler dados CAD e encontrar extensões de polígono

8

Eu tenho o Civil 3D 2012 com ArcGIS para AutoCAD 300. Quero ler as extensões de um polígono no desenho. Classe de recurso em A4A300 = Limites, a camada CAD é PROP-BNDY, há apenas um polígono nessa camada, pois é o perímetro do site. Preciso converter o polígono em um shapefile temporário, lê-lo e excluí-lo? Usarei as extensões de limite mais uma constante em todas as direções para cortar imagens rasterizadas. O processo não deve envolver a entrada do usuário. Tenho 30 diretórios pelos quais passarei, um arquivo de desenho em cada diretório e um polígono em cada desenho. Eu tenho as rotinas python para criar uma lista de diretórios que possuem os arquivos * map.dwg e estou familiarizado com o corte de rasters, simplesmente não consigo encontrar como ler as extensões de polígono no arquivo dwg. Sua ajuda é muito apreciada!!

geonerd
fonte
Meu primeiro pensamento foi fazer o que você descreveu (converter, ler, excluir). Sei que você pode criar scripts do AutoCAD, mas não tenho certeza se você pode fazer o que gostaria de fazer nesse ambiente de script. Talvez poste essa pergunta aqui .
dchaboya
O recurso de polígono está no Postgres, MSSQL, Oracle etc.?
tudorbarascu
Obrigado pela sua contribuição. Consegui encontrar uma solução, mas descobri que estava criando um monstro! Eu estava recortando arquivos MrSID, mas não tinha um formato para salvar o arquivo recortado que não criava arquivos ENORMES. Estou trabalhando com imagens muito grandes (pixels de 4 polegadas cobrindo cerca de 100 acres como a versão recortada) e acabei com arquivos tif ou jpg indisciplinados. Então eu abandonei a ideia de fazer esse processo.

Respostas:

2

Como você sugeriu, você precisará converter o recurso de polígono CAD em uma classe de recurso GIS ou camada de recurso, e poderá usar o arcpy para obter a extensão da geometria.

Primeiro, para criar uma camada temporária / na memória, você pode usar a função Criar camada de recurso , veja o código de exemplo abaixo:

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

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

Como alternativa, se você quiser que a camada temporária seja convertida em um arquivo temporário real, poderá usar a Classe de recurso para Classe de recurso .

Nos dois casos, é possível obter a extensão da camada usando o método getExtent () :

lyr.getExtent()
artwork21
fonte
Depois de usar o método getExtent, recebi um erro! lyr.getExtent () AttributeError: o objeto 'str' não tem nenhum atributo 'getExtent' Obrigado, Geog
Dror Har Gil
Você pode postar seu código como uma edição da sua pergunta?
artwork21
1

Você pode converter o arquivo dwg em uma classe de recurso e obter a extensão do polígono, usando o código abaixo:

arcpy.CADToGeodatabase_conversion(path_dwg, output_gdb, "fc" , 200)
extent = arcpy.da.SearchCursor( "fc" , ["SHAPE@"   ] , "\"Layer\" = 'PROP-BNDY'").next()[0].extent
geogeek
fonte