SuperMap GIS基础产品组件GIS FAQ集锦(1)

SuperMap GIS基础产品组件GIS FAQ集锦(1)

【iObject Java】new一个geomap之后,设置地图名并加入布局中后,getScale、getMapXML获取为空为什么?

【问题原因】 1.创建geoMap,对geoMap设置了该布局地图空间需要打开的地图名称,此时geomap对象并没有与WorkSpace关联,所以是读不到工作空间内的地图信息的。 所以setMapName方法给geoMap对象,立刻对该对象获取xml是无效的。 2.Scale比例尺,该比例尺是布局地图元素在布局中,地图当前显示的比例尺,直接对geoMap对象无法获取到,同样是因为以地图名称创建是拿不到地图信息的,因此也无法得到比例尺信息。
【解决办法】1.直接在geoMap对象上获取,使用geoMap.setMapXML(),来赋予地图内容。单纯为了获取map的xml来说,建议从WorkSpace的maps下使用地图名去获取。 2.以geoMap.setMapXML()或者geoMap.setMapName()+geoMap.setScale();这两种方式创建初始化geoMap,才能立刻获取到。对于已经绑定好工作空间的Layout的layoutElements在添加geoMap对象以后会给一个默认的比例尺,是可以取到比例尺的。

LayoutElements elements = m_mapLayoutControl.getMapLayout().getElements();     
elements.moveFirst() ;     
Geometry geoMapNow=elements.getGeometry();     
GeoMap geoMap1=(GeoMap)geoMapNow;     
double mapScale =geoMap1.getMapScale();

【iObjects .NET】导入的包含特殊字符数据,结果名称与iDesktop中不一致,如Dom-1.tif数据,在桌面中导入结果为Dom_1,而再iObjects .NET中直接导入则为Dom 1,组件中这种情况应该如何处理?

【出现原因】组件中并没有直接将特殊字符转换为下划线,是上层写的,所以与桌面中效果不一致。
【解决办法】通过使用Datasets.Rename 的方法重新指定名称。在代码中使用用String.Replace()的方法将空格替换成下划线即可解决。

【iObjects for Spark】【10.2.1】Linux将组件包\lib\objectsjava\bin_linux路径配置到profile中后,再次编辑报如下错误: libexpat.so.1:file too short,该如何解决?

【问题原因】这是由于包在Windows进行了解压重打包,导致软链接丢失
【解决办法】前往报错中的对应路径,删掉libexpat.so.1软链接文件,使用ln -s libexpat.so.具体版本号 libexpat.so.1 重建软链接后编辑指令正常,后续可使用JAVA组件tar包,对iObjects for Spark\lib\objectsjava\bin_linux的组件进行替换

【iObjects .NET】【11.0.1】 当数据集的属性表字段特别多的时候,开启批处理后调用 AddNew 接口新增记录一直返回 false,新增记录失败是什么原因呢?如何解决?

【问题原因】 新增记录失败是由于当前要新增记录的数据集字段多达 1000 个,且代码中开启了批处理,导致 SDK 底层构建的批量添加 SQL 语句太长,字符串长度超过了 SQLite 数据库默认最大执行 SQL 字符串长度。
【解决办法】 建议参考以下 2 种方案尝试解决:不采用批处理,直接调用 AddNew 接口新增数据,在非批处理的情况下,SDK 底层构建的 SQL 字符串长度会稍短一些,通常情况下能满足 SQLite 数据库的 SQL 字符串最大长度限制; 参考 SQLite 官网中的 SQLite中的限制 页面,在运行时使用 sqlite3_limit(db,SQLITE_LIMIT_SQL_LENGTH,size) 接口调整 SQL 语句的最大长度。

【iObjects Java】【11.0.1】 SuperMap iObjects Java 组件中剖面分析类 ProfileAnalyst 只支持 CAD 数据集中的模型,不支持模型数据集,如何才能对模型数据集做剖面分析?

【问题原因】 ProfileAnalyst 剖面分析类设计时还没有模型数据集,所以只支持对 CAD 数据集中的模型进行剖面分析;后续模型数据集发布后,重新设计了基于三维场景的剖面分析类 Profile 用以对三维场景内的数据进行剖面分析,包含模型数据集。
【解决办法】 使用 Profile 类代替 ProfileAnalyst 类进行剖面分析。

【iObjects Java】【11.0.1】在Linux环境下将组件包环境变量配置到prifile文件里面,再执行source /etc/profile 使环境变量生效,java -jar运行工程还是报环境变量的错误

