Make generate_landmap importable.

This file may not be needed long term, but for now I want to import
to_multipoly for some other work.
This commit is contained in:
Dan Albert 2022-09-03 14:03:49 -07:00
parent 643d1be6d7
commit a74add96b7

View File

@ -32,40 +32,53 @@ def _geometry_collection_to_multipoly(obj: GeometryCollection) -> MultiPolygon:
raise RuntimeError(f"Not sure how to convert collection to multipoly: {obj.wkt}") raise RuntimeError(f"Not sure how to convert collection to multipoly: {obj.wkt}")
for terrain in ["cau", "nev", "syria", "channel", "normandy", "gulf", "marianaislands"]: def main() -> None:
print("Terrain " + terrain) for terrain in [
m = Mission() "cau",
m.load_file("./{}_terrain.miz".format(terrain)) "nev",
"syria",
"channel",
"normandy",
"gulf",
"marianaislands",
]:
print("Terrain " + terrain)
m = Mission()
m.load_file("./{}_terrain.miz".format(terrain))
inclusion_zones = [] inclusion_zones = []
exclusion_zones = [] exclusion_zones = []
seas_zones = [] seas_zones = []
for plane_group in m.country("USA").plane_group: for plane_group in m.country("USA").plane_group:
zone = [(x.position.x, x.position.y) for x in plane_group.points] zone = [(x.position.x, x.position.y) for x in plane_group.points]
if terrain == "cau" and inclusion_zones: if terrain == "cau" and inclusion_zones:
# legacy # legacy
exclusion_zones.append(Polygon(zone)) exclusion_zones.append(Polygon(zone))
else:
poly = Polygon(zone)
if not poly.is_valid:
raise RuntimeError(f"{plane_group} is invalid")
if plane_group.units[0].type == "F-15C":
exclusion_zones.append(poly)
else: else:
inclusion_zones.append(poly) poly = Polygon(zone)
if not poly.is_valid:
raise RuntimeError(f"{plane_group} is invalid")
if plane_group.units[0].type == "F-15C":
exclusion_zones.append(poly)
else:
inclusion_zones.append(poly)
for ship_group in m.country("USA").ship_group: for ship_group in m.country("USA").ship_group:
zone = [(x.position.x, x.position.y) for x in ship_group.points] zone = [(x.position.x, x.position.y) for x in ship_group.points]
seas_zones.append(Polygon(zone)) seas_zones.append(Polygon(zone))
with open("../{}landmap.p".format(terrain), "wb") as f: with open("../{}landmap.p".format(terrain), "wb") as f:
print(len(inclusion_zones), len(exclusion_zones), len(seas_zones)) print(len(inclusion_zones), len(exclusion_zones), len(seas_zones))
pickle.dump( pickle.dump(
Landmap( Landmap(
to_multipoly(unary_union(inclusion_zones)), to_multipoly(unary_union(inclusion_zones)),
to_multipoly(unary_union(exclusion_zones)), to_multipoly(unary_union(exclusion_zones)),
to_multipoly(unary_union(seas_zones)), to_multipoly(unary_union(seas_zones)),
), ),
f, f,
) )
if __name__ == "__main__":
main()