2
我正在考慮一些合適的模型來存儲經絡和parallles。經絡和相似之處應該保持一致。經絡和平行的數據模型
可能模式:
A)「拓撲」模型 每個點存儲指向北,南,東,西點。
class Point
{
private:
double lat;
double lon;
Point *north;
Point *south;
Point *east;
Point *west;
...
};
class Meridian
{
private:
double longitude;
Point *start;
Point *end;
unsigned int points_total;
};
class Parallel
{
private:
double latitude;
Point *start;
Point *end;
unsigned int points_total;
};
優點:
- 我們可以遍歷在南北方向各有經穴,反之亦然。我們可以在東西方向上穿越每個平行線,反之亦然。
- 我們確定每個點是在子午線還是平行線內(使用指針)。
- 小的存儲需求...
缺點:
- 每子午線/並行點只有順序訪問
- 與拷貝構造函數和operator =問題。一組點的副本應該分幾個階段完成:創建一個新的點實例,使用std :: map添加點之間的拓撲關係,更改子午線/平行線的端點......它相當慢...
第二個缺點導致我放棄了模型。 B)點數列表。 Meridian /平行商店列表中的點,沒有拓撲關係。
class Point
{
private:
double lat;
double lon;
};
class Meridian
{
private:
double longitude;
std::vector <Point> points;
};
class Parallel
{
private:
double latitude;
std::vector <Point> points;
};
優點:
- 我們可以遍歷在南北方向各有經穴,反之亦然。我們可以在東西方向上穿越每個平行線,反之亦然。
- 複製構造函數和運算符沒有問題=
- 順序和直接訪問每個點。
缺點:
- 我們不能確定每個點是否屬於任何子午線/並行(使用指針)或沒有。
- 較大的存儲需求。
- 在任何時候,我們是不是能夠找到一個/下一個經絡/並行的時候,我們沒有指針...
最後的缺點可能會導致模型的遺棄,導致我去思考拓撲模型的一個修改後的變體....
我正在執行一些空間模擬和代表結果在幾個cartografic投影,所以高效的數據存儲對我來說非常重要。
也許有人可以提出更好的模型:-)。感謝您的回答...