Mapx文件加载到CIMMapDocument对象错误

492
3.
06-24-2021 06:43 PM
通过 匿名用户
不适用

嗨,伙计们,

我正在使用下面的代码片段加载mapx文件到CIMMapDocument对象,

在一些文档中,我得到了错误消息“值对于Int32来说太大或太小”。

我还添加了详细的stacktrace。你们能建议一下怎么解决吗?@Wolf

Prosdk版本是2.7,

string mapxJson = File.ReadAllText(mapxFilePath);bool success = await QueuedTask.Run(() => {try {cimapdocument mapDoc = cimapdocument . fromjson (mapxJson);如果(mapDoc。= null && mapDoc.LayerDefinitions.Length > 0) {this. LayerDefinitions. lengthSourceDocument = mapDoc;返回true;}}catch(异常前){System.Diagnostics.Trace.WriteLine(异常前)消息+ "\r\n" + ex.StackTrace);返回错误;}返回false;});

加是

在System.Convert。ToInt32 (Int64价值)
在System.Convert。ChangeType(对象值,类型conversionType, IFormatProvider提供程序)
在Newtonsoft.Json.Linq.Extensions。转换(T, U) (T令牌)
在ArcGIS.Core.CIM.JsonUtils。GetObjectForPropertySetOrArray(JToken, JsonDeserializationSettings设置)
在ArcGIS.Core.CIM.JsonUtils。TrySetDictionaryMember(JObject JObject, String memberName, Dictionary ' 2& dictionaryMember, JsonDeserializationSettings settings)
在ArcGIS.Core.CIM.CIMBasicFeatureTemplate。反序列化(JObject JObject, JsonDeserializationSettings settings)
在ArcGIS.Core.CIM.JsonUtils。反序列化ecimobject (JObject JObject, JsonDeserializationSettings settings)
在ArcGIS.Core.CIM.JsonUtils。DeserializeCIMObject[T](JObject JObject, JsonDeserializationSettings settings)
在ArcGIS.Core.CIM.JObjectExtensions。TryGetCIMObjectArrayMember[T](JObject JObject, String memberName, JsonDeserializationSettings settings)
在ArcGIS.Core.CIM.CIMBasicFeatureLayer。反序列化(JObject JObject, JsonDeserializationSettings settings)
在ArcGIS.Core.CIM.CIMGeoFeatureLayerBase。反序列化(JObject JObject, JsonDeserializationSettings settings)
在ArcGIS.Core.CIM.JsonUtils。反序列化ecimobject (JObject JObject, JsonDeserializationSettings settings)
在ArcGIS.Core.CIM.JsonUtils。DeserializeCIMObject[T](JObject JObject, JsonDeserializationSettings settings)
在ArcGIS.Core.CIM.JObjectExtensions。TryGetCIMObjectArrayMember[T](JObject JObject, String memberName, JsonDeserializationSettings settings)
在ArcGIS.Core.CIM.CIMMapDocument。反序列化(JObject JObject, JsonDeserializationSettings settings)
在ArcGIS.Core.CIM.JsonUtils。FromJson[T](String json, JsonDeserializationSettings设置)
在tools . ui . dockpanesetdatasourceviewmodel. <>c__DisplayClass168_0.b__0()在D:\protoolset\tools\dockpanesetdatasourceviewmodel.cs

标签(2)
0荣誉
3回复
狼
通过 金宝搏吧
金宝搏吧

如果你使用ArcGIS Pro来加载文件(从路径),这是工作吗?

0荣誉
狼
通过 金宝搏吧
金宝搏吧

我尝试了您的代码片段,它与我的示例mapx文件一起工作得很好。它可能是一个特定的层/渲染器设置,导致你得到的错误。如果你可以用“私人信息”给我发送你的mapx文件,我可以看看。

0荣誉
通过 匿名用户
不适用

@Wolf,

我试着向我的客户询问样本mapx文件,但他们不同意共享。

总之,我设法找出了根本原因。

我注意到在他们的mapx文件中,有一些纪元时间格式的13位数字的时间戳值,一些带有开始时间属性和13位数字的图层。在一些地方,如图层信息数组,它有13位数字,以及,目前我操纵这些数字,并减少为10位,以便它可以加载到mapx文档对象。

从ArcGIS pro直接加载这些mapx文件,它是工作的,没有任何问题。

最好的问候,

0荣誉