【问题原因】用户启动了多个终端,source /etc/profile只能使当前终端下的环境变量生效
【解决办法】可以将环境变量设置到 ~/.bashrc 下解决

【iObject Java】同样的两个数据集,在桌面中裁剪分析结果正常,在Java组件中裁剪结果不正常

【问题原因】组件中创建数据集时,如果不设置坐标系,默认使用平面坐标系,而参与裁剪的两个数据集不是平面坐标系,因此裁剪不成功
【解决办法】在创建用于存放裁剪结果的数据集时需要将其坐标系设置和参与裁剪数据集一致

【iObject Java】使用Java组件将地图输出为PDF或图片格式,无法输出地图上的标绘符号

【问题原因】地图输出为PDF或图片不支持标绘符号
【解决办法】使用桌面产品输出

【iObject Java】使用组件实现CAD转简单数据集,从CAD记录集获取的几何类型全为GEOCOMOUND类型,无法识别具体类型

【解决方案】CAD可以存储复合几何对象,需要判断记录集中取出的几何对象是否为复合几何对象,复合的需要进行分解,使用的是GeoCompound.divide()方法

【iObjects .Net】设置场景中的图层过滤显示时,如果在响应事件中就不生效,但是已经刷新了场景,这是为什么?

【问题原因】此设置为针对图层的设置,出了场景的刷新还需要更新图层。
【解决办法】刷新图层:layer3Dp.UpdateData();

【iObjects .Net】如何使用二维线数据根据DEM数据提取出高度成为与地形匹配的三维线数据。

【解决办法】使用基于栅格数据集将二维矢量数据集转为三维矢量数据集的插值方法:Generalization3D.InterpolateShape 支持二维点数据集、二维线数据集和二维面数据集。

【UE】UE中打开了DataSmith CAD插件后使用超图UE插件添加数据源会崩溃闪退

【问题原因】DataSmith CAD插件与超图插件冲突
【解决办法】把BIN包设置成环境变量后就不会崩溃了。找到BIN包绝对路径:\Plugins\SuperMap HiFi 3D SDK for Unreal\Source\ThirdParty\SuperMapLibrary\Win64,设置环境变量,要设置在path首位,然后重启电脑,重启UE软件

【UE】插件里对模型材质进行替换,替换后的材质后选中无法高亮

【解决办法】替换的材质函数中添加选中对象高亮的内容,创建个四维向量,与SelectObjectID两个混合做乘法,乘法结果直接连到材质属性的自发光后即可选中高亮显示了。另外,可以在四维向量中更改选中高亮的颜色。材质函数SelectObjectID和示例NewMaterial可下载:链接:https://pan.baidu.com/s/1Jsgh89EVLyPUwTWwg-hxMg?pwd=t809 img

【UE】对白膜进行材质贴图后打包成功后运行,但白膜没有材质贴图,如何解决

【解决办法】项目设置里进行设置,找到打包。如果勾选了使用 pak 文件。则要手动设置:项目设置-打包-要复制的额外非资产目录,手动选择UE工程-Content-LayerInfo-Map 名称文件夹(即 AutomaticMatchingMaterials_S3M.json 所在的文件夹),然后再进行打包。如果未勾选使用 pak 文件,需要操作:项目设置-打包-要打包/复制的额外非资产目录中 ,手动选择上面所选路径。打包完成之后,运行 exe 即可得到美化后的效果。

【iObjects Java】将一条线放样成圆柱的时候,如何设置底部、侧面和顶部的贴图?

【解决方案】在放样时,设置放样参数LoftParameter.setGroup(false)。放样完成后获取到的model对象就会有三个子对象,名字分别包含start、side、end,就分别表示底部、侧面、顶部的对象,此时再去设置对应的骨架贴图可以了

【iObjects for Spark】如何获取输入的FeatureRDD数据的经纬度范围?

【解决办法】使用FeatureRDD.computeBounds()获取具体的经纬度范围

【iObjects .NET】iObjects .NET 组件如何加载 WMS 服务作为地图底图?

【解决办法】在 iObjects .NET 组件的 MapControl 控件中加载 WMS 服务作为地图底图,建议可以参考以下流程实现: 1. 构建 OGC WMS 服务的数据源连接信息对象;datasourceConnectInfo.EngineType = EngineType.OGC; datasourceConnectInfo.Driver = "WMS" 2. 在当前工作空间打开 WMS 数据源; 3. 将打开的 Web 型数据源下的数据集添加到 MapControl.Map.Layers 中即可。

