首页 / 浏览问题 / 三维GIS / 问题详情
geojson格式的问题导致使用GeoJsonDataSource加载不出面
14EXP 2023年10月19日

使用产品:超图cesium

操作系统:win10

问题详细描述:我的问题是使用new Cesium.GeoJsonDataSource.load加载行政区划,绘制的面部分出不来。 我目前推测是数据结构的问题,我的数据是

geometry:{
  coordinates:[
   [[数据1],[数据2],[数据3]]
  ]
}

正常来说其中数据1和数据2是面,数据3是孔。 我推测cesium渲染时只拿数据1当作面,其余都当作孔来渲染了。有没有什么办法可以避免这样的问题

2 个回答

您好,
这里值得注意的是:GeoJSON中有一个重要的字段 "type" , 它决定了您的 数据1 数据2 会被当成岛还是洞来进行绘制。特别注意 "Polygon","MultiPolygon"。
这里不能看到您 数据1,数据2,数据3 的内容,无法为您判断数据情况,所以给您以下建议:

1.您可参考https://zhuanlan.zhihu.com/p/539689986 或 https://datatracker.ietf.org/doc/html/rfc7946#section-3.1.6 检查您的GeoJSON数据,(同时注意坐标系

crs)。

2.若您的数据不涉及保密,您可将数据私信给我,我为您进一步查找原因。

3.避免手工编辑GeoJSON数据,使用工具生成GeoJSON。您可将原始数据导入iDesktopX桌面软件,再将数据导出为GeoJSON格式文件。

希望对您有所帮助。

315EXP 2023年10月19日
其实"正常来说"(GeoJSON的协议规则),若您的贴出的geometry类型为 "Polygon", 数据1 会被当初面,其余都会被当成孔来进行绘制。

若您的”数据2“再数据意义上是面,那么可以理解为您的数据错误。可以编写一些JavaScript的代码将 ”数据2“从数据组中提出,放入 "Polygon"的模板,再追加到GeoJSON中
315EXP 2023年10月19日
已发送您邮箱
您好,您的数据已收到,开始为您分析中。
使用webstorm右键可以运行,直接双击html好像不行
您好,经过对您数据与代码的分析,为达到您需要的显示效果,请注意以下几点(已通过电子邮件同步发送给您,请查收)

1. GeoJSON 数据错误,存在多余的中括号,请修复数据。

2. 为达到您的显示效果,请添加以下代码关闭深度检测

   viewer.scene.globe.depthTestAgainstTerrain = false;

3.同时 需要移除GeoJsonDataSource.load(json, {})方法中的 clampToGround: true

希望对您有所帮助
感谢解答!
...