内存式数据访问的缺、优点
最近要做一个交通
地图的东西,要有路径分析功能,突然发现ToteoGraph作有些为难,光加载道路数据(国道,省道、县道一共200M),把这些数据加载到内存确实很庞大,可能需要1的内存,我当初的
开发思路是满足省一级城市的信息量,对象200万-500万之间,数据量大体在100M-500M,内存开销在128M-2G之间,最开始是想给大型企业一级使用,内存应该不成问题。 最近回过头来做应用才发现,不能要求每个人都有2G的内存空间来加载数据,看来唯一的办法就是改成文件式数据访问方式。 通过这段时间的开发,我大体总结了一些内存式也文件式的缺、优点:内存式 ---- 优点:数据访问灵活、数据存储格式扩充性强;因为访问的是内存所以数据访问速度快,在一些高效的分析软件里还是内存式更适合;绘图效率高,内存式的要高1倍以上;在编辑时可以处理复杂的功能,如对象捕捉、对象跟踪,不是说文件方式实现不了,而是效果不如内存式好。缺点:数据加载时间长,内存开销大,40M的shape文件在光对象的内存的开销能达到80M左右,这还是内存整理过的,如果不进行内存优化,在120M-150M之间,在解决超大规模的数据处理时,内存瓶颈凸现。文件式 --- 优点:数据不受内存限制,就索引而言,确实是非常先进。缺点:数据访问慢!我测试过
mapinfo 的,访问他的顶点数据,非常慢!
其他公司反映
ArcGIS的SDE访问也很慢(听说)!文件式的其他缺优点我也就不谈了,大家应该比我清楚 看来我需要使用以上两种格式,来满足不同的需要,总之,事又来了,看来又要忙上1个月了 最近终于解决region判断问题,采用数学的方式,终于不用PtInRegion了,性能有了很大的提高。 另一件高兴的事 --- 终于解决地图投影问题,这个问题困扰我很久,要不是为了显示交通地图,我还不知道要拖多久,现在使用的投影为高斯投影,采用的坐标系为WGS84,终于不是以前那种扁长模样了。