【iObjects C++】【11.0.1】 请问 SuperMap iObjects C++ 组件的 UGEngineType 枚举类中哪个枚举值代表的是 UDBX 数据源类型?

【解决办法】 枚举值 UGEngineType::Spatialite 代表的是 UDBX 数据源类型,枚举值 UGEngineType::UDB 代表的是 UDB 数据源类型,枚举值 UGEngineType::UDB20 已经弃用。

【iObject Java】代码运行报错no WrapjGeo in java.library.path

【解决办法】此类报错基本可以确定为以下几种情况: 1.许可问题,查看许可是否过期,是否符合使用的产品版本,是否购买了相关模块 2.检查编程软件中的项目环境以及文件环境,拿idea举例,如果没有maven依赖库,是需要单独设置主执行文件的环境,以及项目环境的 3.更换jdk包,有部分机器可能与jdk1.8不兼容,更换为其他版本的jdk或者jre或者jre1.8 4.若确认1没有问题,使用DependencyWalker,检查系统依赖缺失,主要查看WrapjCore的依赖

【iObjects.NET】[11.1.0]iObjects.NET在对栅格数据生成Tin缓存的时候,桌面有一个设置组织类型为“块存储”,组件对应的参数设置是哪一个?

【解决办法】针对栅格数据生成Tin缓存用的关键类是TerrainCacheBuilder,设置块存储,是设置对应的TerrainCacheBuilder.BlockScale = 3,3表示为块存储,0表示为普通的瓦片存储。

【iObjects.Java】【11.0.1】使用Java组件开发的二维地图程序,关闭程序时该如何关闭对象?

【解决办法】关闭程序时先关闭 Map 对象或 MapControl 对象,后关闭 Workspace 对象。

【UE】UE中如何降低模型的亮度

【解决办法】默认情况下,模型缓存使用的材质是 Model,所以找到对应的 Model材质,在基础颜色前面乘一个小于1的系数,在左侧的细节处设置着色模型为默认光照,这样就可以调整模型的亮度了。另外,可以调整天光skylight的相关参数,比如强度范围等,调整过后,整个场景的亮度会有所调整,到了夜晚,模型的光照就会弱很多。img

【UE】动态pbr材质可以导出吗?

【解决办法】比较复杂的材质导不出来的。像水这种,不仅有动态效果,并且还有折射,反射等,这种类似的材质是导不出来的,只能是纹理贴图+材质参数比较简单的可以正常导出。

【iObjects.NET】同样一个组件包和开发程序,通过网页传输工具传输到某个电脑上后,一直报许可问题,new license时报no license instance created,但是开发环境可以正常运行,许可驱动和许可都正常,这种情况如何处理?

【问题原因】附件管理器识别阻止打开组件文件。
【解决办法】:在解压组件包前,选中组件压缩包,右键属性=>最下面的安全行中有一个解除锁定,点击接触锁定后即可正常使用

【iObjects .NET】怎么取消注册的事件?

【解决办法】把+=改为-=,例如 //为工作空间树节点添加双击事件 workspaceControl.WorkspaceTree.NodeMouseDoubleClick += WorkspaceTree_NodeMouseDoubleClick;
//取消双击事件
workspaceControl.WorkspaceTree.NodeMouseDoubleClick -= WorkspaceTree_NodeMouseDoubleClick;

【iObject.NET】如何实现线段将多边形分割为多个多边形?

【解决办法】 1.使用叠加分析中的裁剪算子把对象隔开OverlayAnalyst.Clip 2.在对结果数据集的每一个面对象Georegion遍历子对象拆成一个个分对象

【UE】UE5运行关卡崩溃,崩溃信息里面包含"D3D12RHI“相关信息,怎么办?

【解决办法】
在项目设置-- 平台-- Windows --目标RHT-- 默认RHI设置为DirectX11 重启工程

【iObjects for Spark】FeatureRDD入库HBASE参数该如何填写?

【解决办法】可参考以下示例:

val paramsH = new util.HashMap[String, java.io.Serializable]()
paramsH.put(HBaseFeatureRDDProviderParams.ZookeeperParam.key, "ip:2181") //zk服务地址
paramsH.put(HBaseFeatureRDDProviderParams.HBaseCatalogParam.key, "test") //Hbase数据库名
paramsH.put(FeatureRDDProviderParams.ProviderType.key, "HBase") 

【iObjects for Spark】ShapeFile 数据源读取参数该如何填写?

【解决办法】可参考以下示例:

