搜索
简帛阁>技术文章>cesium纽约3dtiles数据下载

cesium纽约3dtiles数据下载

cesium示例有纽约的3dtiles数据,下载官方有下载链接,但是下载后为乱码。

因此研究了下,写了个爬虫解码下载,使用办法,安装Python直接运行即可,代码如下:

class="jianboge_code">
#coding=utf-8
from urllib import request
import os
import socket
import zlib

# python版本3.7
# 设置超时
socket.setdefaulttimeout(60)

def mkdir(path):
    
    # 去除首位空格
    path=path.strip()
    # 去除尾部 \ 符号
    path=path.rstrip("\\")
 
    # 判断路径是否存在
    # 存在     True
    # 不存在   False
    isExists=os.path.exists(path)
 
    # 判断结果
    if not isExists:
        # 如果不存在则创建目录
        # 创建目录操作函数
        os.makedirs(path) 
 
        print('path create success!')
        return True
    else:
        # 如果目录存在则不创建,并提示目录已存在
        print('path already exist!')
        return False
 
# 定义要创建的目录
mkpath="F:\\python\\cesiumData\\"
# 调用函数
#mkdir(mkpath)

def callbackfunc(blocknum, blocksize, totalsize):
    '''回调函数
    @blocknum: 已经下载的数据块
    @blocksize: 数据块的大小
    @totalsize: 远程文件的大小
    '''
    # percent = 100.0 * blocknum * blocksize / totalsize
    # if percent > 100:
        # percent = 100
    print("--")

#便利URL,获取数据
def getDataByUrl():
    str1="https://beta.cesium.com/api/assets/1461/"
    str2=".b3dm?access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJiMTBjN2E3Mi03ZGZkLTRhYmItOWEzNC1iOTdjODEzMzM5MzgiLCJpZCI6NDQsImlhdCI6MTQ4NjQ4NDM0M30.B3C7Noey3ZPXcf7_FXBEYwirct23fsUecRnS12FltN8&v=1.0"
    for z in range(0,8):
        for x in range(0,2**z):
                path=str(z)+"\\"+str(x)
                temppath=mkpath+path
                mkdir(temppath)
                for y in range(0,2**z):
                    url=str(z) + '/' + str(x) + '/' + str(y)
                    str3=str1+ url + str2
                    try:
                        #urllib.urlretrieve(str3,url+'.b3dm')
                        req = request.Request(str3)
                        req.add_header('Host', 'beta.cesium.com')
                        req.add_header('Connection', 'keep-alive')
                        req.add_header('Origin', 'https://cesiumjs.org')
                        req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36')
                        req.add_header('Accept', '*/*')
                        req.add_header('Referer', 'https://cesiumjs.org/NewYork/?view=-74.02572034279622%2C40.669539917125135%2C1364.6164107825127%2C21.27406391595569%2C-21.3627766554608%2C0.0706585523215407')
                        req.add_header('Accept-Encoding', 'gzip, deflate, br')
                        req.add_header('Accept-Language', 'zh-CN,zh;q=0.9')
                        with request.urlopen(req) as f:
                            #print('Status:', f.status, f.reason)
                            #for k, v in f.getheaders():
                                #print('%s: %s' % (k, v))
                            f2 = open(url+'.b3dm', 'wb')
                            data=f.read()
                            html = zlib.decompress(data, 16+zlib.MAX_WBITS)
                            f2.write(html)
                    except Exception as e:
                        print(e)

getDataByUrl()

 

cesium示例有纽约3dtiles数据下载官方有下载链接,但是下载后为乱码。因此研究了下,写了个爬虫解码下载,使用办法,安装Python直接运行即可,代码如下:codingutf8fromur
引子接触Cesium一年有余了,期间靠胡吃海塞吸收了很多有用的、没用的知识和技术,感觉有点消化不良,今天终于有时间来梳理一下了。之前一直搞二维的,对三维技术只能算是半路出家,不敢写太深的原理性文章,以
录:https://wwwcnblogscom/onsummer/p/12799366html1可扩展的格式继承自glTF的可扩展性,3dTiles在定义上也留下了可扩展的余地。包括但不局限于:优化
转载请注明出处。全网@秋意正寒1瓦片的调度查阅tilesetjson的规范,有一个属性是refine,它有两个值:"ADD"和"REPLACE"。还有另一个属性,叫geometricError,是一个
原创。转载请规范注明出处:https://wwwcnblogscom/onsummer/p/13252896html我的git地址:githubcom/onsummer目录:https://wwwcn
转载请声明出处:全网@四季留歌目录:https://wwwcnblogscom/onsummer/p/12799366html零、本篇前言说实话,我很纠结是先介绍瓦片的二进制数据文件结构,还是先介绍这
创建跟Clock相关的主要有Animation控件和Timeline控件,通常两者会放在一起使用。在Cesium中,Viewer默认开启这两个控件,如果你想要不显示控件,可以在Viewer初始化中设置
在开发vue项目时,会很自然的将变量放到data()中,那么将Cesium的变量放到vue2的data()中,页面就会变得非常的卡,拖动地图时出现掉帧的情况,这是因为vue会对data里面的变量进行数
packagejson中(1)npmrunbuildSource/Cesiumjs仅是把Cesium源码中一千两百多个js文件做了一下引用,并不会进行打包所以这个Cesiumjs也就相当于一个索引。使
/1FlytoapositionwithatopdownviewviewercameraflyTo({destination:CesiumCartesian3fromDegrees(11716,32