Python如何循环更新控制台输入的经纬度坐标以动态计算多边形区域面积
经纬度多边形面积自动计算循环实现方案
完整实现代码
from pyproj import Geod # 初始化WGS84坐标系下的计算对象(保留原有必要逻辑) geod = Geod(ellps='WGS84') # 初始化经纬度空列表,自动存储所有输入点 lats = [] lons = [] print("提示:输入非数字即可终止程序,每次依次输入纬度、经度即可新增点位") while True: try: # 分两次单独输入当前点的纬度、经度 lat = float(input("请输入当前点的纬度:")) lon = float(input("请输入当前点的经度:")) except ValueError: print("程序已终止") break # 自动把新点位追加到列表中,无需手动修改列表结构 lats.append(lat) lons.append(lon) point_count = len(lats) # 根据当前点位数量执行对应逻辑 if point_count == 1: print("当前仅录入1个点,需要更多信息才能计算面积") elif point_count == 2: print("当前仅录入2个点,暂无法计算面积") else: # 点位数量≥3时自动计算面积、周长 poly_area, poly_perimeter = geod.polygon_area_perimeter(lons, lats) # 单位转换:面积转平方公里,周长转公里 area_km2 = abs(poly_area) / 1000000 perimeter_km = abs(poly_perimeter) / 1000 print(f"当前共录入{point_count}个点,计算结果:") print(f"面积:{area_km2:.4f} km²") print(f"周长:{perimeter_km:.4f} km")
实现说明
- 不需要手动定义每个点位的独立变量,通过列表的
append()方法动态新增点位数据,支持不限数量的点位输入 - 每次录入完1个完整点位后自动判断当前点位数量,不符合计算条件时输出对应提示,符合条件时自动完成计算输出
- 加入输入异常校验,用户输入非数字内容时即可主动终止程序运行
内容的提问来源于stack exchange,提问作者Tyler Welsh
相关产品推荐
相关产品推荐

