else: elem["properties"] = OrderedDict([ ('shapeISO', v) if k == dictISO else (k, v) for k, v in elem["properties"].items() ]) #remove invalid elements for attribute in list(elem['properties'].items()): if (attribute[0] not in ["shapeISO", "shapeName"]): elem['properties'].pop(attribute[0]) elem["properties"]["shapeID"] = (ISO + "-" + groupCode + "-" + buildID.split('_', 1)[1] + '-B' + str(featureID)) elem["properties"]["shapeGroup"] = ISO elem["properties"]["shapeType"] = groupCode #Update the original file with a corrected version: corrected_shp = "./releaseCandidateInit/" + buildID + "/" + ISO + "/" + groupCode + "/" + ISO + "_" + groupCode + "_fixedInternalTopology.shp" with fiona.open(corrected_shp, 'w', 'ESRI Shapefile', schema, shpFile.crs) as output: for elem in fixed: output.write(elem) print("Job Finished: " + ISO + "-" + groupCode) if __name__ == "__main__": import buildMain importlib.reload(buildMain) buildMain.geoBoundaries_build("gbReleaseCandidate_2_0_0_0")
print( "The minor build flag has been set - in this mode, only the build scripts will be re-run, using the data from the major version." ) print( "No downloads, metadata checks, or shape checks will be updated.") else: if (buildID == "current"): print( "Because this is being executed against the 'current' folder") print( "Only the QA/QC procedures will be implemented. No full build will be" ) print("produced.") return (0) buildStage0.retrieveZip(buildID) buildStage0.metaDataChecks(buildID, exceptions) buildStage1.shapeChecks(buildID) buildStage2.metaStandardization(buildID) buildStage3.buildFiles(buildID, minor) buildStage4.uploadGB(buildID, minor) if __name__ == "__main__": import buildMain importlib.reload(buildMain) buildMain.geoBoundaries_build("gbReleaseCandidate_3_0_0", minor=False)