伟景行Citymaker三维Gis加载FDB数据

如何读取火鸟数据库FireBird的.fdb文件 Firebird是一个跨平台的关系数据库系统,目前能够运行在Windows、linux和各种Unix操作系统上,提供了大部分SQL-99标准的功能。它既能作为多用户环境下的数据库服务器运行,也提供嵌入式数据库的实现。 阅读详情

FDB是伟景行平台数据存储的格式,可以保存在本地也可以存储在后台数据库中,本代码是从本地加载FDB文件。

            //连接信息对象,用于数据源的创建或打
             IConnectionInfo ci = new ConnectionInfo();
                       //指定数据源连接类型
                        ci.ConnectionType = gviConnectionType.gviConnectionFireBird2x;
                        string tmpFDBPath = ConfigurationManager.AppSettings["fdbFile"];//获取FDB文件路径
                        ci.Database = tmpFDBPath;
                        //数据源工厂,负责数据源的打开
                        IDataSourceFactory dsFactory = new DataSourceFactory();
                        //打开数据源
                        IDataSource ds = dsFactory.OpenDataSource(ci);
                        //获取数据集名集合
                        string[] setnames = (string[])ds.GetFeatureDatasetNames();
                        if (setnames.Length == 0)
                            return;
                        fcMap = new Hashtable();
                        for (int j = 0; j < setnames.Length; j++)
                        {
                            IFeatureDataSet dataset = ds.OpenFeatureDataset(setnames[j]);
                            datasetCRS = dataset.SpatialReference;
         string[] fcnames = (string[])dataset.GetNamesByType(gviDataSetType.gviDataSetFeatureClassTable);
                            if (fcnames.Length == 0)
                                return;
                            foreach (string name in fcnames)
                            {
                                IFeatureClass fc = dataset.OpenFeatureClass(name);
                                // 找到空间列字段
                                List<string> geoNames = new List<string>();
                                IFieldInfoCollection fieldinfos = fc.GetFields();
                                for (int i = 0; i < fieldinfos.Count; i++)
                                {
                                    IFieldInfo fieldinfo = fieldinfos.Get(i);
                                    if (null == fieldinfo)
                                        continue;
                                    IGeometryDef geometryDef = fieldinfo.GeometryDef;
                                    if (null == geometryDef)
                                        continue;
                                    geoNames.Add(fieldinfo.Name);
                                }
                                fcMap.Add(fc, geoNames);
                             }
                        }
                        
                  
                   
                    bool hasfly = false;
                    foreach (IFeatureClass fc in fcMap.Keys)
                    {
                        List<string> geoNames = (List<string>)fcMap[fc];
                        foreach (string geoName in geoNames)
                        {
                            if (!geoName.Equals("Geometry"))
                                continue;
                            IFeatureLayer featureLayer = this.axRenderControl.ObjectManager.CreateFeatureLayer(
                            fc, geoName, null, null, rootId);
                            IFieldInfoCollection fieldinfos = fc.GetFields();
                            IFieldInfo fieldinfo = fieldinfos.Get(fieldinfos.IndexOf(geoName));
                            IGeometryDef geometryDef = fieldinfo.GeometryDef;
                            env = geometryDef.Envelope;
                          //定位到元素
                            if (!hasfly)
                            {
                                
                                if (env == null || (env.MaxX == 0.0 && env.MaxY == 0.0 && env.MaxZ == 0.0 &&
                                    env.MinX == 0.0 && env.MinY == 0.0 && env.MinZ == 0.0))
                                    continue;
                                IEulerAngle angle = new EulerAngle();
                                angle.Set(0, -20, 0);
                                if (geoFactory == null)
                                    geoFactory = new GeometryFactory();
                                IPoint pos = geoFactory.CreatePoint(gviVertexAttribute.gviVertexAttributeZ);
                                pos.SpatialCRS = datasetCRS;
                                pos.Position = env.Center;
                                this.axRenderControl.Camera.LookAt2(pos, 200, angle);
                            }
                            hasfly = true;
                        }

                    }

【二次开发】CityMaker数据加载——三维瓦片 ** 三维瓦片数据 ** 一、技术原理 在二维地图中,为了更快的呈现出某范围的数据,往往会对一整张分辨率非常高的地图进行切片,即对地图建立金字塔结构。它将地图由粗到细,按一定比例尺将地图分为N个等级,每个等级表现不同精度的要素,再对该等级的地图按一定大小进行切片,最后输出一张一张的图片。用户浏览地图时,根据比例尺的不同加载的是不同层级的某范围内的地图图片,由此大大减少了数据加载量,加快了地图浏览速... 阅读详情

相关推荐

Firebird数据库FDB编辑工具

Firebird数据库文件免安装打开文件,不用安装Firebird就可以直接编辑FDB数据库文件

使用FireBird数据库基本知识

1.进安装目录bin文件夹,如果是3.0版本到根目录即可 2.数据库用户管理,使用命令:gesc -user sysdba - password masterkey    添加新用户:add huiqing -pw 123456 3.操作数据库:isql -user sysdba -password masterkey    创建数据库;create database 'c:\test.f

不敲代码的码农的博客 2万+

CityMaker 产品白皮书

CityMaker 产品白皮书,伟景行最新发布资料。

CityMaker研修之路 02 伟景行(CityMaker)的倾斜之路

