# -*- coding: utf-8 -*-
import numpy as np
from pyproj import CRS, Transformer
from .pnts import Pnts
from .b3dm import B3dm
[docs]
class SrsInMissingException(Exception):
pass
[docs]
def convert_to_ecef(x, y, z, epsg_input):
inp = CRS('epsg:{0}'.format(epsg_input))
outp = CRS('epsg:4978') # ECEF
transformer = Transformer.from_crs(inp, outp)
return transformer.transform(x, y, z)
[docs]
class TileContentReader(object):
[docs]
@staticmethod
def read_file(filename):
with open(filename, 'rb') as f:
data = f.read()
arr = np.frombuffer(data, dtype=np.uint8)
return TileContentReader.read_array(arr)
return None
[docs]
@staticmethod
def read_array(array):
magic = ''.join([c.decode('UTF-8') for c in array[0:4].view('c')])
if magic == 'pnts':
return Pnts.from_array(array)
if magic == 'b3dm':
return B3dm.from_array(array)
return None