1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| from xml.etree import ElementTree
import shapefile
import os
xml_file = 'BMSKDMA10.xml'
shape_file = 'BMSKDMA10.shp'
projection = 'GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]'
tree = ElementTree.parse(xml_file)
w = shapefile.Writer(shapefile.POLYLINE)
# create fields
w.field('la', fieldType = 'N', size = 200)
w.field('lo', fieldType = 'N', size = 200)
w.field('tr', fieldType = 'C', size = 200)
w.field('nr', fieldType = 'C', size = 200)
w.field('ce', fieldType = 'C', size = 200)
w.field('er', fieldType = 'N', size = 200)
w.field('mt', fieldType = 'N', size = 200)
w.field('cm', fieldType = 'N', size = 200)
w.field('id', fieldType = 'N', size = 200)
w.field('dt', fieldType = 'N', size = 200)
root = tree.getroot()
ci = root.getchildren()
for tr in ci:
part = []
part.append([float(tr.get('lo')), float(tr.get('la'))])
w.poly(parts=[part])
# copy attributes
w.record(float(tr.get('la')),float(tr.get('lo')), tr.get('tr'),tr.get('nr'),tr.get('ce'),int(tr.get('er')),int(tr.get('mt')),int(tr.get('cm')),int(tr.get('id')),int(tr.get('dt')))
w.save(shape_file)
# create the PRJ file
with open(os.path.splitext(shape_file)[0] + os.extsep + 'prj', 'w') as prj:prj.write(projection) |
Partager