一、技术原理
CityMaker创建点对象,根据一个实际点坐标创建可视化点对象,用到的是sdk中的IGeometryFactory(几何体工厂接口)来创建几何点,然后利用IObjectManager对象管理器(接口来创建可视化对象点,创建可视化点可以设置点的样式IPointSymbol)
二、创建三维点对象
1. .NET
public void CreateRenderPoint()
{
//初始化一个几何工厂,主要用来创建几何对象
IGeometryFactory gFactory = new GeometryFactory();
//利用几何工厂创建一个几何点,第一个参数为创建的几何对象类型详细见
//第二个参数为顶点属性详细见图:
IPoint point = (IPoint)gFactory.CreateGeometry(gviGeometryType.gviGeometryPoint, gviVertexAttribute.gviVertexAttributeZ);
point.SetCoords(100, 100, 100, 0, 0);//设置点坐标
ISimplePointSymbol pointSymbol = new SimplePointSymbol();//创建点样式 分为简易点符号跟图片点符号,主要区别是图片点符号可以设置一张图片为点的样式此处为简易点符号
pointSymbol.FillColor = 0xff0000ff;//设置填充颜色 此处颜色值为ARGB A为透明度 RGB为十六进制颜色值
pointSymbol.Size = 20;//设置大小
--------------------图片点符号开始
//1. 本地绝对路径
IImagePointSymbol pointSymbol = new ImagePointSymbol();//图片点符号
pointSymbol.ImageName="D:\\citymakerbookdata\\point.png";//本地图片路径
//2.使用本地文件的相对路径,此时在#()内直接给图片名即可(不用给后缀.png),例如 ImageName = "#(1)"。括弧里面不区分大小写,一般使用小写。
// 图片默认存放在 "插件安装目录\CityMaker 7\CityMaker Runtime\res\Images\POI" 下。用户可自行拷贝需要的图片至该目录下。
//3.使用imageClass里存的图片,可以直接给图片名称
IImagePointSymbol pointSymbol = new ImagePointSymbol();//图片点符号
pointSymbol.ImageName="1";//图片路径 可以直接给图片名称 此处不细讲,详见高级篇
pointSymbol.SetResourceDataSet(dataset);//设置点图片引用资源的地方,提前加到imageClass中的图片资源,会存在dataset中
--------------------图片点符号结束
//根据对象管理器创建可视化点对象,参数为(几何点,点样式,节点id),节点id为创建临时对象时添加到三维树上的节点,默认根节点为11111111-1111-1111-1111-111111111111
IRenderPoint rPoint = rendercontrol.ObjectManager.CreateRenderPoint(point, pointSymbol, rootId);
}
2. JavaScript
function createRenderPoint(){
//创建几何点用几何工厂接口,利用几何工厂创建一个几何点
//利用几何工厂创建一个几何点,第一个参数为创建的几何对象类型详细见
//第二个参数为顶点属性详细见
var point = __g.geometryFactory.createGeometry(gviGeometryType.gviGeometryPoint,gviVertexAttribute.gviVertexAttributeZ);
point.setCoords(100,100,100,0,0);//设置点的坐标
var pointSymbol = __g.new_SimplePointSymbol;////创建点样式 分为简易点符号跟图片点符号,主要区别是图片点符号可以设置一张图片为点的样式此处为简易点符号
pointSymbol.fillColor = 0xff0000ff;//设置点填充颜色 此处颜色值为ARGB A为透明度 RGB为十六进制颜色值
pointSymbol.size = 200;//设置点大小
--------------------图片点符号开始
//1. 本地绝对路径
var pointSymbol = __g.new_ImagePointSymbol;//图片点符号
pointSymbol.imageName="D:\\citymakerbookdata\\point.png";//本地图片路径
pointSymbol.size = 200;
//2.使用本地文件的相对路径,此时在#()内直接给图片名即可(不用给后缀.png),例如 ImageName = "#(1)"。括弧里面不区分大小写,一般使用小写。
// 图片默认存放在 "插件安装目录\CityMaker 7\CityMaker Runtime\res\Images\POI" 下。用户可自行拷贝需要的图片至该目录下。
//3.使用imageClass里存的图片,可以直接给图片名称 此处不细讲,详见高级篇
var pointSymbol = __g.new_ImagePointSymbol;//图片点符号
pointSymbol.imageName="1";//图片路径 此处1为提前存入数据集dataset中的名称为1的图片
pointSymbol.setResourceDataSet(dataset);//设置点图片引用资源的地方,提前加到imageClass中的图片资源,会存在dataset中,dataset为对应数据集
--------------------图片点符号结束
//创建可视化三维点
var rpoint = __g.objectManager.createRenderPoint(point, pointSymbol, __rootId);
}
3. 注意
- 创建几何点类型和顶点属性设置
- 创建图片点符号 注意图片尺寸 只要是在三维里面显示的图片,对图片尺寸的要求为:32位操作系统图片分辨率不超过4096 4096,64位操作系统图片分辨率不超过8192 8192.
- Server数据源,在脚本里用字段值设置ImageName时,需要在原始FDB数据里对该字段建渲染索引,否则符号化失败。 用脚本渲染风格脚本(使用lua语法)时使用。
- dataset需要加载数据的时候提前获取。