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!!


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()

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.