使用 python 计算 shp 文件中每个类的面积(以 % 为单位)

问题描述 投票:0回答:1

我有一个包含大约 60 个类的 .shp 文件,想要计算每个类相对于整个面积的面积。 假设有两个类,称为“森林”和“道路”,我想自动提取属于前两个类的所有多边形,计算它们相应的面积,然后获取每个类占整个覆盖区域的百分比面积所有班级。 如果用 Python 或 QGIS 来做就太好了

python shapefile qgis
1个回答
0
投票

我编写的代码应该可以解决我的问题:

import geopandas as gpd
import pandas as pd
import csv 
pd.options.display.max_rows = 999

vec_data = gpd.read_file("shapefile.shp")
vec_data = vec_data.set_index("class_name")
with pd.option_context('display.max_rows', None):
    vec_data["area"] = vec_data.area

    vec_data.area.to_csv('vec_data.csv', encoding='utf-8', index=True,header=False, quotechar="'", na_rep='0') 
index = {}

with open('vec_data.csv', newline='') as csv_file:
    cr = csv.reader(csv_file)
    for row in cr:
        index.setdefault(row[0], []).append(float(row[1]))

with open('vec_data2.csv', 'w', newline='\n') as csv_file:
    writer = csv.writer(csv_file)
    for key, values in index.items():
##CALCULATE the %
        values = (sum(values)/float(5.76258e9))*100
        writer.writerow([key, value])

print('done')

欢迎任何建议

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.