#include <iostream>
#include <algorithm> // for std::max and std::min
// 矩形1的坐标
double left_top_lon; // 矩形1左上角经度
double left_top_lat; // 矩形1左上角纬度
double right_bottom_lon; // 矩形1右下角经度
double right_bottom_lat; // 矩形1右下角纬度
// 矩形1的分辨率
int totalWidth; // 矩形1的宽度
int totalHeight; // 矩形1的高度
// 矩形2的坐标
double stit_left_top_lon; // 矩形2左上角经度
double stit_left_top_lat; // 矩形2左上角纬度
double stit_right_bottom_lon; // 矩形2右下角经度
double stit_right_bottom_lat; // 矩形2右下角纬度
void calculateIntersectionCoordinates()
{
// 计算交集的左上角和右下角
double intersect_left_top_lon = std::max(left_top_lon, stit_left_top_lon);
double intersect_left_top_lat = std::min(left_top_lat, stit_left_top_lat);
double intersect_right_bottom_lon = std::min(right_bottom_lon, stit_right_bottom_lon);
double intersect_right_bottom_lat = std::max(right_bottom_lat, stit_right_bottom_lat);
// 检查交集的有效性
if (intersect_left_top_lon > intersect_right_bottom_lon ||
intersect_left_top_lat < intersect_right_bottom_lat)
{
std::cout << "没有交集区域。\n";
return;
}
// 计算交集的宽度和高度
double intersect_width_lon = intersect_right_bottom_lon - intersect_left_top_lon;
double intersect_height_lat = intersect_left_top_lat - intersect_right_bottom_lat;
// 计算像素坐标转换因子
double pixel_per_lon = totalWidth / (right_bottom_lon - left_top_lon);
double pixel_per_lat = totalHeight / (left_top_lat - right_bottom_lat);
// 交集左上角像素坐标
int intersect_left_top_pixel_x = static_cast<int>((intersect_left_top_lon - left_top_lon) * pixel_per_lon);
int intersect_left_top_pixel_y = static_cast<int>((left_top_lat - intersect_left_top_lat) * pixel_per_lat);
// 交集右下角像素坐标
int intersect_right_bottom_pixel_x = static_cast<int>((intersect_right_bottom_lon - left_top_lon) * pixel_per_lon);
int intersect_right_bottom_pixel_y = static_cast<int>((left_top_lat - intersect_right_bottom_lat) * pixel_per_lat);
// 输出结果
std::cout << "交集区域左上角像素坐标: (" << intersect_left_top_pixel_x << ", " << intersect_left_top_pixel_y << ")\n";
std::cout << "交集区域右下角像素坐标: (" << intersect_right_bottom_pixel_x << ", " << intersect_right_bottom_pixel_y << ")\n";
}
int main() {
// 设置矩形1的坐标(示例值)
left_top_lon = -100; // 矩形1左上角经度
left_top_lat = 50; // 矩形1左上角纬度
right_bottom_lon = -90; // 矩形1右下角经度
right_bottom_lat = 40; // 矩形1右下角纬度
// 矩形1的分辨率(示例值)
totalWidth = 800; // 矩形1宽度
totalHeight = 400; // 矩形1高度
// 设置矩形2的坐标(示例值)
stit_left_top_lon = -95; // 矩形2左上角经度
stit_left_top_lat = 45; // 矩形2左上角纬度
stit_right_bottom_lon = -92; // 矩形2右下角经度
stit_right_bottom_lat = 38; // 矩形2右下角纬度
calculateIntersectionCoordinates();
return 0;
}
矩形抠图坐标计算
最新推荐文章于 2025-07-28 17:30:49 发布