空间分析模型综述:理论与应用探讨

5星 · 超过95%的资源 需积分: 3 12 下载量 90 浏览量 更新于2024-08-02 1 收藏 7.29MB PDF 举报
《空间分析中的模型》由Lena Sanders编著,于2001年在法国出版,原书名为"Modèles en analyse spatiale"。此书提供了对空间分析中广泛存在的各种模型以及形成这些模型背后不同思维方式的深入探讨。作者们拥有广泛的学术背景,涵盖了地理、经济、水文学、生态学等多个领域,并运用了数学、统计学、计算机科学和物理学等多种方法论,体现了跨学科的研究视角。 书中分为两类章节,一类是从主题角度审视空间分析,另一类则聚焦于关键概念或特定的空间分析方法论领域。作者们的目的是为读者提供一个全面的问题概述,并通过实例应用来支持理论阐述。为了便于读者间的交流和各章之间的关联性,法语版采用了交叉引用的阅读系统。 作者团队的无私合作、出版社的翻译工作、François Durand-Dastès在审稿方面的帮助,以及Eugénie Dumas和Malika Madelin在项目完成阶段的支持,都是本书顺利出版的重要因素。版权方面,根据1988年的《版权、设计与专利法》,除非出于研究、私人学习、批评或评论目的,否则未经书面许可,任何形式的复制、存储或传输都必须获得出版商的许可,或者在复制图形作品时遵循CLA(Copyright Licensing Agency)的条款和许可。 《空间分析中的模型》不仅是一本理论性的参考书籍,还是一本实用的工具书,为研究者、专业人士和学生提供了深入理解空间分析模型及其在实际问题中的应用的宝贵资源。通过阅读这本书,读者将能够洞悉空间组织原则、定位逻辑、空间互动的形式及其在空间动态中的作用,从而提升自己在这个领域的专业技能。
2023-05-25 上传

import sys sys.tracebacklimit = 0 import os os.environ['PYTHONUNBUFFERED'] = '1' import arcpy 获取参数 input_features = arcpy.GetParameterAsText(0) join_field = arcpy.GetParameterAsText(1) target_feature = arcpy.GetParameterAsText(2) target_field = arcpy.GetParameterAsText(3) area_threshold = arcpy.GetParameterAsText(4) 创建空间连接 join_result = arcpy.SpatialJoin_analysis(input_features, target_feature, "in_memory/spatial_join", "JOIN_ONE_TO_ONE", "KEEP_ALL", "", "INTERSECT") 使用MakeFeatureLayer创建要素图层,并使用AddFieldDelimiters处理字段名称 join_layer = arcpy.management.MakeFeatureLayer(join_result, "join_layer").getOutput(0) join_field_name = arcpy.AddFieldDelimiters(join_layer, join_field) 使用SelectLayerByAttribute选择重叠面积大于阈值的要素 arcpy.management.SelectLayerByAttribute(join_layer, "NEW_SELECTION", "Shape_Area > " + str(area_threshold)) 使用SummaryStatistics工具进行面积求和 summary_table = arcpy.Statistics_analysis(join_layer, "in_memory/summary_table", [["Shape_Area", "SUM"]], join_field_name) 使用TableToNumPyArray将结果转换为字典 sum_dict = {} with arcpy.da.TableToNumPyArray(summary_table, [join_field, "SUM_Shape_Area"]) as arr: for row in arr: sum_dict[row[0]] = row 使用UpdateCursor更新目标要素类的目标字段 with arcpy.da.UpdateCursor(target_feature, [target_field, join_field], sql_clause=(None, "ORDER BY OBJECTID")) as cursor: for row in cursor: join_value = row[1] if join_value in sum_dict: area_sum = sum_dict[join_value] row[0] = area_sum cursor.updateRow(row) 导出结果 output_feature = arcpy.GetParameterAsText(5) arcpy.CopyFeatures_management(target_feature, output_feature) 删除游标对象和要素图层对象 del cursor, join_layer请改正为可复制代码

2023-05-24 上传