1 excel度分秒转十进制
=LEFT(A1,FIND("°",A1)-1)+MID(A1,FIND("°",A1)+1,FIND("′",A1)-FIND("°",A1)-1)/60
2 用shp的某一个元素(code)统计Raster对应区域的某一特征(value)的值
# -*- coding: UTF-8 -*-
import arcpy
import pandas as pd
import os
from dbfread import DBF
def location_count_value(Raster_path, select_feature_path, select_feature_field, \
select_feature_code, out_dbf_folder_path, value):
# 参数示例
# Raster_folder_path = "E:\SWAT_Model\JinJiang_swat\data\Geo_data\LUCC\d lucc_tif_mask_Reclass"
# Raster_file_name = "lucc_2005_tea.tif"
# shp_folder_path = "E:\SWAT_Model\JinJiang_swat\data\Geo_data\\basic_data"
# shp_file_name = "county.shp"
# Raster_path = os.path.join(Raster_folder_path, Raster_file_name)
# select_feature_path = os.path.join(shp_folder_path, shp_file_name)
# select_feature_field = "AD_CODE"
# select_feature_code = 350524000000
# out_dbf_folder_path = "E:\\SWAT_Model\\JinJiang_swat\\data\\Geo_data\\point_source\\city\\a lucc_year"
# value = 5
arcpy.MakeRasterLayer_management(Raster_path, "Raster")
arcpy.MakeFeatureLayer_management(select_feature_path, "shp")
# arcpy.SelectLayerByAttribute_management ("shp", "NEW_SELECTION",\
# '\"' + select_feature_field+'\" = ' + str(select_feature_code ))
arcpy.SelectLayerByAttribute_management ("shp", "NEW_SELECTION", \
'\"'+select_feature_field+'\" =' +"\'" + str(select_feature_code) + "\'")
arcpy.sa.ZonalHistogram ("shp", select_feature_field, "Raster", os.path.join(out_dbf_folder_path, \
str(select_feature_code)+"_"+Raster_file_name[0:-4]+".dbf"))
dbf_path = os.path.join(out_dbf_folder_path, str(select_feature_code)+"_"+Raster_file_name[0:-4]+".dbf")
if os.path.exists(dbf_path):
table = DBF(dbf_path, encoding='GBK')
df = pd.DataFrame(iter(table))
num= df.loc[df[df[df.columns[-1]]==str(value)].index.tolist()[0], df.columns[0]]
return num
3 罗列shp文件中的某个字段的所有内容,返回一个列表
# -*- coding: UTF-8 -*-
import arcpy
import os
def list_shp_field_value(shppath, shpfields):
# shp_folder_path = "E:\SWAT_Model\JinJiang_swat\data\Geo_data\\basic_data"
# shp_file_name = "county.shp"
# shppath = os.path.join(shp_folder_path, shp_file_name)
# shpfields = "AD_CODE"
shp_List = []
rows = arcpy.SearchCursor(shppath,\
fields=shpfields)
for row in rows:
shp_List.append(row.getValue(shpfields)) #注意JH为字段名,要求为英文
return shp_List
print(list_shp_field_value(shppath, shpfields))
4 某年有多少天
def year_days_num(year):
startDay = str(year)+'-01-01'
endDay = str(year)+'-12-31'
year_days_mum = (datetime.datetime.strptime(endDay, "%Y-%m-%d") - datetime.datetime.strptime(startDay, "%Y-%m-%d")).days +1
return year_days_mum