Initial Vibe coded project
This commit is contained in:
commit
0891cf12a5
21 files changed
+2830
No files matched your search
@@ -0,0 +1,104 @@
|
||||
"""Create entirely synthetic offline demo inputs; no real map or flight observations."""
|
||||
|
||||
import json
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
import numpy as np
|
||||
import rasterio
|
||||
from rasterio.transform import from_bounds
|
||||
|
||||
from flight_map.geo import DEFAULT_BOUNDS
|
||||
from flight_map.storage import (
|
||||
Observation,
|
||||
checkpoint,
|
||||
create_session,
|
||||
database,
|
||||
initialize,
|
||||
save_observations,
|
||||
)
|
||||
|
||||
|
||||
def main() -> None:
|
||||
if len(sys.argv) != 2:
|
||||
raise SystemExit("Usage: python examples/make_demo.py OUTPUT_DIRECTORY")
|
||||
folder = Path(sys.argv[1])
|
||||
folder.mkdir(parents=True, exist_ok=True)
|
||||
db = folder / "demo.sqlite"
|
||||
if db.exists():
|
||||
raise SystemExit(f"Refusing to replace {db}")
|
||||
started = 1_792_497_600.0
|
||||
with database(db) as connection:
|
||||
initialize(connection)
|
||||
session = create_session(connection, DEFAULT_BOUNDS, 2000, 30, started)
|
||||
items = []
|
||||
northings = [52.235, 52.237, 52.244, 52.247, 52.246]
|
||||
for index in range(5):
|
||||
items.append(
|
||||
Observation(
|
||||
"abc123",
|
||||
"DEMO123",
|
||||
started + index * 30,
|
||||
4.77 + index * 0.027,
|
||||
northings[index],
|
||||
900 + index * 30,
|
||||
1043 + index * 30,
|
||||
)
|
||||
)
|
||||
items.append(
|
||||
Observation(
|
||||
"def456",
|
||||
"DEMO456",
|
||||
started + index * 30,
|
||||
4.85 - index * 0.013,
|
||||
52.26 - index * 0.008,
|
||||
700,
|
||||
843,
|
||||
)
|
||||
)
|
||||
save_observations(connection, session, items, started + 150)
|
||||
checkpoint(connection, session.id, started + 150, "stopped")
|
||||
ways = [
|
||||
[(4.77, 52.235), (4.81, 52.24), (4.87, 52.25)],
|
||||
[(4.80, 52.23), (4.82, 52.245), (4.81, 52.26)],
|
||||
[(4.835, 52.23), (4.84, 52.26)],
|
||||
[(4.82, 52.242), (4.823, 52.242), (4.823, 52.244), (4.82, 52.244), (4.82, 52.242)],
|
||||
]
|
||||
(folder / "map.json").write_text(
|
||||
json.dumps(
|
||||
{
|
||||
"elements": [
|
||||
{
|
||||
"type": "way",
|
||||
"id": index,
|
||||
"geometry": [{"lon": lon, "lat": lat} for lon, lat in points],
|
||||
}
|
||||
for index, points in enumerate(ways)
|
||||
]
|
||||
}
|
||||
)
|
||||
)
|
||||
for name, value in (("terrain.tif", -2), ("geoid.tif", 43)):
|
||||
with rasterio.open(
|
||||
folder / name,
|
||||
"w",
|
||||
driver="GTiff",
|
||||
height=64,
|
||||
width=64,
|
||||
count=1,
|
||||
dtype="float32",
|
||||
crs="EPSG:4326",
|
||||
transform=from_bounds(*session.collection_bounds.values, 64, 64),
|
||||
) as dataset:
|
||||
dataset.write(np.full((1, 64, 64), value, dtype="float32"))
|
||||
print(f"Synthetic demo session: {session.id}")
|
||||
print(
|
||||
f"flight-map plot --db '{db}' --session {session.id} "
|
||||
f"--map-data '{folder / 'map.json'}' --terrain '{folder / 'terrain.tif'}' "
|
||||
f"--terrain-reference orthometric --geoid '{folder / 'geoid.tif'}' "
|
||||
f"--confirm-geometric-ellipsoid --output '{folder / 'demo.svg'}'"
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in new issue
Block a user