File:Pressure of tunguska event if 10mt 1.png
Original file (913 × 883 pixels, file size: 784 KB, MIME type: image/png)
Captions
Summary
[edit]DescriptionPressure of tunguska event if 10mt 1.png |
English: Pressure of Tunguska event if it was 10mt air burst. Unit of pressure is here PSI. |
Date | |
Source | Own work |
Author | ChatGPT 3 and 4o AI |
Source of data are SRTM Hydrosheds and Nukemap.
NUKEMAP by Alex Wellerstein (https://nuclearsecrecy.com/nukemap/),
https://www.hydrosheds.org/products/hydrorivers
Lehner, B., Grill G. (2013). Global river hydrography and network routing: baseline data and new approaches to study the world’s large river systems. Hydrological Processes, 27(15): 2171–2186. https://doi.org/10.1002/hyp.9740
SRTM via Python elevation
import math
import matplotlib.colors as mcolors
import numpy as np
import rasterio
import subprocess
import os
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import geopandas as gpd
from matplotlib.patches import Circle, Rectangle
from matplotlib.colors import LightSource
def load_and_process_elevation(bounds, explosion_height):
dem_file = 'tunguska_30m_dem.tif'
if not os.path.exists(dem_file):
command = [
'eio', 'clip',
'-o', dem_file,
'--bounds', str(bounds[0]), str(bounds[1]), str(bounds[2]), str(bounds[3])
]
try:
subprocess.run(command, check=True)
print("Korkeusdata ladattu ja leikattu onnistuneesti.")
except subprocess.CalledProcessError as e:
print(f"Virhe: {e}")
return
# Lataa korkeusdata
with rasterio.open(dem_file) as src:
elevation = src.read(1)
transform = src.transform
# Coordinates of the Tunguska event
explosion_coords = (101.909722, 60.903056)
explosion_height = 7000
# Calculate distances for the Pythagorean formula
lon, lat = np.meshgrid(
np.linspace(bounds[0], bounds[2], elevation.shape[1]),
np.linspace(bounds[3], bounds[1], elevation.shape[0])
)
radius = 6371000 # Radius of Earth in meters
# Convert lat/lon to distances in meters
d_lat = np.radians(lat - explosion_coords[1])
d_lon = np.radians(lon - explosion_coords[0])
a = np.sin(d_lat / 2)**2 + np.cos(np.radians(explosion_coords[1])) * np.cos(np.radians(lat)) * np.sin(d_lon / 2)**2
c = 2 * np.arctan2(np.sqrt(a), np.sqrt(1 - a))
distance_from_explosion = radius * c
distance_from_explosion_alt=np.sqrt(distance_from_explosion*distance_from_explosion+explosion_height*explosion_height)
# Paineen laskeminen
base_energy = 1 # 1 psi at 42.6 km if 10 Mt
distance_threshold = 42600 # 40 km in meters
distance_threshold2 = 400000 # 400 km in meters
heat_energy = base_energy / (distance_from_explosion_alt / distance_threshold)**2
heat_energy[distance_from_explosion_alt > distance_threshold2] = 0 # Nollaa etäisyydet yli 65 km
# Rajaa maksimimäärä 25 cal/cm²
heat_energy = np.clip(heat_energy, 0, 1000)
# Custom color map
colors = [(0, "darkblue"), (0.25, "cyan"), (0.5, "yellow"), (0.75, "orange"), (1, "red")]
cmap = mcolors.LinearSegmentedColormap.from_list("custom_hot", colors, N=256)
# Calculate hillshade using LightSource
ls = LightSource(azdeg=280, altdeg=45)
hillshade_raster = ls.shade(elevation, cmap=plt.cm.gray, vert_exag=1, blend_mode='overlay')
# Visualisointi Cartopy-kirjastolla
fig, ax = plt.subplots(figsize=(15, 10), subplot_kw={'projection': ccrs.PlateCarree()})
# Plot hillshade with transparency
img_hs = ax.imshow(hillshade_raster, extent=(bounds[0], bounds[2], bounds[1], bounds[3]), origin='upper', transform=ccrs.PlateCarree(), alpha=0.6)
# Plot heat energy raster with custom color map
img_heat = ax.imshow(heat_energy, cmap=cmap, extent=(bounds[0], bounds[2], bounds[1], bounds[3]), origin='upper', transform=ccrs.PlateCarree(), alpha=0.4)
plt.colorbar(img_heat, ax=ax, label='Pressure estimation 40km=1 PSI', extend='both')
# Plot features: Tunguska and Vanavara
tunguska_event = Circle((101.909722, 60.903056), 0.01, color='red', alpha=0.7, transform=ccrs.PlateCarree())
vanavara = Rectangle((102.2848 - 0.005, 60.3457 - 0.005), 0.03, 0.03, color='blue', alpha=0.7, transform=ccrs.PlateCarree())
ax.add_patch(tunguska_event)
ax.add_patch(vanavara)
# Add circles for distances
circle_7km = Circle((101.909722, 60.903056), 7 / 111.32, color='black', alpha=0.7, fill=False, linestyle='-', transform=ccrs.PlateCarree())
circle_15km = Circle((101.909722, 60.903056), 15 / 111.32, color='red', alpha=0.7, fill=False, linestyle='-', transform=ccrs.PlateCarree())
circle_35km = Circle((101.909722, 60.903056), 35 / 111.32, color='black', alpha=0.7, fill=False, linestyle='--', transform=ccrs.PlateCarree())
#ax.add_patch(circle_7km)
#ax.add_patch(circle_15km)
#ax.add_patch(circle_35km)
# Load and plot hydro data
hydro_data = gpd.read_file('./hydro/HydroRIVERS_v10_si.shp')
hydro_data = hydro_data.to_crs(ccrs.PlateCarree().proj4_init) # Reproject to PlateCarree
hydro_data.plot(ax=ax, color='blue', linewidth=1)
# Aseta akselien rajat
ax.set_xlim(bounds[0], bounds[2])
ax.set_ylim(bounds[1], bounds[3])
# Aseta suhteellinen laajuus
ax.set_aspect('equal')
# Add labels
ax.text(101.909722+0.5, 60.903056+0.04, 'Tunguska event', transform=ccrs.PlateCarree(),
horizontalalignment='right', fontsize=32, color='black')
ax.text(102.2848, 60.3457, 'Vanavara', transform=ccrs.PlateCarree(),
horizontalalignment='right', fontsize=32, color='black')
ax.set_title('Pressure in Tunguska, PSI if 10 Mt', fontsize=16)
# Kontuurit lämpöenergiasta
energy_levels = [0.03, 0.1, 0.2,0.5,1,2,3,5,10,20,100,300,1000] # Määrittele kontuurit
contours = plt.contour(lon, lat, heat_energy, levels=energy_levels, colors='black', linewidths=1, alpha=0.7)
# Lisää kontuurien labelit
plt.clabel(contours, inline=True, fontsize=10, fmt='%.1f')
plt.show()
- Määritä koordinaatit (lon_min, lat_min, lon_max, lat_max) ja räjähdyksen korkeus
bounds = (101.5, 60.2, 102.5, 61.4)
explosion_height = 7000 # Korkeus metrinä
load_and_process_elevation(bounds, explosion_height)
Licensing
[edit]This file is made available under the Creative Commons CC0 1.0 Universal Public Domain Dedication. | |
The person who associated a work with this deed has dedicated the work to the public domain by waiving all of their rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission.
http://creativecommons.org/publicdomain/zero/1.0/deed.enCC0Creative Commons Zero, Public Domain Dedicationfalsefalse |
Public domainPublic domainfalsefalse |
This file is in the public domain because it is the work of a computer algorithm or artificial intelligence and does not contain sufficient human authorship to support a copyright claim.
The United Kingdom and Hong Kong provide a limited term of copyright protection for computer-generated works of 50 years from creation. [1] [2]
|
Legal disclaimer Most image-generating AI models were trained using works that are protected by copyright. In some cases, such assets and models can produce images that contain major copyrightable elements of those copyrighted training images, making these outputs derivative works. Accordingly, there is a risk that AI-generated art uploaded on Commons may violate the rights of the authors of the original works. See Commons:AI-generated media for additional details. azərbaycanca ∙ Deutsch ∙ English ∙ español ∙ français ∙ galego ∙ हिन्दी ∙ 日本語 ∙ português do Brasil ∙ русский ∙ slovenščina ∙ Türkçe ∙ Tiếng Việt ∙ 中文 ∙ 中文(简体) ∙ 中文(繁體) ∙ +/− |
File history
Click on a date/time to view the file as it appeared at that time.
Date/Time | Thumbnail | Dimensions | User | Comment | |
---|---|---|---|---|---|
current | 17:15, 23 September 2024 | 913 × 883 (784 KB) | Merikanto (talk | contribs) | Uploaded own work with UploadWizard |
You cannot overwrite this file.
File usage on Commons
There are no pages that use this file.