矩阵相交问题

【问题描述】

平面上有两个矩形A和B,其位置是任意的。编程求出其相交部分(如图中阴影部分)的面积。(0<a,b<1000)

clip_image001545343.gif

#include <stdio.h>
#define max(x,y) (x>y?x:y)
#define min(x,y) (x<y?x:y)


#include <stdio.h>
#define max(x,y)(x>y?x:y)
#define min(x,y)(x<y?x:y)
int main()
{
    double x1,x2,y1,y2,x3,x4,y3,y4;
    double a,b,c,d;
    scanf("%lf %lf %lf %lf\n",&x1,&y1,&x2,&y2);
    scanf("%lf %lf %dlf %lf\n",&x3,&y3,&x4,&y4);
    a=min(max(x1,x2),max(x3,x4));
    b=min(max(y1,y2),max(y3,y4));
    c=max(min(x1,x2),min(x3,x4));
    d=max(min(y1,y2),min(y3,y4));
    if ( a>c && b>d )
        printf("%lf\n",(a-c)*(b-d));
    else
        printf("0");
    return 0;
}


注意:考虑要周全

在使用 ArcGIS 制作土地利用转移矩阵时,若发现相交区域的积计算不一致,这通常与数据投影、几何计算方式或属性表处理过程中的设置有关。以下是一些常见的原因及对应的解决方法: ### 1. 数据坐标系问题 ArcGIS 中计算积时必须使用合适的**投影坐标系(Projected Coordinate System)**。如果原始数据是地理坐标系(如 WGS84),则直接计算积会导致误差[^1]。 - **解决方法**: - 在进行积计算前,确保数据框(DataFrame)已设置为适当的投影坐标系。 - 可以使用【定义投影】工具或【投影】工具将栅格或矢量数据转换为等积投影(如 Albers Equal Area Conic)。 ```python # 示例:使用 arcpy 设置投影(适用于矢量数据) import arcpy input_feature = "intersect_result.shp" output_feature = "projected_result.shp" projection = arcpy.SpatialReference('Albers_Conical_Equal_Area') # 等积投影 arcpy.Project_management(input_feature, output_feature, projection) ``` ### 2. 栅格转后的精度损失 在使用【栅格转】工具时,可能会因为像元大小边界简化造成积偏差,尤其是在相邻类别边界处。 - **解决方法**: - 在执行【栅格转】时取消勾选“简化”选项,保留原始栅格边界的精确性。 - 使用高分辨率栅格数据减少边缘模糊带来的误差。 ### 3. 相交分析后的属性丢失或重复 在执行【相交】操作后,属性表中可能存在重复记录或未正确匹配的字段,导致积统计错误。 - **解决方法**: - 检查相交后的属性表,确认是否每个唯一组合都有对应的积值。 - 若存在多个相同类型对的记录,应使用【汇总】功能按类型对积进行求。 ```python # 示例:使用 arcpy 对相交结果按类型分组求 import arcpy table = "intersect_output.dbf" summary_table = "summary.dbf" arcpy.Statistics_analysis( table, summary_table, [["area", "SUM"]], ["class_2003", "class_2012"] ) ``` ### 4. 积计算方式不当 在 ArcGIS 中使用【计算几何】功能时,若选择的单位或方法不合适,也会导致积不一致。 - **解决方法**: - 在右键字段选择【计算几何】时,确保选择的是“积”,并指定正确的单位(如平方米、公顷等)。 - 若数据已投影,选择“使用数据源的坐标系”进行计算。 ### 5. Excel 数据透视表配置错误 导出到 Excel 后,若数据透视表的汇总方式设置错误(例如平均值而非求),也会造成积不一致的假象。 - **解决方法**: - 插入数据透视表后,检查值字段设置,确保积字段使用“求”而非“计数”或“平均值”。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值