12 from opals
import pyDM
14 def DM_read_shapefile(filename):
17 pf = pyDM.PolygonFactory()
18 lf = pyDM.AddInfoLayoutFactory()
19 lf.addColumn(pyDM.ColumnType.uint32,
'_shapeId')
20 layout = lf.getLayout()
23 tableDef = pyDM.ShapeTableDefinition.read(filename)
26 print(f
"Shape file {filename} contains {tableDef.columns()} attributes:")
27 print(f
"idx name type width decimals")
28 for i
in range(tableDef.columns()):
29 print(f
" {i}\t{tableDef.name(i):16}{tableDef.type(i):10}{tableDef.width(i):10}{tableDef.decimales(i):10}")
32 print(f
"Open shape file '{filename}'")
33 imp = pyDM.ImportShape(filename)
37 mapping = {tableDef.name(0): 0, }
38 imp.setAttributeMapping(layout, mapping)
40 print(
"Read files...")
41 for idx, obj
in enumerate(imp):
42 print(f
" Geometry {idx} is a {obj.type()} and contains {obj.sizePoint()} points (_shapeId={obj.info().get(0)})")
43 for pt_idx, pt
in enumerate(obj.points()):
44 print(f
" {pt_idx:3}.point {pt.x:12.3f}, {pt.y:12.3f}, {pt.z:9.3f}")
49 print(
"shape file parameter missing")
52 DM_read_shapefile(sys.argv[1])