8 votos

Script de Python para leer datos CAD y encontrar los límites del polígono

Tengo Civil 3D 2012 con ArcGIS for AutoCAD 300. Quiero leer las extensiones de un polígono en el dibujo. Clase de entidad en A4A300 = Límites, la capa CAD es PROP-BNDY, solo hay un polígono en esa capa ya que es el perímetro del sitio. ¿Tengo que convertir el polígono a un shapefile temporal, leerlo y luego borrarlo? Voy a utilizar las extensiones del límite más una constante en todas direcciones para recortar imágenes ráster. El proceso no debe implicar la entrada del usuario. Tengo 30 directorios por los cuales voy a iterar, un archivo de dibujo en cada directorio y un polígono en cada dibujo. Tengo los rutinas en python para crear una lista de directorios que tienen los archivos *map.dwg adentro y estoy familiarizado con recortar los ráster, simplemente no puedo encontrar cómo leer las extensiones del polígono en el archivo dwg. ¡Se agradece mucho tu ayuda!

31voto

Hameno Puntos 129

Como has sugerido, tendrás que convertir la característica de polígono CAD a una clase de entidad o capa de entidad GIS, luego puedes usar arcpy para obtener la extensión de la geometría.

Primero, para crear una capa temporal/en memoria puedes usar la función Make Feature Layer, mira el código de ejemplo abajo:

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

# Proceso: Crear una capa de entidad utilizando una expresión
arcpy.MakeFeatureLayer_management(polyCAD, lyr, "\"Layer\" = 'PROP-BNDY'")

Alternativamente, si quieres que la capa temporal sea convertida a un archivo temporal real podrías usar Feature Class to Feature Class.

Para ambos casos entonces puedes obtener la extensión de la capa utilizando el método getExtent():

lyr.getExtent()

10voto

kwutchak Puntos 232

Puedes convertir el archivo dwg a clase de entidad, luego obtener la extensión del polígono, usando el siguiente código:

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

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X