python、arcgis求解辐射力范围

作者: d33911380280 | 来源:发表于2016-11-08 17:15 被阅读95次

    基于主成分所得的综合评价值,在ArGIS的Generate方法下,用fishnet模块直接生成5km×5km的格网及对应的label点。起初选用1km*1km格网,但数据量过大,难以操作。利用长三角及京津冀城市群边界图裁切,得到相应地区格网图,并分别计算各城市到格网点的距离。后续计算过程通过编写python程序完成:利用引力模型计算各网格受区域内各个城市的辐射值,按照“取大”的原则确定各网格的被辐射值及归属城市。最后将计算结果链接到ArcGIS中,通过分层设色,按颜色深浅表示辐射的强弱作出辐射强度图。由于辐射值过小,为了便于显示结果,统一乘1000000。利用唯一值法表示,则可以说明各城市的辐射范围[借鉴自潘竟虎文章]。

    #coding=utf-8
    
    """
    Created on Tue Oct 18 16:19:20 2016
    
    @author: Administrator
    """
    import pandas as pd
    bj=pd.read_table('D:/5km+/bj.txt',sep=',')
    bj['power']=0
    bj['power']=bj['jjjpower_txt_value']/((bj['DISTANCE'])*(bj['DISTANCE']))*1000000
    #利用引力模型计算辐射强度值
    bj_ex=bj.iloc[:,[1,2,5,7,11]]
    bj_ex=bj_ex.sort_values(by=['Id'])
    #切片出需要的字段,以id字段进行排序
    q=[]
    c=bj_ex['Id'].drop_duplicates()
    for i,j in enumerate(c):
        print(j)
        group=bj_ex.iloc[14*i:14*(i+1),:]
        print(group)
        #对各网格数据分组
        max_value=group['power'].max()
        #求出各组的最大值
        print(max_value)
        r=group[group['power']==max_value]
        print(r)
        q.append(r)
        #提取最大值所在行,并添加到列表
    bj_df=q[0]
    for index,i in enumerate(q):
      if index>0:
        bj_df=pd.concat([bj_df,i])
    #合并列表内容
    bjr=bj_df[bj_df['NAME']=='北京']
    #提取北京的数据
    bjr.to_excel('D:/5km+/bjr.xlsx')
    bj_df.to_excel('D:/5km+/bj_df.xlsx')     
    

    相关文章

      网友评论

        本文标题: python、arcgis求解辐射力范围

        本文链接:https://www.haomeiwen.com/subject/nuoauttx.html