假如给你一个shp格式的点图层文件,如何通过二次开发(skyline),在skyline的三维视窗中,将二维点替换成一幅幅图片呢。注意这些点是随意的。
利用skyline自定义的接口,实现上述功能应该还是比较简单的。(这里就不再介绍具体界面的设置,只讲核心思想所在。)
1.首先要考虑如何加载一个shape(假设文件名为points.shp)。可以利用如下程序实现:
//(IIfoTree为IInformationTree5声明的对象,ilyr为ILayer5声明的对象。)
public void LoadLayer(object Sender,System.EventArgs e)
{
string XMLLayerInfo="<PlugData><LayerName>C:\\Users\\amos\\Desktop\\UsingILayer\\bin\\Debug\\points3.shp</LayerName><PlugType>shape</PlugType><StreamedLayer>1</StreamedLayer></PlugData>";
//确定打开points.shp文件的路径。
iLyr=IInfoTree.CreateLayer("points",XMLLayerInfo,0);
//装载shp数据,使其显示在视窗当中。并将返回值(system._ComObject,这个我也不明白。)传递给iLyr。
iLyr.Load();
}
2.上一步实现了points.shp文件的加载,那么接下来便是对图层中的点要素进行相关操作,使其由原先的点变为后来的图片。即用图片一一放置在所有点的位置上。(这里只能实现统一替换,只能利用同一种图片进行替换。)
这时候就体现了二次开发的优越性了。利用打包的类、接口,经实例化调用之后,便可以实现。代码如下:
iLyr.SetProperty("Image file",替换图片的完整路径(如:@"C:\temp\tree.tif"));
//完成模型的替换。真是太简单了。
iLyr.SetProperty("Scale",1000);//设定模型显示的比例,防止过小而看不到。
经过这两步就可以实现这个功能。