1、说到倾斜大家都知道街景工厂,Smart3D,PhotoMesh等主流平台。说到后期应用,大家都会想到超图的单体化,Skyline的3dml,或者说是别的我不知道的一些平台。 2、 这里再给大家介绍一款新的平台,CityMaker,年前的时候我也不知道CityMaker系列也有倾斜能力的。 3、软件获得:如果想实验一下我说的,可以把姓名,单位,电话,邮箱等信息发送到我的邮箱进行试用su

海洪博客Skyline,CityMaker 4760

WSL Ubuntu20 通过1Panel配置SSH服务的完整避坑指南

本文详细介绍了在WSL Ubuntu20环境下通过1Panel配置SSH服务的完整指南,包括环境准备、SSH服务安装与基础配置、1Panel中的SSH管理技巧以及连接测试与故障排查。特别针对WSL特性提供了避坑建议,如IP动态变化处理、SSH服务初始化配置等关键步骤,帮助用户高效搭建稳定的SSH服务环境。

weixin_29239279的博客 414

【QT+PCL】串口读取单线激光雷达数据并在QVtkWidget组件中实时刷新(一)

(本文主要记录开发过程以及遇到的困难及解决方式)

2301_76329543的博客 3068

【二次开发】CityMaker几何体——模型

** 三维中创建模型 ** 一:技术原理 CityMaker模型点modelpoint是由模型符号(model)和纹理(image)组成,image可以是本地图片也可以是FDB纹理库中的图片,model可以是自己创建或者是用osg文件获取,一般情况model中由顶点数组、纹理数组、材质组成,通过顶点数组和纹理数组来描述模型和纹理规则 接口:createGeometry、createRenderMo...

CITYMAKER二次开发学习者之家 790

从Demo到产品:基于ADAU1452的ANC方案,硬件选型、性能优化与避坑指南

本文详细解析了基于ADAU1452的主动降噪(ANC)方案从Demo到产品的实现路径,涵盖硬件选型、性能优化与实战避坑指南。重点探讨了ADAU1452与ADAU1466的性能差异、编解码器选型策略,以及MFXLMS算法优化技巧,为工程师提供从理论验证到量产落地的系统级解决方案。

weixin_30542079的博客 451

在citymaker中使用嵌入式访问fdb

通常本地fdb文件只能被一个进程打开,再开一个进程同时访问同一个fdb文件,会报错:文件被占用。针对这种情况,各种封装层都做了两重工作,对FDE接口和serverclient接口各进行一次调用。最近新出的java封装也同样面临这个问题。如果在服务器上使用的是mysql数据库,再把mysql发布成服务,这种方式还好说。如果在服务器上使用的是fdb,就同样面临这个问题了,要不java封装也对serve...

wagner_zk的专栏 683

UE4 专用服务器搭建(UE4.27为例)

专用服务器、DS服务器

mimo134的博客 2775

Windows系统中 Xmanager 6 企业版下载安装激活教程

Xmanager 6 企业版安装激活教程 1.Xmanager 6 下载网址:https://yunpan.360.cn/surl_yrJrWq3GmjN 2. 双击 Xmanager-6.0.0169r 安装 3. 点击运行按钮 4. 点击下一步 5. 选择我接受许可证协议中的条款(A), 点击下一步。 6. 输入用户名:byg,公司名称:microsoft,序...

mry6的博客 9873

伟景行Citymaker管廊三维Gis实现鼠标点选功能

在Citymaker三维Gis平台上用C#实现点选功能 效果如下 首先设置鼠标为点击选择状态,代码如下:  this.axRenderControl.MouseSelectMode = gviMouseSelectMode.gviMouseSelectClick;  this.axRenderControl.MouseSelectObjectMask = gviMo

凡梦 1324

基于Python适用于YOLO目标检测算法的图片数据增强处理

为了增强模型的鲁棒性以及数据的丰富性,同 时为了防止由于数据过少发生过拟合,本设计对数 据集进行数据增强处理,包括随机亮度调节、随机 对比度调节、随机饱和度调节、加入高斯噪声、水 平翻转、运动模糊和旋转 15°

weixin_67136409的博客 699

jdk1.8版本下访问本地数据库文件(access数据库.mdb)与(火鸟数据库.fdb)踩坑记录

火鸟数据库java访问

qq_39304911的博客 2343

GStreamer中h264parse元素

h264parse是 GStreamer 中处理 H.264 视频流的关键元素,主要负责解析和准备 H.264 流以便后续处理。

深之JohnChen的专栏 1026

【RKNN】RKNN(Rockchip Neural Network)​​ 的详解

RKNN 为 Rockchip 硬件提供了高效的 AI 推理解决方案,适合需要低功耗、实时响应的边缘场景

浩瀚之水的专栏 1685

java连接fdb文件_FDB File Extension - What is .fdb and how to open? - ReviverSoft

You're here because you have a file that has a file extension ending in.fdb.Files with the file extension.fdbcan only be launched by certain applications. It's possible that.fdbfiles are data fi...

weixin_30276247的博客 381

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

上一篇: 伟景行Citymaker管廊三维Gis实现鼠标点选功能
下一篇: ActionBar在AppCompatActivity中使用时的几个问题总结
凡梦_
博客等级 码龄25年 223粉丝 77原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凡梦_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值