def Freq(line): lst=[] count1=0 for i in line: if i not in lst: lst.append(i) count1+=1 print(count1) lst.sort() for j in lst: count2=0 for i in line: if j==i: count2+=1 print('%s = %d'%(j,count2))正确编写格式是什么
正确的格式应该是:
def Freq(line):
lst=[]
count1=0
for i in line:
if i not in lst:
lst.append(i)
count1+=1
print(count1)
lst.sort()
for j in lst:
count2=0
for i in line:
if j==i:
count2+=1
print('%s = %d'%(j,count2))
注意代码缩进和函数定义后面的冒号。
LST数据估计UHII
使用地表温度(LST)数据估算城市热岛强度(UHII)
地表温度的重要性
在遥感领域,地表温度(Land Surface Temperature, LST)是研究气候变化、城市热岛效应、农业干旱评估等方面的重要指标[^1]。通过分析LST数据可以有效识别和量化城市热岛现象。
数据源的选择
为了估算UHII,通常会选择高分辨率的LST数据作为输入。MODIS卫星提供了广泛覆盖的地表温度产品,适用于大范围的城市热岛研究。此外,Google Earth Engine (GEE) 平台能够方便地处理大规模时空数据,支持高效的批量下载和计算操作。
UHII定义与计算方法
城市热岛强度(Urban Heat Island Intensity, UHII)是指城市中心区域相对于郊区背景环境之间的温差。具体来说:
[ \text{UHII} = T_{\text{urban}} - T_{\text{rural}} ]
其中 (T_{\text{urban}}) 表示城市内部平均地表温度;(T_{\text{rural}}) 则代表周边农村地区的平均地表温度。这两个参数可以通过对特定时间段内的LST图像进行统计得到。
实现过程
以下是使用Python脚本结合GEE API来实现这一目标的具体步骤:
import ee
ee.Initialize()
def calculate_uhii(city_aoi, rural_buffer_distance_km=20):
# 加载MODIS LST日间合成影像集合
modis_lst_day = ee.ImageCollection('MODIS/061/MOD11A1') \
.select(['LST_Day_1km']) \
.map(lambda img: img.multiply(0.02).subtract(273.15)) # 转换为摄氏度
def get_average_temperature(image_collection, aoi):
mean_temp = image_collection.mean().reduceRegion(
reducer=ee.Reducer.mean(),
geometry=aoi,
scale=1000,
maxPixels=1e9
)
return mean_temp.getInfo()['LST_Day_1km']
city_temps = []
dates = []
start_date = '2020-01-01'
end_date = '2020-12-31'
for date in pd.date_range(start=start_date, end=end_date, freq='M'):
filtered_modis = modis_lst_day.filterDate(date.strftime('%Y-%m'), (date + relativedelta(months=+1)).strftime('%Y-%m'))
urban_area = city_aoi.buffer(-rural_buffer_distance_km * 1000)
rural_area = city_aoi.buffer(rural_buffer_distance_km * 1000).difference(city_aoi.buffer((rural_buffer_distance_km - 5) * 1000))
t_city = get_average_temperature(filtered_modis, urban_area)
t_rural = get_average_temperature(filtered_modis, rural_area)
uhii_value = t_city - t_rural
city_temps.append(uhii_value)
dates.append(date.to_pydatetime())
df = pd.DataFrame({'date':dates,'uhii':city_temps})
return df
# 定义AOI(兴趣区)
shanghai_aoi = ee.Geometry.Polygon([
[[121.2841796875, 31.24603271484375],
[121.2841796875, 31.44603271484375],
[121.6841796875, 31.44603271484375],
[121.6841796875, 31.24603271484375]]
])
df_shanghai = calculate_uhii(shanghai_aoi)
print(df_shanghai.head())
此代码片段展示了如何利用GEE平台上的MODIS LST数据集以及简单的几何运算来估计给定城市的月度UHII变化趋势。注意这里仅选取了一个样本年份的数据用于说明目的,在实际应用中可以根据需求调整时间跨度和其他参数设置。
本程序的功能是随机产生50个1~20的整数,存入列表list1,然后找出这一组数据中的众数。所谓众数就是在这组数据中出现次数最多的数。 注意:一组数据中的众数可能有多个(即有多个数据的出现次数相同)。程序至少包含一个Freg函数过程,求出列表中每个不相同的数据出现的次数,并返回一个列表 (列表每个元素为一个元组,元组第一项为数据本身,第二项为数据出现的次数(可用count0方法计数)
import random
def Freg(lst): freq_lst = [] for num in set(lst): freq_lst.append((num, lst.count(num))) return freq_lst
list1 = [random.randint(1, 20) for i in range(50)] print(list1)
freq_list = Freg(list1) print(freq_list)
max_freq = max([tup[1] for tup in freq_list]) mode_list = [tup[0] for tup in freq_list if tup[1] == max_freq] print("众数为:", mode_list)