相关的library
geopandas
dxfgrabber
ezdxf
dxf2shp
import os
import geopandas as gpd
def dxf2shp(file):
gdf = gpd.read_file(file)
gdf.crs = {'init': 'epsg:3414'}
shape = gdf.to_crs(epsg=4326)
shape['Layer'].value_counts()
arr = shape['Layer'].unique()
for i in shape.columns:
if (len(i) > 10):
new_name = i[:9]
shape.rename(columns={i: new_name}, inplace=True)
for i in arr:
export = shape[(shape.Layer == i)]
if (export.shape[0] > 0):
try:
export.to_file("shp/" + i + ".shp")
except Exception as e:
print("### dxf2shp(): error: ", e)
pass
else:
print("### dxf2shp(): export.shape = 0 : ", i)
continue
print("### dxf2shp(): done")
if __name__ == "__main__":
try:
if not os.path.exists('shp'):
os.mkdir('shp')
dxf2shp('XX.dxf')
print("### main(): done")
except Exception as e:
print("!!! Error found: ", e)
pass
读取 layers 和 blocks
import dxfgrabber
def printDxf(file):
dxf = dxfgrabber.readfile(file)
for layer in dxf.layers:
print("### layer: ", layer.name)
for block in dxf.blocks:
print("### block: ", block.name)
if __name__ == "__main__":
try:
printDxf('XX.dxf')
print("### main(): done")
except Exception as e:
print("!!! Error found: ", e)
pass