创建网格并分配值

Create a grid and assign values

本文关键字:分配 网格 创建      更新时间:2023-10-16

我想用确定的间距创建一个世界上的2D平方网格(例如D)

-180 =< j =< 180
-90 =< k =< 90
Grid[j][k]

,然后分配给每个单元格的LON LAT点,我存储在两个数组中

0 =< i < N
Lon[i]
Lat[i]

按细胞分组。

我正在考虑使用嵌套环来创建网格,但我不确定如何处理。

非常感谢

您可能会被SO社区大喊大叫,以提出一个新手问题,而没有很多研究迹象。但这是我的强制性答案。

struct Position
{
    double Lon, Lat;
}
const unsigned short lonCount = 180;
const unsigned short latCount = 360;
Position positions[lonCount][latCount];
for( unsigned short lon = -90; lon <= 90; lon++ )
{
    for( unsigned short lat = -180; lat <= 180; lat++ )
    {
        Position* p = &positions[lon + lonCount / 2][lat + latCount / 2];
        p->Lon = lon;
        p->Lat = lat;
    }
}

这应该让您入门。

struct Position {
  double Lon, Lat;
    int index;
};
int main(){
printf ("n");

    static const double arrlon[] = {100,180,180};   
    static const double arrlat[] = {0,2,3};
    static const int arrind[] = {0,0,0};
    vector<double> londat (arrlon, arrlon + sizeof(arrlon) / sizeof(arrlon[0]));
    vector<double> latdat (arrlat, arrlat + sizeof(arrlat) / sizeof(arrlat[0]));
    vector<int> index (arrind, arrind + sizeof(arrind) / sizeof(arrind[0]));
    int N = sizeof(arrlat)/ sizeof(arrlat[0]) ;
    const int lonCount = 360;
    const int latCount = 180;
    const int step = 5;
    Position positions[lonCount+1][latCount+1];
    Position* p;
    int count = 0;
    for(int lon = 0; lon <= 360; lon=lon+step){
    for(int lat = 0; lat <= 180; lat=lat+step){
      p = &positions[lon][lat];
      p->Lon = lon;
      p->Lat = lat;
            p->index = count;
            count++;
            for (int i = 0; i<N ; i++){
                if(londat[i] >= p->Lon && londat[i] < p->Lon+step && latdat[i] >= p->Lat && latdat[i] < p->Lat+step) index[i] = p->index;
            }
       }
    }
    for (int i = 0; i<N ; i++) cerr << i << "   " << index[i] << endl;
    return 0;
}