val params = new util.HashMap[String, java.io.Serializable]()
params.put("providerType", "Shape")
params.put("path", shpPath)//shp文件夹路径
val shpProvider = new ShapeFileFeatureRDDProvider()
val rdd = shpProvider.rdd(new Configuration(), sc, params, new Query("Points"))

【iObjects for Spark】Local模式如何设置运行核数?

【解决办法】初始化Master时给上对应核数,如:

val master = "local[4]"
val conf = new SparkConf().setAppName("Demo").setMaster(master)

【iObjects.NET】如何将本地的图片添加到地图中进行展示?

【解决办法】有两种方案:
1、如果图片比较小,比如一些小图标。可以提前将图片导入到符号库,然后在代码中构建GeoPoint,构建Geostyle,style中设置MarkID为刚刚导入的符号id,对点对象设置style属性即可;
2、如果图片比较大,可以直接构建GeoPicture,然后添加图片对象到跟踪图层。如贴图:

img

【iObjects Java】【10.2.1】 请问在 Linux 系统上使用 iObjects Java 10i 版本组件导入 DWG 文件后,中文显示乱码如何解决呢?

【问题原因】 在 iObjects Java 10.2.1 之前的版本没有适配 Linux 系统导入 DWG 中文的情况,在 10.2.1 版本新增对应逻辑。
【解决办法】 有以下 2 种解决方案可参考:若条件允许,建议直接升级到 iObjects Java 11i 版本组件,该版本已完美适配 Linux 系统上的 DWG 中文数据;若已购买 10i 正式许可暂时不愿意进行大版本升级,建议升级到 iObjects Java 10.2.1 版本组件,10.2.1 组件已新增适配逻辑,由于目前已发布的组件包中缺少 adint.dat 文件,需要从对应 iDesktopX 10.2.1 产品的 bin 目录下拷贝该文件到 iObjects Java 10.2.1 组件 bin 目录下,即可正常导入 DWG 数据中的中文。

【iObjects Java】【11.0.1】目前一份二维的矢量线数据集,如何根据DEM数据获取二维线数据所对应的贴地线数据?

【解决办法】有两种解决方案:
1.针对原始的DEM数据我们可以使用Generalization3D.interpolateShape()来提取三维数据;
2.可以将DEM数据生成TIN缓存,再通过CacheProcessor3D.geometryMatchTIN()方法提取三维数据。

【iObjects .NET】设置当前地图的固定比例尺怎么设置?

【解决方案】先设置Map.IsVisibleScalesEnabled 获取或设置是否使用固定比例尺来显示地图,再设置Map.Scale 获取或设置当前地图的显示比例尺。

【iObject .net】在连接web许可时,使用BSlicense.login连接成功后,为什么执行Workspace workspace = new Workspace()还是报许可错误?

【问题原因】连接web许可,登录后还需要连接
【解决办法】BSlicense.login()登录成功后,使用BSlicense.ConnectLicenses/ConnectAllLicenses连接许可。

【UE】模型数据生成缓存加载到UE插件中颜色发生变化

【解决办法】由于生成的缓存需要带有法线信息,以保证在 UE 中正确的显示效果,所以生成缓存的桌面版本需要是 11i(2022)及之后的版本。

【iObjects Java】【10.2.1】 交通网络分析类在设置并使用接口TransportationAnalystParameter时,会报错"Handler dispatch failed; nested exception is java.lang.UnsatisfiedLinkError:com.supermap.analyst.networkanalyst.TransportationAnalystParameterNative jni_SetServiceBufferRadius(JD)V"

【问题原因】调查发现10.2.1的官方包中,API显示并没有方法SetServiceBufferRadius,11i的版本才有。
【解决办法】换11i的包不会报错,换用10.2.1的最新包也不会报错。

【iObject JAVA】【10.2.1】可视域分析如何获得红色区域指定点的高度

LinkError:com.supermap.analyst.networkanalyst.TransportationAnalystParameterNative
jni_SetServiceBufferRadius(JD)V"`

【问题原因】调查发现10.2.1的官方包中,API显示并没有方法SetServiceBufferRadius,11i的版本才有。
【解决办法】换11i的包不会报错,换用10.2.1的最新包也不会报错。

【iObject JAVA】【10.2.1】可视域分析如何获得红色区域指定点的高度

【解决办法】组件的话能够通过生成不可视体,然后能根据指定的经纬度在这个不可视体上,去获取指定位置的高度。桌面的话,只能手动获取,自动获取没有对应的功能

猜你喜欢

转载自blog.csdn.net/supermapsupport/article/details/129934005
今日推荐