Q:嗯,线系统看到了,浏览很快。是都在内存中,还是文件影射?
F:目前都在内存中。
Q:内存块是共享的吧?
F:是的,所有访问是访问共同的数据块,针对每个访问或者界面有一个独立的MapDrawing对象。所以基本上需要的物理内存就是shp文件dbf文件的大小。
Q:如果某一个进程要临时修改某个数值、某个显示而不影响其它进程,这样会有问题?
F:如果临时修改,针对网络应用来说,我计划是附加一份修改纪录到mapdrawing对象。
Q:嗯,这样得有两个绘制逻辑了
F:绘制或处理的时候查询修改纪录进行,显然不可能因为某些小的修改复制一份完整的数据。就算是大的修改也不应该完全复制。我觉得这个不是问题,比如在某个图层加一些点,或者线,我只要生成一个对象,对象包括这些添加的数据,显然很小,说明这些数据是指向那个图层的添加,绘制的时候查询到这个对象,增加绘制这些数据就可以了,而这个增加成本很小。
Q:我再找个几百兆的shp,回头试试:)
F:可以,我觉得问题不大,作为server,配个2g或者4g内存应该不是问题,特别是现在内存便宜。但是绘制或者运算是实在的,这个只能靠优化及多核来处理。优化一个是可行的genere的优化,当然可能高级一些,另外也可以考虑采用比如nvidia的cuda这样的库来扶助,自己研究指令集显然就太困难了,当然也不是不可以考虑。
Q:有一种临时修改最常用的不是添加,而是修改原有实体的显示,将来的样式指定,建议通过属性表字段来设置,和arcgis类似
F:修改也问题不大,只要修改的不是太多。指明是修改,就不绘制原数据,绘制修改后的数据就可以了。
Q:另外,这个基本系统还需要支持底图的功能,图片或者栅格形式
F:这个更像是对server文件服务的要求,程序只要确定位置和大小就可以了。