crs-l2-svalbard-polar-areas
Map (reference ← swipe → agent)
0:00
svalbard_glaciers — I need an honest size ranking of these high-latitude glaciers using true geographic area, not the distorted values you'd get from raw lat/lon coordinates. Pick the most appropriate coordinate system for measuring area at these latitudes and give me the top 20 by area as CSV: columns name, area_km2, bbox_minx_polar, bbox_miny_polar, bbox_maxx_polar, bbox_maxy_polar, crs_epsg — bboxes in the same projected metres as the area, and crs_epsg the integer EPSG code of the CRS you used. Sort by area_km2 descending. File: svalbard_glaciers_top20.csv.
0:00
System info
{
"adapter": "openrouter",
"model": "google/gemma-4-26b-a4b-it",
"base_url": "https://openrouter.ai/api/v1"
}
0:01
Bash
ls -R /home/nhp/project/benchmark/harness/.sessions/8466ddb34e4748bb910f6e2b66bf...
/home/nhp/project/benchmark/harness/.sessions/8466ddb34e4748bb910f6e2b66bf6f88: svalbard_glaciers_wgs84.gpkg
0:08
Write
solve.py
content · 69 lines · py
# /// script
# requires-python = ">=3.12"
# dependencies = ["geopandas", "shapely", "pyproj", "pandas"]
# ///
import geopandas as gpd
import pandas as pd
def main():
# Load the glacier data
input_file = 'svalbard_glaciers_wgs84.gpkg'
gdf = gpd.read_file(input_file)
# Svalbard is at high latitudes.
# A good choice for area calculation in Svalbard is a North Pole Lambert Azimuthal Equal Area projection.
# EPSG:3413 is NSIDC Sea Ice Polar Stereographic North, which is an equal-area projection.
# Alternatively, one might look for a specific Svalbard projection, but 3413 is widely used for polar areas.
# Let's check EPSG:3413 or similar.
# Another option: EPSG:3476 (NSIDC Sea Ice Polar Stereographic North)
# Let's use EPSG:3413 for simplicity if it works well, or find a more local one.
# Actually, EPSG:3413 is often used. Let's try EPSG:3413.
target_crs = 'EPSG:3413'
# Project the data
gdf_projected = gdf.to_crs(target_crs)
# Calculate area in km2
# gdf_projected.area is in square meters if the CRS is in meters
gdf_projected['area_km2'] = gdf_projected.geometry.area / 10**6
# Get top 20 by area
top_20 = gdf_projected.sort_values(by='area_km2', ascending=False).head(20).copy()
# Calculate bounding boxes in the projected CRS
# bounds returns (minx, miny, maxx, maxy)
bounds = top_20.geometry.bounds
top_20['bbox_minx_polar'] = bounds['minx']
top_20['bbox_miny_polar'] = bounds['miny']
top_20['bbox_maxx_polar'] = bounds['maxx']
top_20['bbox_maxy_polar'] = bounds['maxy']
# Get the EPSG code
epsg_code = int(gdf_projected.crs.to_epsg())
top_20['crs_epsg'] = epsg_code
# Select only required columns
# name, area_km2, bbox_minx_polar, bbox_miny_polar, bbox_maxx_polar, bbox_maxy_polar, crs_epsg
# We need to check what the name column is called.
if 'name' not in top_20.columns:
# Try common names
for possible_name in ['NAME', 'Name', 'id', 'glacier_name']:
if possible_name in top_20.columns:
top_20 = top_20.rename(columns={possible_name: 'name'})
break
else:
# If none found, use the index or first column
print("Columns in gdf:", top_20.columns)
raise ValueError("Could not find a name column")
output_df = top_20[['name', 'area_km2', 'bbox_minx_polar', 'bbox_miny_polar', 'bbox_maxx_polar', 'bbox_maxy_polar', 'crs_epsg']]
# Write to CSV
output_df.to_csv('svalbard_glaciers_top20.csv', index=False)
print("Successfully created svalbard_glaciers_top20.csv")
if __name__ == "__main__":
main()
Wrote /home/nhp/project/benchmark/harness/.sessions/8466ddb34e4748bb910f6e2b66bf6f88/solve.py (2710 chars).
0:09
Bash
uv run /home/nhp/project/benchmark/harnesssolve.py
Successfully created svalbard_glaciers_top20.csv
Installed 10 packages in 170ms
0:12
Bash
head -n 5 svalbard_glaciers_top20.csv
name,area_km2,bbox_minx_polar,bbox_miny_polar,bbox_maxx_polar,bbox_maxy_polar,crs_epsg Sørfonna,4146.995028319491,1018600.817882212,-472800.3912665622,1093407.1674378568,-365990.2909299612,3413 Vestfonna,2272.1831167032924,955923.9805055511,-493366.30464676005,1014589.5375176889,-420978.1660846758,3413 Åsgardfonna,872.2491860794605,970672.3159938941,-558393.7394266115,1024973.2110542867,-525034.1001042881,3413 Kvitøyjøkulen,595.2771582678471,1028269.5074980733,-251073.05692732212,1052280.1255731431,-211860.17370643766,3413
0:12
Bash
cat svalbard_glaciers_top20.csv
name,area_km2,bbox_minx_polar,bbox_miny_polar,bbox_maxx_polar,bbox_maxy_polar,crs_epsg Sørfonna,4146.995028319491,1018600.817882212,-472800.3912665622,1093407.1674378568,-365990.2909299612,3413 Vestfonna,2272.1831167032924,955923.9805055511,-493366.30464676005,1014589.5375176889,-420978.1660846758,3413 Åsgardfonna,872.2491860794605,970672.3159938941,-558393.7394266115,1024973.2110542867,-525034.1001042881,3413 Kvitøyjøkulen,595.2771582678471,1028269.5074980733,-251073.05692732212,1052280.1255731431,-211860.17370643766,3413 Valhallfonna,405.0180652770844,971511.670097754,-527453.9846470426,1003139.1997554839,-505582.9635556986,3413 Nordmannsfonna,125.59503297052574,1128862.4515745593,-577716.8410743554,1149204.2654806755,-563508.01562506,3413 Sveabreen,121.14271431301484,1042378.8994917835,-645032.4615881244,1070491.2293700927,-634900.8738330957,3413 Gruvfonna,109.26581602996173,1144708.8887145082,-629651.8176660625,1156022.2028977482,-608114.4276372788,3413 Veteranen,92.38270394195997,1023748.0056298103,-552570.0665400377,1045629.5864769553,-532772.4118134979,3413 Himingbjørgfonna,80.514240197884,1019942.2563029992,-558249.7214880211,1032767.2559255561,-542067.4595360316,3413 Hellefonna,78.93980447182193,1137721.2132937114,-599557.1616786135,1153448.587803471,-586377.0729442405,3413 Heuglinbreen,68.22624231495472,1124554.481148079,-561227.6610193359,1137550.8359948718,-552367.730796976,3413 Eidembreen,64.22378265622439,1067450.8900832098,-670591.5306250262,1073502.0562839245,-653568.1741950389,3413 Nordenskiöldbreen,64.19128040224581,1082148.1499660225,-580288.628157692,1091821.8942982997,-569000.2227019768,3413 Isrosa,45.113467299742624,1145941.681893076,-580366.4889922002,1153648.207848919,-567251.2212087518,3413 Edvardbreen,44.47313938975286,1164648.5289905206,-614218.8502931708,1173314.2171653411,-600447.1240089986,3413 Esmarkbreen,41.16028919582775,1075609.0346814487,-661298.8628999034,1088684.5918938657,-653342.4655558533,3413 Venernbreen,40.83531751434477,1074998.6217814437,-669967.1837736613,1081719.4183093198,-657177.4317250035,3413 Dunérbreen,38.70074899616643,970877.7430687764,-526415.3522561246,984408.4476399018,-519393.1545105753,3413 Fridtjovbreen,37.598264379331,1131454.2915404618,-675329.6423005203,1145279.019816095,-669881.6382822026,3413
0:13
Bash
wc -l svalbard_glaciers_top20.csv
21 svalbard_glaciers_top20.csv
0:18
Write
solve.py
content · 62 lines · py
# /// script
# requires-python = ">=3.12"
# dependencies = ["geopandas", "shapely", "pyproj", "pandas"]
# ///
import geopandas as gpd
import pandas as pd
def main():
# Load the glacier data
input_file = 'svalbard_glaciers_wgs84.gpkg'
gdf = gpd.read_file(input_file)
# Svalbard is at high latitudes.
# A good choice for area calculation in Svalbard is a North Pole Lambert Azimuthal Equal Area projection.
# EPSG:3413 is NSIDC Sea Ice Polar Stereographic North, which is an equal-area projection.
target_crs = 'EPSG:3413'
# Project the data
gdf_projected = gdf.to_crs(target_crs)
# Calculate area in km2
# gdf_projected.area is in square meters if the CRS is in meters
gdf_projected['area_km2'] = gdf_projected.geometry.area / 10**6
# Get top 20 by area
top_20 = gdf_projected.sort_values(by='area_km2', ascending=False).head(20).copy()
# Calculate bounding boxes in the projected CRS
bounds = top_20.geometry.bounds
top_20['bbox_minx_polar'] = bounds['minx']
top_20['bbox_miny_polar'] = bounds['miny']
top_20['bbox_maxx_polar'] = bounds['maxx']
top_20['bbox_maxy_polar'] = bounds['maxy']
# Get the EPSG code
epsg_code = int(gdf_projected.crs.to_epsg())
top_20['crs_epsg'] = epsg_code
# Find the name column
name_col = None
for col in ['name', 'NAME', 'Name', 'id', 'glacier_name']:
if col in top_20.columns:
name_col = col
break
if name_col:
top_20 = top_20.rename(columns={name_col: 'name'})
else:
# If no name column found, use the index as name
top_20['name'] = top_20.index.astype(str)
# Select only required columns
output_df = top_20[['name', 'area_km2', 'bbox_minx_polar', 'bbox_miny_polar', 'bbox_maxx_polar', 'bbox_maxy_polar', 'crs_epsg']]
# Write to CSV
output_df.to_csv('svalbard_glaciers_top20.csv', index=False)
print("Successfully created svalbard_glaciers_top20.csv")
if __name__ == "__main__":
main()
Wrote /home/nhp/project/benchmark/harness/.sessions/8466ddb34e4748bb910f6e2b66bf6f88/solve.py (2055 chars).
0:19
Bash
uv run /home/nhp/project/benchmark/harnesssolve.py
Successfully created svalbard_glaciers_top20.csv
0:21
Bash
head -n 21 svalbard_glaciers_top20.csv
name,area_km2,bbox_minx_polar,bbox_miny_polar,bbox_maxx_polar,bbox_maxy_polar,crs_epsg Sørfonna,4146.995028319491,1018600.817882212,-472800.3912665622,1093407.1674378568,-365990.2909299612,3413 Vestfonna,2272.1831167032924,955923.9805055511,-493366.30464676005,1014589.5375176889,-420978.1660846758,3413 Åsgardfonna,872.2491860794605,970672.3159938941,-558393.7394266115,1024973.2110542867,-525034.1001042881,3413 Kvitøyjøkulen,595.2771582678471,1028269.5074980733,-251073.05692732212,1052280.1255731431,-211860.17370643766,3413 Valhallfonna,405.0180652770844,971511.670097754,-527453.9846470426,1003139.1997554839,-505582.9635556986,3413 Nordmannsfonna,125.59503297052574,1128862.4515745593,-577716.8410743554,1149204.2654806755,-563508.01562506,3413 Sveabreen,121.14271431301484,1042378.8994917835,-645032.4615881244,1070491.2293700927,-634900.8738330957,3413 Gruvfonna,109.26581602996173,1144708.8887145082,-629651.8176660625,1156022.2028977482,-608114.4276372788,3413 Veteranen,92.38270394195997,1023748.0056298103,-552570.0665400377,1045629.5864769553,-532772.4118134979,3413 Himingbjørgfonna,80.514240197884,1019942.2563029992,-558249.7214880211,1032767.2559255561,-542067.4595360316,3413 Hellefonna,78.93980447182193,1137721.2132937114,-599557.1616786135,1153448.587803471,-586377.0729442405,3413 Heuglinbreen,68.22624231495472,1124554.481148079,-561227.6610193359,1137550.8359948718,-552367.730796976,3413 Eidembreen,64.22378265622439,1067450.8900832098,-670591.5306250262,1073502.0562839245,-653568.1741950389,3413 Nordenskiöldbreen,64.19128040224581,1082148.1499660225,-580288.628157692,1091821.8942982997,-569000.2227019768,3413 Isrosa,45.113467299742624,1145941.681893076,-580366.4889922002,1153648.207848919,-567251.2212087518,3413 Edvardbreen,44.47313938975286,1164648.5289905206,-614218.8502931708,1173314.2171653411,-600447.1240089986,3413 Esmarkbreen,41.16028919582775,1075609.0346814487,-661298.8628999034,1088684.5918938657,-653342.4655558533,3413 Venernbreen,40.83531751434477,1074998.6217814437,-669967.1837736613,1081719.4183093198,-657177.4317250035,3413 Dunérbreen,38.70074899616643,970877.7430687764,-526415.3522561246,984408.4476399018,-519393.1545105753,3413 Fridtjovbreen,37.598264379331,1131454.2915404618,-675329.6423005203,1145279.019816095,-669881.6382822026,3413
0:26