• Arcgis-Tools_04使用Python制作土地利用转移矩阵


    实现目的:分析多个省的国土和林地一张图的地类对应关系,林地作为主体。

    1、数据准备

    因操作过程中发现,以省为单位进行分析,数据量巨大,且最终结果只关注地类映射关系,采取如下操作:

    对一张图进行修复几何——按照省、县、地类融合(不作为多部件)——使用国土标识林地——计算面积

    注:此过程耗时较长,数据量巨大,各过程文件要存储在文件地理数据库,避免使用shp文件;可使用模型构建器创建上面流程,自动执行。

    2、数据分析

    • 可使用数据库分析,将数据导入数据库,再执行sql语句,此操作过于繁琐,涉及数据多次导入导出。

    • 使用arcpy数据分析模块的arcpy.da.FeatureClassToNumPyArray函数(版本10.1以后)、 Python pandas和numpy模块分析,主要使用pandas的pivot_table函数。

    import arcpy, time
    import pandas as pd
    import numpy as np
    
    start = time.clock()
    pd.set_option('display.width', 500)
    myarray = arcpy.da.FeatureClassToNumPyArray(
        r"J:TT林地标识1.gdb青海PairwiseDiss_Identity",
        ["XIAN", "县名", "DI_LEI", "DLMC", "MJ"])
    mydf = pd.DataFrame(myarray)
    ddf = pd.pivot_table(mydf, index=["XIAN", "县名", "DI_LEI"], columns=["DLMC"], values=["MJ"], aggfunc=np.sum,
                         fill_value=0, margins=True)
    # 不创建映射表,只产生原始分组统计
    # ddf = pd.pivot_table(mydf, index=["XIAN", "县名", "DI_LEI", "DLMC"], values=["MJ"], aggfunc=np.sum,
                         # fill_value=0)
    # 若安装了openpyxl可直接导出为excel,可选择是否合并单元格
    # ddf.to_excel("青海.xlsx",merge_cells=False) 
    ddf.to_csv("青海.csv")
    end = time.clock()
    print("运行时间:", end - start)
    

    csv结果如下(展示数据为无效数据)

    image-20200420111253579

    3、pandas的pivot_table函数

    微信图片_20200420111431
  • 相关阅读:
    了解自己,才能踏出成功的第一步
    21世纪非常成功心法[强烈推荐]
    先做人后做事的庸才文化
    职业生涯发展技巧20则
    21世纪非常成功心法[强烈推荐6]
    豁达者的诱惑
    20个问题:平凡的天才人格特质
    21世纪非常成功心法[强烈推荐5]
    测测你的人生会走怎样路线
    21世纪非常成功心法[强烈推荐7]
  • 原文地址:https://www.cnblogs.com/bigmonk/p/12963332.html
Copyright © 2020-2023  润新知