加载geojson面数据_three.js加载geojson

本文介绍了如何使用three.js加载GeoJSON数据来绘制地图,特别是中国的省级行政区。GeoJSON是一种基于JSON的地理空间信息数据交换格式,支持多种几何类型。在three.js中,通过THREE.Shape方法结合顶点数据构建面,并利用拉伸成体技术形成三维模型。文中还展示了数据结构及加载地图的具体步骤。
摘要由CSDN通过智能技术生成

three.js可以加载geojson来绘制面,再根据绘制的面拉伸成体。

效果图:

8f818968796fcb957b96495f5f1643d3.png

预览地址:

vue3+TS​123.56.85.24

vue3项目中集成three.js可以看这篇文章:

清风皓月:three.js实践指南​zhuanlan.zhihu.com

一.Geojson是什么?

GeoJSON是一种对各种地理数据结构进行编码的格式,基于Javascript对象表示法(JavaScript Object Notation, 简称JSON)的地理空间信息数据交换格式。GeoJSON对象可以表示几何、特征或者特征集合。GeoJSON支持下面几何类型:点、线、面、多点、多线、多面和几何集合。GeoJSON里的特征包含一个几何对象和其他属性,特征集合表示一系列特征(百度百科)

  • Points(点)
 {
    
         "type": "Point",
         "coordinates": [100.0, 0.0]
     }
  • LineStrings(线)
  {
    
         "type": "LineString",
         "coordinates": [
             [100.0, 0.0],
             [101.0, 1.0]
         ]
     }
  • Polygons(多边形,首尾两点重合)
     {
    
         "type": "Polygon",
         "coordinates": [
             [
                 [100.0, 0.0],
                 [101.0, 0.0],
                 [101.0, 1.0],
                 [100.0, 1.0],
                 [100.0, 0.0]
             ]
         ]
     }
  • MultiPoints(多点)
     {
    
         "type
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,针对您的问题,我可以为您提供以下的解答: 首先,您可以使用 Three.js 中的 `THREE.GeoJsonLoader` 加载您的 `geojson` 数据,并将其转换成 `THREE.Geometry` 对象。然后,您可以将这个 `Geometry` 对象传递给 `THREE.ExtrudeGeometry` 函数来实现建筑物的拉高。 接下来,您可以将 `ExtrudeGeometry` 对象传递给 `THREE.MeshBasicMaterial`,并设置其 `transparent` 属性为 `true`,以及 `opacity` 属性为 `0`,从而创建一个白色的膜。最后,您可以将这个白色的膜与您的建筑物 `Mesh` 对象一起添加到场景中,以实现建筑物的拉高成白膜的效果。 下是一个简单的代码示例,演示了如何加载 `geojson` 数据并将其转换成 `ExtrudeGeometry` 对象,并将其与一个白色的膜一起添加到场景中: ```javascript // 创建场景 var scene = new THREE.Scene(); // 创建相机 var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000); camera.position.z = 5; // 创建渲染器 var renderer = new THREE.WebGLRenderer(); renderer.setSize(window.innerWidth, window.innerHeight); document.body.appendChild(renderer.domElement); // 加载 geojson 数据 var loader = new THREE.GeoJsonLoader(); loader.load('data.geojson', function (geometry) { // 创建建筑物 Mesh 对象 var material = new THREE.MeshBasicMaterial({color: 0x00ff00}); var building = new THREE.Mesh(geometry, material); // 将建筑物拉高成白膜 var extrudeSettings = {amount: 50, bevelEnabled: false}; var extrudeGeometry = new THREE.ExtrudeGeometry(geometry, extrudeSettings); var whiteMaterial = new THREE.MeshBasicMaterial({color: 0xffffff, transparent: true, opacity: 0}); var whiteMesh = new THREE.Mesh(extrudeGeometry, whiteMaterial); // 将建筑物 Mesh 对象和白色膜 Mesh 对象一起添加到场景中 scene.add(building); scene.add(whiteMesh); }); // 渲染场景 function animate() { requestAnimationFrame(animate); renderer.render(scene, camera); } animate(); ``` 希望这个解答能够对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值